Promotic
WikipediaLinkedInYoutubeTwitterFacebook

DbExecute - metoda obiektu PmAdo

Opis:
Wykona wprowadzone polecenie w składni języka SQL.
Składnia:
DbExecute(sId As String, sCommand As String, sParams As String) As Object
Wołanie:
Set oRecordset = oDb.DbExecute(sId, sCommand, sParams)
Parametry:
sId(String) Jednoznaczny identyfikator, pod którym obiekt PmAdo utrzyma rezultat polecenia w formie AdoRecordset.

Jeżeli jest wprowadzony pusty łańcuch (""), wtedy polecenie SQL wprawdzie zostanie wykonane i rezultat w formie obiektu AdoRecordset zostanie zwrócony, lecz obiekt PmAdo nie będzie go utrzymywać. To jest dogodne zwłaszcza w przypadkach, kiedy w skrypcie trzeba wykonać polecenie SQL i dane w skrypcie bezpośrednio opracować z tym, że obiekt AdoRecordset zostanie bezpośrednio po tym zwolniony.

Jeżeli polecenie nie zwraca danych wynikowych, wtedy również jest zwracany pusty łańcuch.
sCommand(String) W większości polecenie w składni języka SQL (INSERT, UPDATE, DELETE, itd.), które nie zwraca danych w formie AdoRecordset. Może jednak również zwracać dane w formie obiektu AdoRecordset i zawierać polecenie SQL SELECT, nazwę tabeli, wywołanie procedury składowanej, nazwa lub Adres URL pliku zawierającego zapisany obiekt AdoRecordset.
sParams(String) Dodatkowe parametry metody DbExecute. Dane są tutaj w formacie PmNamedValues, na przykład "command:text;execute:norecords;return:map;".
"command:xxx;" (opcjonalne) - Określa, w jaki sposób ADO Provider ma podsumować parametr sSource, zwłaszcza jeżeli zawiera coś innego, niż polecenie w składni języka SQL (np. SELECT, INSERT, itd.).
text (domyślnie) - Określa, że ADO Provider ma zastosować parametr sSource jako tekstowy zapis polecenia. Odpowiada wartości ADO adCmdText.
table - Określa, że ADO Provider ma wytworzyć polecenie SQL w taki sposób, że zostaną zwrócone wszystkie rekordy tablicy bazy danych, której nazwa jest przedstawiona w parametrze sSource. Odpowiada wartości ADO adCmdTable.
storedproc - Określa, że ADO Provider ma zastosować parametr sSource jako procedurę składowaną. Odpowiada wartości ADO adCmdStoredProc.
file - Określa, że zapisany AdoRecordset ma zostać wczytany z pliku, którego nazwa jest przedstawiona w parametrze sSource. Odpowiada wartości ADO adCmdFile.
tabledirect - Określa, że ADO Provider ma zwrócić wszystkie rekordy danej tablicy w bazie danych, której nazwa jest przedstawiona w parametrze sSource. Odpowiada wartości ADO adCmdTableDirect.
unknown - Określa, że tzp polecenia w parametrze sSource nie jest znany. ADO Provider spróbuje sam określić jego rodzaj, lecz wymaga to dodatkowego czasu. Odpowiada wartości ADO adCmdUnknown.
"execute:xxx;" (opcjonalne) - Określa, w jaki sposób ADO Provider ma wykonać polecenie SQL. Domyślnym jest polecenie synchroniczne, tzn. że metoda oczekuje na wynik operacji.
async - Asynchroniczne polecenie, tzn. metoda nie czeka na wynik operacji. Odpowiada wartości ADO adAsyncExecute.
asyncfetch - Określa, że wiersze określone w właściwości ADO Recordset.CacheSize mają być odczytywane synchronicznie, i pozostające wiersze majązostać odczytane asynchronicznie. Odpowiada wartości ADO adAsyncFetch.
asyncfetchnonblocking - Określa, że główne włókno (thread) nie będzie nigdy blokowane podczas odczytu. Jeżeli wymagany wiersz nie zosta wczytany, wtedy wskaźnik bieżącego rekordu zostanie przesunięty na koniec. Odpowiada wartości ADO adAsyncFetchNonBlocking.
norecords - Określa, że wywołane zapytanie/polecenie nie zwraca żadnych danych. Jeżeli polecenie zwraca dane, wtedy zostaną one zignorowane i nie zostaną zwrócone (żaden AdoRecordset wartość Nothing). Odpowiada wartości ADO adExecuteNoRecords.
record - Określa, że wywołane zapytanie/polecenie zwraca jeden wiersz, który ma zostać zwrócony w formie obiektu AdoRecord. Odpowiada wartości ADO adExecuteRecord.
"return:xxx;" (opcjonalne) - Określa, czy wartość zwrotna metody ma być mapą z większą ilością zwróconych wartości równocześnie (nowy sposób) lub tylko jedną wartością (stary sposób). Jeżeli nie zostanie określone, zostanie zastosowany stary sposób.
map - Zwraca mapę (PmMap), która zawiera większą ilość zwróconych wartości równocześnie (nowy sposób) (np. Result, AffectedRows, ErrorCode, ErrorText).
Wartość zwrotna:
Nowy sposób: Zwraca obiekt PmMap z wartościami w następujących pozycjach:
- "Result": rezultat polecenia w postaci AdoRecordset lub w przypadku błędu wartość Nothing (jeżeli wogóle dany polecenie zwraca dane)
- "AffectedRows": ilość dotkniętych wierszy w przypadku dodania, usunięcia lub zmiany wierszy danym poleceniem
- "ErrorCode": kod liczbowy ewentualnego błędu, gdzie wartość 0 oznacza pomyślne wykonanie metody (bez błędu)
- "ErrorText": opis ewentualnego błędu
 
Stary sposób: Zwraca rezultat polecenia w postaci AdoRecordset lub w przypadku błędu wartość Nothing (jeżeli wogóle dany polecenie zwraca dane).
Notatka:
Obiekt ADO Record:

W zależności od konkretnego ADO Provider może się wydarzyć, że jednowierszowy wynik polecenia SQL nie zostanie zwrócony w formie obiektu AdoRecordset z jednym rekordem, lecz w postaci obiektu AdoRecord, który przedstawia jeden wiersz. Jednak zachowanie takie nie jest typowym dla najczęściej stosowanych ADO Provider. Obiekt AdoRecord jest zwracany raczej w przypadku jawnych operacji, kiedy z istniejącego obiektu AdoRecordset jest zwracany konkretny rekord w formie obiektu AdoRecord. Obiekt AdoRecord składa się z obiektów AdoField tak samo jak obiekt AdoRecordset, jedank w odróżnieniu od niego nie wspiera metody do zmiany pozycji bieżącego rekordu (np. MoveFirst). W celu uproszczenia w dokumentacji będziem przedstawiany powszechnie zwracany obiekt AdoRecordset, chociaż w okreĺonych pojedyńczych przypadkach może zostać zwracany także obiekt AdoRecord.

Przykład:
Zapisanie nowego wiersza do tablicy ("table1") w obiekcie PmAdo ("/TestAdoDb").
Dim oDb
Set oDb = pMe.Pm("/TestAdoDb")
oDb.DbExecute "", "INSERT table1 (name, value) VALUES ('pi', 3.14)", ""
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice