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, potom aValues musí být také pole se stejným počtem členů, jinak 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, jenž zakazuje přidat větu s hodnotou <Null>, potom 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").
 
Společná část:
Dim oDb, oRs
Set oDb = pMe.Pm("/TestAdoDb")
Set oRs = oDb.RsOpen("table1", "SELECT * FROM table1", "cursor:static;lock:optimistic;")
 
1)
  oRs.AddNew Array("name", "value"), Array("pi", 3.14)
  oRs.Update
  If oRs.Pm_LastErr <> 0 Then
    oRs.CancelUpdate
  End If
End If
 
2)
  oRs.AddNew
  oRs.Fields("name") = "pi"
  oRs.Fields("value") = 3.14
  oRs.Update
  If oRs.Pm_LastErr <> 0 Then
    oRs.CancelUpdate
  End If
End If
 
3)
  oRs.AddNew
  oRs.Update Array("name", "value"), Array("pi", 3.14)
  If oRs.Pm_LastErr <> 0 Then
    oRs.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.
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