infra:NET User
 
×
6.11 infraDBPrepUpdateInsert – Transaktionsrahmen für Update/Insert
lRc = Object.infraDBPrepUpdateInsert(lTable, lPath, strKeys, )
IPS: infraDBPrepUpdateInsert(lTable, lPath, strRecord, strMode, lRc)
Argumente
lTable Nummer der Tabelle, die angepasst werden soll
lPath Nummer des IndexPfades, über den auf den Satz zugegriffen werden soll.
strKeys Schlüssel des Satzes. Weitere Einzelheiten sind auch bei der Funktion infraDBSelect beschrieben.
strMode Angabe, ob Satz eingefügt (insert) oder aktualisiert (update) wird.
Rückgabewerte
lRc == 0 Kein Fehler
lRc <> 0 infra-Kernsystemfehler
Beschreibung
Diese Funktion setzt den Beginn des Transaktionsrahmens, der mit infraDBRunUpdateInsert beendet wird.
Als erstes prüft die Funktion, ob der Satz mit den Schlüsseln in strKey verfügbar ist. In diesem Fall sperrt das Objekt den Satz und wechselt in den Zustand „update“. Eine Kopie der Daten des Satzes befinden sich jetzt im Puffer und können mit den Set–Funktionen verändert und mit infraDBRunUpdateInsert in die Datenbank zurückgeschrieben werden. Der Satz bleibt bis zum Aufruf von infraDBRunUpdateInsert gesperrt.
Ist der Satz mit dem Schlüssel in strKey nicht in der Tabelle, wechselt das Objekt in den Zustand „insert“ und fügt den Satz beim Aufruf von infraDBRunUpdateInsert in die Tabelle ein.
Funktionsart
infraDBFunktion
Basic-Skript
Java-Skript
IPSFunktion 
Beispiel Basic-Skript
Dim lRc
lRc = oIDB.infraDBPrepUpdateInsert( 131, 1, "ProLS;PA01;0;LeitProLS" )
if( lRc ) Then
               MsgBox oIDB.infraDBGetSystemMessage( lRc )
               Exit Sub
       End If
oIDB.infraDBSRF 1, "PA"
oIDB.infraDBSRF 6, "TERM_KOZ"
oIDB.infraDBSRF 7, "MG"
oIDB.infraDBSRF 8, "11001"
oIDB.infraDBSRF 10, "PG"
oIDB.infraDBSRF 11, "100"
oIDB.infraDBSRF 12, "4.00"
lRc = oIDB.infraDBRunUpdateInsert
if( lRc ) Then
       MsgBox oIDB.infraDBGetSystemMessage( lRc )  & oIDB.infraDBQR
End If
Beispiel IPS
infraDBFmtValue( 134, 1, strBerichtID, "N8", "", strBerichtID );         
infraDBPrepUpdateInsert( 134, 1, strBerichtID, strMode, lRc );
if( lRc != 0 ) {
       AssignLong( lErrorOccured, 1 );
       IpsGui_GuiMsgBoxErr( lRc );
       Jump( l_XPath_Loop_End );}          
if( lRc == 0 ) {
       infraDBSRFmt( 1, strBerichtID, "N8", "" );
       XmlGetValueByXPath( "//main_ServiceBericht/BerichtIDImport",                                             strText );
       infraDBSRFmt( 2, strText, "N8", "" );
       XmlGetValueByXPath( "//main_ServiceBericht/UserID", strUserID );
       infraDBSRF( 3, strUserID );
       XmlGetValueByXPath( "//main_ServiceBericht/Status", strStatus );
       infraDBSRF( 4, strStatus );
       //Angaben zum Geraet
       XmlGetValueByXPath( "//main_Geraet/GER_ID", strText );
       infraDBSRFmt( 5, strText, "N8", "" );
       XmlGetValueByXPath( "//main_Geraet/TypeBezeichnung", strText );
       infraDBSRF( 6, strText );
       XmlGetValueByXPath( "//main_Geraet/Produktegruppe", strText );
       infraDBSRF( 7, strText );
       XmlGetValueByXPath( "//main_Geraet/Erstauslieferung", strText );
       infraDBSRFmt( 8, strText, "UTCd", "" );
       XmlGetValueByXPath( "//main_Geraet/Garantieablauf", strText );
       infraDBSRFmt( 9, strText, "UTCd", "" );
       XmlGetValueByXPath( "//main_Geraet/WSVertrag", strText );
       infraDBSRFmt( 10, strText, "N8", "" );
       XmlGetValueByXPath( "//main_Geraet/LetzterSB", strText );
       infraDBSRFmt( 11, strText, "N8", "" );
       XmlGetValueByXPath( "//main_Geraet/DatumLetzterSB", strText );
       infraDBSRFmt( 12, strText, "UTCd", "" );
       XmlGetValueByXPath( "//main_Geraet/Stundensatz", strText );
       infraDBSRFmt( 13, strText, "N6.2", "" );
       XmlGetValueByXPath( "//main_Geraet/Anfahrtssatz", strText );
       infraDBSRFmt( 14, strText, "N6.2", "" );
       infraDBRunUpdateInsert( lRc );
       if( lRc != 0 ) {
               AssignLong( lErrorOccured, 1 );
               AssignString( strMsg, strMode );
               AppendString( strMsg, ":  FEHLER Servicebericht BerichtID=" );
               AppendString( strMsg, strBerichtID );
               IpsGui_AppendProt( strMsg, lRc );
               Jump( l_XPath_Loop_End );
               }
       }