Promotic
WikipediaLinkedInYoutubeTwitterFacebook

DbBeginTrans - metoda objektu PmAdo

Popis:
Začíná novou transakci nad připojenou databázi.
Syntaxe:
DbBeginTrans([sParams As String]) As Object
Volání:
oDb.DbBeginTrans(sParams)
Parametry:
sParams[nepovinné] (String) Dodatečné parametry metody DbBeginTrans. Údaje jsou zde ve formátu PmNamedValues, například "return:map;".
"return:xxx;" (nepovinné) - Určuje, zda má vrácená hodnota metody být mapa s více vrácenými hodnotami současně (nový způsob) nebo jedna hodnota (starý způsob). Pokud se neuvede, potom se jedná o starý způsob.
map - Vrací mapu (PmMap), která obsahuje více vrácených hodnot současně (nový způsob) (např. Result, AffectedRows, ErrorCode, ErrorText).
Vrácená hodnota:
Nový způsob: Vrací objekt PmMap s hodnotami v následujících položkách:
- "Result": prázdná hodnota (metoda nic nevrací)
- "ErrorCode": číselný kód případné chyby, kde hodnota 0 znamená úspěšné vykonání metody bez chyby
- "ErrorText": text případné chyby
 
Starý způsob: Vrací prázdná hodnota (metoda nic nevrací).
Poznámka:
Metodou DbBeginTrans začíná nová transakce nad připojenou databází. Všechny následné operace nad touto databází budou pak jako jeden celek (transakce) najednou potvrzeny metodou DbCommitTrans nebo zrušeny metodou DbRollbackTrans. Transakce musí podporovat připojená databáze a provider.
Příklad:
Přidání nové věty do tabulek table1 a table2 za pomocí transakce. Pokud dojde k selhání přidávání do některé z tabulek, pak se zruší všechny operace od počátku transakce. To znamená, že se přidají buď obě věty nebo žádná. Detekovat selhání operace v objektu PmAdo lze pomocí vlastnosti LastErr.
Dim oDb, nLastErr1, nLastErr2
Set oDb = pMe.Pm("/TestAdoDb")
If oDb.DbBeginTrans("return:map;").ErrorCode = 0 Then
  nLastErr1 = oDb.DbExecute("", "INSERT table1 (name, value) VALUES ('pi', 3.14)", "return:map;").ErrorCode
  nLastErr2 = oDb.DbExecute("", "INSERT table2 (name, value) VALUES ('pi', 3.14)", "return:map;").ErrorCode
  If nLastErr1 = 0 And nLastErr2 = 0 Then
    oDb.DbCommitTrans
  Else
    Pm.Debug oDb.LastTextErr
    oDb.DbRollbackTrans
End If
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice