Promotic
WikipediaLinkedInYoutubeTwitterFacebook

DbExecute - metoda objektu PmAdo

Popis:
Provede příkaz zadaný v syntaxi jazyka SQL.
Syntaxe:
DbExecute(sId As String, sCommand As String, sParams As String) As Object
Volání:
Set oRecordset = oDb.DbExecute(sId, sCommand, sParams)
Parametry:
sId(String) Jednoznačný identifikátor, pod kterým si objekt PmAdo zapamatuje výsledná data v podobě AdoRecordset.

Pokud je uveden prázdný řetězec (""), potom se SQL příkaz sice provede a data v podobě objektu AdoRecordset jsou vrácena, ale objekt PmAdo si je nebude pamatovat. Je to výhodné zejména v případech, kdy ve skriptu je potřeba provést SQL dotaz a data ve skriptu ihned zpracovat s tím, že objekt AdoRecordset se ihned poté uvolní.

Pokud příkaz výsledná data vůbec nevrací, potom se rovněž uvádí prázdný řetězec.
sCommand(String) Většinou příkaz v syntaxi jazyka SQL (INSERT, UPDATE, DELETE, atd.), který nevrací data v podobě AdoRecordset. Může ale také také vracet data v podobě objektu AdoRecordset a obsahovat SQL dotaz SELECT, název tabulky, volání uložené procedury, název nebo URL adresa souboru obsahující uložený objekt AdoRecordset.
sParams(String) Dodatečné parametry metody DbExecute. Údaje jsou zde ve formátu PmNamedValues, například "command:text;execute:norecords;".
"command:xxx;" (nepovinné) - Určuje, jak má příslušný ADO Provider vyhodnotit parametr sSource, zejména pokud obsahuje něco jiného, než dotaz/příkaz v syntaxi jazyka SQL (např. SELECT, INSERT, atd.).
text (přednastaveno) - Určuje, že ADO Provider má vyhodnotit parametr sSource jako textový zápis příkazu. Odpovídá hodnodě ADO adCmdText.
table - Určuje, že ADO Provider má vygenerovat SQL dotaz tak, že budou vráceny všechny záznamy databázové tabulky, jejíž název je uvedené v parametru sSource. Odpovídá hodnodě ADO adCmdTable.
storedproc - Určuje, že ADO Provider má vyhodnotit parametr sSource jako uloženou proceduru. Odpovídá hodnodě ADO adCmdStoredProc.
file - Určuje, že uložený AdoRecordset má být vyčten ze souboru, jehož název je uvedený v parametru sSource. Odpovídá hodnodě ADO adCmdFile.
tabledirect - Určuje, že ADO Provider má vrátit všechny záznamy databázové tabulky, jejíž název je uvedené v parametru sSource. Odpovídá hodnodě ADO adCmdTableDirect.
unknown - Určuje, že typ příkazu v parametru sSource není známý. ADO Provider se jej pokusí zjistit sám, ale spotřebuje se tím zbytečně čas. Odpovídá hodnodě ADO adCmdUnknown.
"execute:xxx;" (nepovinné) - Určuje, jak má příslušný ADO Provider provést SQL dotaz. Implicitní je synchronní dotaz, tzn. že metoda čeká na výsledek operace.
async - Asynchronní dotaz, tzn. že metoda nečeká na výsledek operace. Odpovídá hodnodě ADO adAsyncExecute.
asyncfetch - Určuje, že řádky určené vlastností ADO Recordset.CacheSize se mají načíst synchronně, a zbývající řádky se mají dočíst asynchronně. Odpovídá hodnodě ADO adAsyncFetch.
asyncfetchnonblocking - Určuje, že hlavní vlákno (thread) nebude nikdy blokováno při čtení. Pokud požadovaný řádek nebyl načten, ukazovátko aktuálního bude přesunuto na konec. Odpovídá hodnodě ADO adAsyncFetchNonBlocking.
norecords - Určuje, že volaný dotaz/příkaz nevrací žádná data. Pokud ano, data budou zahozena a nebudou vrácena (žádný AdoRecordset hodnota Nothing). Odpovídá hodnodě ADO adExecuteNoRecords.
record - Určuje, že volaný dotaz/příkaz vrací jeden řádek, který má být vrácen v podobě objektu AdoRecord. Odpovídá hodnodě ADO adExecuteRecord.
Vrácená hodnota:
Vrací výsledná data v podobě AdoRecordset (množina záznamů), pokud vůbec daný příkaz data vrací.
Poznámka:
Objekt ADO Record:

V závislosti na konkrétním ADO Provider se může stát, že jednořádkový výsledek SQL dotazu nebude vrácen v podobě objektu AdoRecordset s jedním záznamem, ale v podobě objektu AdoRecord, představujícího jeden řádek. Není to ale typické pro nejběžněji užívané ADO Provider. Objekt AdoRecord je spíše vrácen při explicitních operacích, kdy z exitujícího objektu AdoRecordset se vrátí konkrétní záznam v podobě objektu AdoRecord. Objekt AdoRecord skládá z objektů AdoField stejně jako objekt AdoRecordset, na rozdíl od něj však nepodporuje metody pro přesun pozice aktuálního záznamu (např. MoveFirst). V dokumentaci se pro zjednodušení bude uvádět pouze běžnější vracený objekt AdoRecordset, přestože v určitých ojedinělých případech může být vrácen i objekt AdoRecord.

Příklad:
Přidání nové věty do tabulky ("table1") v objektu 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