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/

Reply via email to