Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Delphi - BDE - TQuery - tabuľka v pamäti

TQuery má téměř všechny vymoženosti, protože stojí na třídě TDBDataSet a tím všechny podobnosti končí. TTable je prostě přímé spojení s tabulkou, TQuery je výsledek dotazu SELECT (což je v podstatě virtuální tabulka). Přes SQL lze vytvořit tabulku, ale musíš použít buď metodu Execute objektu TDatabase - takto Database1.execute (const SQL: String; Params: TParams = nil; Cache: Boolean = False; Cursor: phDBICur = nil): Integer; - význam parametrů viz help. Nebo rychleší je použít přímo API funkce BDE - jestli máš můj modul pro práci s BDE Rce_BDE (nabízel jsem ho kdysi ke stažení), je to metoda ExecSQL. Může vypadat například takto:

{------------------------------ Provede příkaz SQL za pomocí databáze --------------------------}
function ExecSQL (const ASQL: string; ADB: TDatabase; ACursor: phDBICur = nil): LongInt;
{	ASQL	:= Příkaz SQL (DDL nebo DML)							}
{	ADB	:= Objekt databáze, který je použit pro vykonání SQL příkazu			}
{	ACursor	:= Případné handle tabule, kam se narve výsledek (nutné pro SELECT)		}
{Vrací: Počet vět co vrátil příkaz DML (příkaz DDL vrací vždy 0)				}
begin
	Check (DbiQExecDirect (ADB.Handle, qrylangSQL, PChar (ASQL), ACursor));
	if (ACursor <> nil) then Check (DbiGetRecordCount (ACursor^, Result)) else Result := 0;
end;
//Edit Toto je cesta pro příkazy SQL kategorie DDE. Pro příkazy SQL kategorie DML existuje ještě objekt TUpdateSQL, kterým jdou vyslat příkazy DELTE, UPDATE a INSERT (přes výše uvedenou mojí rutinu jdou tyto příkazy vyslat také).
DDE = data definition language = prostředky na definici dat například příkazy CREATE TABLE (vytvoření tabulky), ALTER TABLE (změny definice tabulky), DROP TABLE (smazání tabulky), CREATE INDEX, DROP INDEX.
DML = Data Manipulation Language = manipulace s daty - příkazy SELECT, DELETE (odstranění vět), INSERT (vložení vět z příkazu nebo jiné tabulky), UPDATE (změna položek tabulky).

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny