6.26 infraDBUpdate – Updaten eines Datensatzes
lRc = Object.infraDBUpdate()
IPS: infraDBUpdate( lRc)
Argumente
Keine
Rückgabewerte
lRc == 0 Kein Fehler
lRc <> 0 infra-Kernsystemfehler
Beschreibung
Diese Funktion ändert einen Datensatz in einer Tabelle.
Der Update erfolgt in folgenden Schritten
  • Lesen und sperren des Datensatzes mit infraDBSelect und lLock = 1
  • Anpassen der Werte des Puffers mit den infraDBS-Funktionen Puffer in die Tabelle zurückschreiben
Die Sperre des Datensatzes hebt infraDBUpdate auf.
Funktionsart
infraDBFunktion
Basic-Skript
Java-Skript
IPSFunktion
Beispiel Basic-Skript
Dim lRc
Dim strValue
Dim strKey
       MsgBox strMsg
       lRc = oIDB.infraDBSelect( 6, 1, "0110012", 0 )
       if( lRc = 32 ) Then
               MsgBox "Tabelle Teile (6) ist leer "
               Exit Sub
       End IF
       while( Trim( oIDB.infraDBQRF(3) ) <= "0110032" )
               strValue = oIDB.infraDBQRF(3)
               MsgBox " Update von: " & strValue
               strKey = oIDB.infraDBQRF(3)
              lRc = oIDB.infraDBSelect( 6, 1, strKey, 1 ) 'sperre Satz
               If( lRc = 0 ) Then
                      oIDB.infraDBSRF 98, strText
                      lRc = oIDB.infraDBUpdate()
                      If( lRc ) Then
                              MsgBox oIDB.infraDBGetSystemMessage( lRc )
                              End If
                   Else
                      MsgBox( oIDB.infraDBGetSystemMessage( lRc ) )
                 End If
               lRc = oIDB.infraDBFetchNext
               if( lRc ) Then
                   break
               End If
Wend
Beispiel Java-Skript
try{
var strTitle= "Beispiel Benutzung infraDBcom";
var strUpdTxt= "Angepasst durch Javascript";
var strMsg     = "Diese Funktion schreibt \"" + strUpdTxt +
               "\" ins Benutzerfeld 8 der Tabelle Teile (6, 98).";
var strMsg_2= "Diese Funktion schrieb \"" + strUpdTxt +
                      "\"\nins Benutzerfeld 8 der Tabelle Teile (6, 98):\n";
var WSHShell = WScript.CreateObject("WScript.Shell");
var intDoIt;
intDoIt =  WSHShell.Popup(strMsg,0, strTitle,  1 + 64 );
if (intDoIt == 2 )  return;
var i = new Number( 0 );
var lRc = oIDB.infraDBSelect( 6, 1, "0110012", 0 );
while( (lRc == 0 || lRc == 10 ) && i++ < 10 ){
       var strValue = oIDB.infraDBQRF(3);
       lRc = oIDB.infraDBSelect(6,1,oIDB.infraDBQRF(3),1); //sperre Satz
       if( lRc == 0 ){
               oIDB.infraDBSRF( 98, strUpdTxt );
               lRc = oIDB.infraDBUpdate();
               if( lRc )
                      WScript.Echo( oIDB.infraDBGetSystemMessage( lRc )  +                                           oIDB.infraDBQRF(3) );
                      else
                      strMsg_2 +=  "\nUpdate Teil:  "+oIDB.infraDBQRF(3);
               }
       else
               WScript.Echo( oIDB.infraDBGetSystemMessage( lRc ) );
       lRc = oIDB.infraDBFetchNext();
       if( lRc ) break;
       }
WScript.Echo( strMsg_2 );
}//try
catch( e ){
       WScript.Echo( "Fehler bei der Ausführung infraDBUpdate im Objekt "        + oIDB.GetObjectName()  + "\n" + e  );
}
Beispiel IPS
       String( strKey, strErr );
       Long( lRc  );
       Double( di );
       AssignDouble( di, 34.32 );
       infraDBSelect( 6, 1, "", 0, lRc );
       if( lRc == 0 )
               Jump(  LoopUpdateTest );
       if( lRc == 10 )
               Jump(  LoopUpdateTest );
       Jump(  DoneUpdateTest );
       LoopUpdateTest:
               IncDouble( di, 2.3 );
               infraDBQRF(3, strKey );
               infraDBSelect( 6, 1, strKey, 1, lRc ); //sperre Satz
               if( lRc == 0 )
                      {
                      infraDBSRFmtD( 31, di, "N9.3", "" );
                      infraDBUpdate( lRc );
                      if( lRc != 0 )
                              {
                              infraDBGetSystemMessage( lRc, strErr );
                              IpsGui_AppendProt( strErr, 0 );
                              }
                      }
               infraDBFetchNext( lRc );
               if( lRc == 0 )
                       Jump(LoopUpdateTest);
               }
       DoneUpdateTest: