Forums before death by AOL, social media and spammers... "We can't have nice things"
|    comp.databases.paradox    |    To crash or not to crash, asks Borland    |    9,834 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 9,571 of 9,834    |
|    Jim Hargan to Kenneth    |
|    Re: dataInsertRecord not Insertin'...?    |
|    09 Jan 09 14:27:49    |
   
   From: contact@harganonline.com   
      
   Inline.   
      
   On Fri, 09 Jan 2009 10:23:19 -0500, Kenneth wrote:   
   > method action(var eventInfo ActionEvent)   
   > var   
   > tc2 tCursor   
   > endVar   
   >   
   > if eventInfo.id()=dataInsertRecord then   
   > DoDefault   
   The doDefault inserts the record /if/ the form is in edit mode.   
   Otherwise, it fails, and no record has been added.   
      
   > if not tc2.open(":MONEY:EntryNum.DB") then   
   > errorShow()   
   > endIf   
   At this point tc2 is pointing to the table, but it is unclear   
   to me which record it is pointing to. I expect it points to the first   
   record.   
      
   > EntryNumber = tc2.entryNum   
   This should be the entryNum of whatever record is the first one in   
   the table.   
      
   > tc2.edit()   
   This puts the *tCursor* into edit mode.   
      
   > tc2.entryNum = EntryNumber + 1   
   This alters the first record's entryNum by incrementing it.   
   Note that you are changing its primary key!   
      
   > edit()   
   This puts the *form* into edit mode.   
      
   > entry = tc2.entryNum   
   At this point entry -- which I assume is a uiObject on the form that   
   corresponds to a field in the table -- equals the first record's   
   entryNum, which you incremented three steps ago.   
      
   > tc2.endEdit()   
   This posts the change you made to the first record via the tCursor.   
   The change you made to the record shown by the form, which may or may   
   not be a different record, has not yet been posted.   
      
   > tc2.close()   
   >   
   > endIf   
   > endMethod   
      
   OK, lemme make a suggestion.   
   First, I am assuming that entryNum is the table's primary key. This means   
   that, when the tCursor opens on the table and points to the first record,   
   it will be pointing to the record with the /lowest/ entryNum, and that the   
   last record will be the one with the /highest/ entryNum.   
      
   var   
    flg logical   
    tc2 tCursor   
    li longint   
   endVar   
      
   flg = FALSE   
   if not isEdit() then   
    flg = TRUE   
    edit()   
   endif ;This lets us restore the user's edit setting at the end   
   Now the form is in edit mode, and the insert can work.   
      
   if eventInfo.id()=dataInsertRecord then   
      
    ;The tCursor exists merely to get the highest value,   
    ;so we do the tCursor thing /before/ creating the new record   
    if not tc2.open(":MONEY:EntryNum.DB") then   
    msgStop("Error","New record not created because the tCursor failed")   
    return ;execution stops - no new record added   
    endIf   
    tc2.end()   
    ;tc2 should now be pointing to the record with the highest entryNum   
    li = tc2.entryNum   
    tc.2.close()   
      
    ;We are now back to the form, and using uiObjects   
    DoDefault ;creates the new record   
    li = li + 1   
    entry.value = li   
    postRecord() ;pushes the new record into the table   
   endif   
      
   if flg then ;restore the user's edit setting   
    endedit()   
   endif   
      
   Again, this is untested. The gist of it should be ok. I hope.   
      
   --   
   Jim Hargan   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca