Promotic

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 automaticky bude aktuální záznam.
Editační režim je ukončen a potvrzen metodou Update nebo zrušen metodou CancelUpdate.
Syntaxe:
Empty AddNew([Variant aFields], [Variant 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 tabulka má definovaný index nebo sloupec, který zakazuje přidat záznam s hodnotou <Null>, pak je nutno inicializovat záznam 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 v metodě AddNew (ale také v 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í záznamu 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í záznamu 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í záznamu 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 záznamu 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.
Příklad:
Přidá nový záznam do tabulky ("table1"), pomocí zapamatovaného objektu AdoRecordset ("table1"), v objektu PmaAdo ("/TestAdoDb"), který je již připojený k databázi (viz metoda 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 záznam 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ího záznamu. Pouze se vynechá vlastní přidání nového 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.