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 );
}
}
|