Hey all...
I'm unpacking a record, changing a value, and then saving
it again, but I end up with the record changed, plus a duplicate
in my database. Why would this be?
In a nutshell, here is what I do...(error checking removed for brevity)
myRecord = DmGetRecord(dmReftoSync, i);
PackedOnOrder *packedOnOrder = (PackedOnOrder *)
MemHandleLock(myRecord);
UnpackOnOrder(&onOrderFound, packedOnOrder);
*(onOrder).orderQty += *(onOrderFound).orderQty;
FrmCustomAlert(MyAlert,"ARRIVED HERE SAFELY
POST-ADDITION",NULL,NULL);
PackOnOrder(&onOrder,myRecord);
FrmCustomAlert(MyAlert,"ARRIVED HERE",NULL,NULL);
MemHandleUnlock(myRecord);
DmReleaseRecord(dmReftoSync, i, true);
Here is my Packing function;
void PackOnOrder(OnOrder *onOrder, MemHandle onOrderDBEntry)
{
// figure out necessary size
UInt16 length = 0;
Char *s;
UInt16 offset = 0;
length = (UInt16) (sizeof(onOrder->orderQty) + StrLen(onOrder->key) +
StrLen(onOrder->desc) + 2); // 2 for string terminators
// resize the MemHandle
if (MemHandleResize(onOrderDBEntry, length) == 0) {
// copy the fields
s = (Char *) MemHandleLock(onOrderDBEntry);
offset = 0;
DmWrite(s, offset, &onOrder->orderQty,
sizeof(onOrder->orderQty));
offset += sizeof(onOrder->orderQty);
DmStrCopy(s, offset, onOrder->key);
offset += (UInt16) StrLen(onOrder->key) + 1;
DmStrCopy(s, offset, onOrder->desc);
MemHandleUnlock(onOrderDBEntry);
}
}
Nole Mailey
Data Conversion Specialist
ProfitMaster Canada
1.800.340.4492
www.pmcanada.com
[EMAIL PROTECTED]
--
For information on using the Palm Developer Forums, or to unsubscribe, please see
http://www.palmos.com/dev/support/forums/