>>>Does anyone know if GETNEXTMODIFIED() detects the addition of (maybe several) records to a buffered table, obviously, before TableUpdate() is issued?
>>>
>>>The new records will have had fields filled in before saving.
>>>
>>>'ppreciate it
>>>
>>>Terry
>>
>>Hey Terry,
>>It's all about GetNextModified() :)
>>ie:
>>
>>lnNext = GetNextModified(0)
>>do while m.lnNext # 0
>> go m.lnNext
>> if m.lnNext < 0
>>*...
>> else
>>*...
>> endif
>> lnNext = GetNextModified(m.lnNext)
>>enddo
>>
Cetin
>
>Thank you, Cetin & Boris
>
>Thing is, I don't want to manufacture the save code. I've already got a class save method snippet from way, way back - half inherited and half altered by me, as follows:
>
>
>CASE Not lInDBC AND (ATC("2", GetFldState(-1)) <> 0 OR ATC("3", GetFldState(-1)) <> 0)
> * Field was edited - in Free Table
> * Since free tables are not supported by transactions,
> * we must process record by record
> lnModRecord = GetNextMod(0)
> DO WHILE lnModRecord <> 0
> GO lnModRecord
> llSuccess = RLOCK()
> IF Not llSuccess
> lcErrorMessage = "Record in use by another user"
> UNLOCK ALL
> EXIT
> EndIf
> IF Not llHadMessage
> * See if record(s) modified by another user
> FOR lnFldCnt = 1 TO FCOUNT()
> IF TYPE(FIELD(lnFldCnt)) = "G"
> LOOP
> ENDIF
> IF OLDVAL(FIELD(lnFldCnt)) <> CURVAL(FIELD(lnFldCnt))
> llHadMessage = .T.
> IF sysConfirm("The record has been changed by another user while you've been editing it. " + ;
> "Do you want to overwrite the other user's changes with your own?")
> llOverwrite = .T.
> ELSE
> llSuccess = .F.
> UNLOCK ALL
> EXIT
> ENDIF
> ENDIF OLDVAL()
> ENDFOR
> ENDIF Not llHadMessage
> lnModRecord = GetNextMod(lnModRecord)
> ENDDO
>
>
>
>but afaik it's only been used to save one new rec at at time, as in a standard form new - input data - save scenario. In this case I create one record then maybe 3-4 "sister" recs and need to save them all together, or none at all, and it can't be done in a transaction, as theyt're free 2.6 tables. I feel that the above code would do just that. What do you think?
This code didn't look like all-none to me. And fox2x tables can be included in a transaction. For a transaction all you need is a dbc.
Cetin