Promotic
WikipediaLinkedInYoutubeTwitterFacebook

AddNew - metoda objektu AdoRecordset

Popis:
Určuje začátek editačního režimu přidání nového záznamu do objektu AdoRecordset. Obsah přidaného záznamu je buď prázdný nebo je naplněn hodnotami parametrů aFields a aValues. Nově přidaný záznam se automaticky stává aktuálním záznamem. Editační režim je ukončen a potvrzen metodou Update nebo zrušen metodou CancelUpdate.
Syntaxe:
AddNew([aFields As Variant], [aValues As Variant])
Volání:
oRs.AddNew aFields, aValues
Parametry:
aFields[nepovinné] (Variant) Samotný název, pole názvů sloupců nebo pole pozic sloupců záznamu.
aValues[nepovinné] (Variant) Samotná hodnota nebo pole hodnot pro sloupce v novém záznamu. Pokud aFields je pole, pak aValues musí být také pole se stejným počtem členů, v jiném případě nastane chyba. Pořadí jmen sloupců a pořadí hodnot sloupců v obou polích si musí odpovídat.
Poznámka:

Pokud má tabulka definovaný index nebo sloupec, který zakazuje přidat větu s hodnotou <Null>, pak je nutno větu inicializovat již hodnotami parametrů aFields a aValues.

Po volání této metody lze nastavovat hodnoty nově vytvořeného záznamu například pomocí Fields a Value (např. oRs.Fields("test1").Value = 123).

 
Pomocí volitelných parametrů aFields a aValues lze metodě AddNew (ale také metodě Update) dodat všechny změněné hodnoty. Existují tedy 3 způsoby, jak nastavit hodnoty nového záznamu:
1) Přidání věty metodou AddNew s dodanými volitelnými parametry aFields a aValues s inicializačními hodnotami položek záznamu, a následné zplatnění metodou Update bez parametrů. Viz varianta 1) Příklad
2) Přidání věty metodou AddNew bez parametrů, následuje změna jednotlivých hodnot opakovaným přístupem do Value a následné zplatnění metodou Update bez parametrů. Viz varianta 2) Příklad
3) Přidání věty metodou AddNew bez parametrů, a následné zplatnění metodou Update s dodanými volitelnými parametry aFields a aValues. Viz varianta 3) Příklad
 
Upozornění:V editačním režimu dochází k zamknutí objektu AdoRecordset tak, že nelze volat metody pro přesun pozice aktuálního záznamu, atd., dokud se režim neukončí voláním metody Update nebo CancelUpdate. Metoda Update nevrací žádnou hodnotu a může se stát, že selže (např. pokus o zápis věty s duplicitní hodnotou klíče nebo s neplatnou hodnotou). Při selhání metody Update zůstává objekt AdoRecordset i nadále zamknutý a nelze s ním běžně pracovat. Proto je nutno výsledek volání metody Update otestovat pomocí vlastnosti Pm_LastErr objektu Objekt Wrapper (který v PROMOTIC automaticky obaluje každý objekt AdoRecordset). V případě chyby pak buď operaci provést znovu se správnými hodnotami nebo zrušit editační režim metodou CancelUpdate. Viz Příklad.
Příklad:
Přidání nové věty do tabulky ("table1"), pomocí zapamatovaného objektu AdoRecordset ("table1"), nad objektem PmAdo ("/TestAdoDb"), který je už připojený k databázi (viz DbOpen), pomocí SQL dotazu ("SELECT * FROM table1").
 
1) Příklad
VBScriptVyber a zkopíruj do schránky

Dim oDb, oRs
Set oDb = pMe.Pm("/TestAdoDb")
Set oRs = oDb.RsOpen("table1", "SELECT * FROM table1", "cursor:static;lock:optimistic;")
If Not oRs Is Nothing Then
  oRs.AddNew Array("name", "value"), Array("pi", "3.14")
  oDb.Update
  If oDb.Pm_LastErr <> 0 Then
    oDb.CancelUpdate
  End If
End If
 
2) Příklad
VBScriptVyber a zkopíruj do schránky

Dim oDb, oRs
Set oDb = pMe.Pm("/TestAdoDb")
Set oRs = oDb.RsOpen("table1", "SELECT * FROM table1", "cursor:static;lock:optimistic;")
If Not oRs Is Nothing Then
  oRs.AddNew
  oDb.Fields("name") = "pi"
  oDb.Fields("value") = 3.14
  oDb.Update
  If oDb.Pm_LastErr <> 0 Then
    oDb.CancelUpdate
  End If
End If
 
3) Příklad
VBScriptVyber a zkopíruj do schránky

Dim oDb, oRs
Set oDb = pMe.Pm("/TestAdoDb")
Set oRs = oDb.RsOpen("table1", "SELECT * FROM table1", "cursor:static;lock:optimistic;")
If Not oRs Is Nothing Then
  oRs.AddNew
  oDb.Update Array("name", "value"), Array("pi", "3.14")
  If oDb.Pm_LastErr <> 0 Then
    oDb.CancelUpdate
  End If
End If
 
4) Existuje také možnost přidat větu bez použití objektu AdoRecordset, přímo voláním SQL příkazu INSERT pomocí metody DbExecute.
VBScriptVyber a zkopíruj do schránky

Dim oDb
Set oDb = pMe.Pm("/TestAdoDb")

oDb.DbExecute "", "INSERT table1 (name, value) VALUES ('pi', 3.14)", ""
If oDb.LastErr <> 0 Then
  '...
End If
 
Upozornění:Varianty 2) a 3) se používají i pro editaci existující věty. Pouze se vynechá vlastní přidání nové prázdného záznamu metodou AddNew a dál se pokračuje už shodně změnou hodnot aktuálního záznamu s potvrzením změny Update.
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice