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:
Empty AddNew([Variant aFields], [Variant aValues])
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ě vznikne 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 inicializovat větu 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 otestovat výsledek volání metody Update pomocí vlastnosti Pm_LastErr objektu Objekt Wrapper (který v systému 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.
Viz také:
Příklad:
Přidá novou větu do tabulky ("table1"), pomocí zapamatovaného objektu AdoRecordset ("table1"), v objektu PmaAdo ("/TestAdoDb"), který je už připojený k databázi (viz DbOpen), pomocí SQL dotazu ("SELECT * FROM table1").
 
1) Příklad
JavaScriptVBScriptVyber a zkopíruj do schránky

var oDb = pMe.Pm("/TestAdoDb");
var oRs = oDb.RsOpen("table1", "SELECT * FROM table1", "cursor:static;lock:optimistic;");
var aColsName = Pm.CreatePmArray().Array1("name", "value");
var aValues = Pm.CreatePmArray().Array1("pi", 3.14);
if (oRs)
{
oRs.AddNew(aColsName, aValues);
oRs.Update();
if (oRs.Pm_LastErr != 0)
oRs.CancelUpdate();
}
 
2) Příklad
JavaScriptVBScriptVyber a zkopíruj do schránky

var oDb = pMe.Pm("/TestAdoDb");
var oRs = oDb.RsOpen("table1", "SELECT * FROM table1", "cursor:static;lock:optimistic;");
if (oRs)
{
oRs.AddNew();
oRs.Fields.Item("name").Value = "pi";
oRs.Fields.Item("value").Value = 3.14;
oRs.Update();
if (oRs.Pm_LastErr != 0)
oRs.CancelUpdate();
}
 
3) Příklad
JavaScriptVBScriptVyber a zkopíruj do schránky

var oDb = pMe.Pm("/TestAdoDb");
var oRs = oDb.RsOpen("table1", "SELECT * FROM table1", "cursor:static;lock:optimistic;");
var aColsName = Pm.CreatePmArray().Array1("name", "value");
var aValues = Pm.CreatePmArray().Array1("pi", 3.14);
if (oRs)
{
oRs.AddNew();
oRs.Update(aColsName, aValues);
if (oRs.Pm_LastErr != 0)
oRs.CancelUpdate();
}
 
4) Existuje také možnost přidat větu bez použití objektu AdoRecordset, přímo voláním SQL příkazu INSERT metodou DbExecute.
JavaScriptVBScriptVyber a zkopíruj do schránky

var oDb = pMe.Pm("/TestAdoDb");

oDb.DbExecute("", "INSERT table1 (name, value) VALUES ('pi', 3.14)", "");
if (oDb.LastErr != 0)
//...
 
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.

Historie:
Pm8.01.00: Vytvořeno
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice