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.
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. |
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).
Existují tedy 3 způsoby, jak nastavit hodnoty nového záznamu:
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.
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();
}
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();
}
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();
}
var oDb = pMe.Pm("/TestAdoDb");
oDb.DbExecute("", "INSERT table1 (name, value) VALUES ('pi', 3.14)", "");
if (oDb.LastErr != 0)
//...