Promotic

AddNew - metoda obiektu AdoRecordset

Opis:
Określa początek trybu edycji umożliwiającego dodanie nowego rekordu do obiektu AdoRecordset.
Zawartość dodawanego rekordu jest albo pusta albo jest wypełniona przez wartości parametrów aFields oraz aValues.
Nowo dodany rekord automatycznie staje się bieżącym rekordem.
Tryb edycji jest zakończony i potwierdzony przy pomocy metody Update lub odwołany przy pomocy metody CancelUpdate.
Składnia:
Empty AddNew([Variant aFields], [Variant aValues])
Parametry:
aFields[opcjonalne] (Variant) Właściwa nazwa, tablica nazw kolumn lub tablica pozycji kolumn rekordu.
aValues[opcjonalne] (Variant) Właściwa wartość lub tablica wartości dla kolumn w nowym rekordzie.
Jeżeli aFields jest tablicą, wtedy aValues musi również być taką samą tablicą o takiej samej ilości członków, w innym przypadku dojdzie do błędu.
Kolejność nazw kolumn i kolejność wartości kolumn w obu tablicach muszą odpowiadać sobie nawzajem.
Notatka:
Jeżeli tabela zawiera indeks lub kolumnę, które uniemożliwia dodanie rekordu z wartością <Null>, wtedy jest konieczne inicjalizacja nowego rekordu przy pomocy parametrów aFields oraz aValues.
Po wywołaniu tej metody można ustawiać wartości nowo wytworzonego rekordu na przykład przy pomocy Fields oraz Value (np. oRs.Fields("test1").Value = 123).

Przy pomocy parametrów opcjonalnych aFields oraz aValues można w metodzie AddNew (także w metodzie Update) dostarczyć wszystkie zmienione wartości.
Istnieją zatem 3 sposoby, w jaki ustawić wartości nowego rekordu:
1) Dodanie nowego rekordu przy pomocy metody AddNew z przekazanymi parametrami opcjonalnymi aFields oraz aValues z wartościami początkowymi pozycji rekordu, z następnym potwierdzeniem przy pomocy metody Update bez parametrów. Patrz opcja 1) Przykład
2) Dodanie rekordu przy pomocy metody AddNew bez parametrów, następuje zmiana poszczególnych wartości przez powtarzający się dostęp do Value z następnym potwierdzeniem zmian przy pomocy metody Update bez parametrów. Patrz opcja 2) Przykład
3) Dodanie rekordu przy pomocy metody AddNew bez parametrów, z następnym potwierdzeniem zmian przy pomocy metody Update z przekazanymi parametrami opcjonalnymi aFields oraz aValues. Patrz opcja 3) Przykład


Uwaga:
W trybie edycji dochodzi do zamknięcia obiektu AdoRecordset tak, że nie mjest możliwe wywołanie metody do przesunięcia pozycji bieżącego rekordu, itd., dopóki tryb edycji nie jest zakończony przez wywołanie metody Update lub CancelUpdate. Metoda Update nie zwraca żadnej wartości i może dojść do tego, że jej wywołanie zakończy się błędem (np. próba zapisu rekordu o podwójnej wartości klucza lub z niepoprawną wartością). Obiekt AdoRecordset zostaje zamknięty nawet w przypadku niepowodzenia metody Update i nie można z nim dalej pracować. Dlatego jest konieczne wynik wywołania metody Update sprawdzić przy pomocy właściwości Pm_LastErr obiektu Obiekt Wrapper (który w systemie PROMOTIC automatycznie zawija każdy obiekt AdoRecordset).
W przypadku błędu można operację powtórzyć z poprawnymi wartościami lub zakończyć tryb edycji przy pomocy metody CancelUpdate. Patrz Przykład.
Patrz również:
Przykład:
Doda nowy rekord do tabeli ("table1"), przy pomocy utrzymanego obiektu AdoRecordset ("table1"), w obiekcie PmaAdo ("/TestAdoDb"), który jest już podłączony do bazy danych (patrz metoda DbOpen), przy pomocy polecenia SQL ("SELECT * FROM table1").

1)Przykład
JavaScriptVBScriptWybierz oraz skopiuj do schowka

var oDb = pMe.Pm("/TestAdoDb");
var oRs = oDb.RsOpen("table1", "SELECT * FROM table1", "cursor:static;lock:optimistic;");
var aColsName = Pm.Array1("name", "value");
var aValues = Pm.Array1("pi", 3.14);
if (oRs)
{
oRs.AddNew(aColsName, aValues);
oRs.Update();
if (oRs.Pm_LastErr != 0)
{
oRs.CancelUpdate();
}
}
 
2) Przykład
JavaScriptVBScriptWybierz oraz skopiuj do schowka

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) Przykład
JavaScriptVBScriptWybierz oraz skopiuj do schowka

var oDb = pMe.Pm("/TestAdoDb");
var oRs = oDb.RsOpen("table1", "SELECT * FROM table1", "cursor:static;lock:optimistic;");
var aColsName = Pm.Array1("name", "value");
var aValues = Pm.Array1("pi", 3.14);
if (oRs)
{
oRs.AddNew();
oRs.Update(aColsName, aValues);
if (oRs.Pm_LastErr != 0)
{
oRs.CancelUpdate();
}
}
 
4) Istnieje także możliwość dodania nowego rekordu bez wykorzystania obiektu AdoRecordset, bezpośrednio przez wywołanie polecenia SQL INSERT przy pomocy metody DbExecute.
JavaScriptVBScriptWybierz oraz skopiuj do schowka

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

oDb.DbExecute("", "INSERT table1 (name, value) VALUES ('pi', 3.14)", "");
if (oDb.LastErr != 0)
{
// ...
}
 
Uwaga: Możliwości 2) i 3) są wykorzystzwane również do edycji istniejącego rekordu. W tym przypadku zostanie tylko pominięte polecenie wytworzenia nowego pustego rekordu przy pomocy metody AddNew po czym można kontynuować dalej ze zgodną zmianą wartości bieżącego rekordu i z potwierdzeniem zmian Update.

Historia:
Pm8.01.00: Wytworzono
© MICROSYS, spol. s r.o.