Hello (Palm TX/nvfs)
am trying, unsuccessfuly, to clear the dirty bit on new records
(records that dont need syncing, etc.), have tried a few methods, please see
following code :
// ••••••••••••••••••••••••••
// RecordAdd
Int8
RecordAdd(Global *GLB)
{
// text from fields
ASCII nameF[20];
ASCII *ptr1=FldGetTextPtr(GLB->F1P);
ASCII *ptr2=FldGetTextPtr(GLB->F2P);
MemSet(nameF, 20, NULL);
MemMove(nameF, ptr1, StrLen(ptr1));
// record
Err err;
MemHandle newH;
UINT16 index=dmMaxRecordIndex;
UINT32 size=20+StrLen(ptr2)+1;
if (!(newH=DmNewRecord(GLB->DBRF, &index, size)))
{
txtDialogue(0x00, 75, "DmNewRecord err", 0);
return 0x10;
}
ASCII *recPtr=(ASCII*)MemHandleLock(newH);
if (DmWrite(recPtr, 0, nameF, 20))
{
txtDialogue(0x00, 75, "DmWrite name err", 0);
err=0x30;
goto CLEANUP;
}
if (DmWrite(recPtr, 20, ptr2, size-20))
{
txtDialogue(0x00, 75, "DmWrite description err", 0);
err=0x40;
goto CLEANUP;
}
// THIS IS WHERE THE dmRecAttrDirty bit IS CLEARED,
// PROCESSES WITH NO ERRORS, BUT WHEN THE DATABASE IS CHECKED
// USING A RESOURCE EDITOR THE 'DIRTY' FLAG IS SET?
// HAVE TRIED PUTTING THIS CODE BEFORE DATABASE IS CLOSED DURING
// StopApp() AND ALSO SETTING attr=0, NEITHER METHOD WORKS.
//clear dmRecAttrDirty ???
UINT16 attr;
if (DmRecordInfo(GLB->DBRF, index, &attr, 0, 0))
{
txtDialogue(0x00, 75, "DmRecordInfo err", 0);
return 0x40;
}
attr-=dmRecAttrDirty;
if (DmSetRecordInfo(GLB->DBRF, index, &attr, 0))
{
txtDialogue(0x00, 75, "DmSetRecordInfo err", 0);
return 0x50;
}
CLEANUP:
MemHandleUnlock(newH);
if (DmReleaseRecord(GLB->DBRF, index, 0))
{
txtDialogue(0x00, 75, "DmReleaseRecord err", 0);
return 0x20;
}
// sort
if ( DmInsertionSort(GLB->DBRF,
(DmComparF*)SortComparF, 0) )
txtDialogue(0x00, 75, "DmInsertionSort err", 0);
// THE FOLLOWING IS AN ATTEMPT TO SEND A sysNotifySyncFinishEvent
// TO TRY AND CLEAR THE dmRecAttrDirty BIT, BUT THE DEVICE RESETS.
/***** clear dmRecAttrDirty ???
SysNotifyParamType notifyParams;
notifyParams.notifyType = sysNotifySyncFinishEvent;
notifyParams.broadcaster = 'sync';
// sysNotifyBroadcasterCode DeskCrID 'sync'
notifyParams.notifyDetailsP = NULL;
notifyParams.userDataP = NULL;
notifyParams.handled = false;
if ( SysNotifyBroadcastDeferred(¬ifyParams, 0) )
{
txtDialogue(0x00, 75, "SysNotifyBroadcast err", 0);
//return 0x60;
}
******/
return errNone;
}
Any help appreciated, many thanks
regards
Darren
--
For information on using the ACCESS Developer Forums, or to unsubscribe, please
see http://www.access-company.com/developers/forums/