В процессе работы с БД иногда необходимо выполнить какие-то мелкие запросы.
Держать для этого где-то временную Query меня лично ломает, посему ловите
творение (под Delphi) - модуль для создания временных TQuery и работы с ними.
примеры использования:
var S: string; ...
S := FastLookUp(format('select A.F1 from A,B where A.F4=B.F4 and B.F9=%d', [1]));
with GiveMeResultSet('select*from A where F1="777"') do try .... finally Free; {не забудьте!} end; .....
if not ExecuteSQL('delete from A') then ShowMessage('Something Wrong'); .....
|
Сам модуль идёт ниже
{ Temporary Queries Creatin' and handlin'
(c) 1997-98 by Volok Alexander (D1/D2)
creation date: 30.10.1997 last update : 17.06.1998 } unit TmpQuery;
interface
uses DBTables;
const InternalDBname = 'MAIN'; {Изменять по вкусу - TDataBase.DataBaseName}
type TSQLScript = {$IFDEF WIN32}string{$ELSE}PChar{$ENDIF};
{Создаст куери с текстом запроса, но не откроет его} function CreateTempQuery(SQLscript: TSQLscript): TQuery;
{Создаст куери и откроет запрос - не забудьте прибить} function GiveMeResultSET(SQLscript: TSQLscript): TQuery;
{Проверит непустоту выборки, заданной ...} function CheckExistence(SQLscript: TSQLscript): boolean;
{Вытащит аж одно значение(лукап) из выборки, заданной ...} function FastLookUP(SQLscript: TSQLscript): string;
{Выполнит запрос и сообщит результат} function ExecuteSQL(SQLscript: TSQLscript): boolean;
implementation
uses Forms;
function CreateTempQuery(SQLscript: TSQLscript): TQuery; begin Result := TQuery.Create(Application); with Result do begin DatabaseName := InternalDBname; {$IFDEF WIN32} SQL.Text := SQLscript; {$ELSE} SQL.SetText(SQLscript); {$ENDIF} end; end;
function ExecuteSQL(SQLscript: TSQLscript): boolean; begin with CreateTempQuery(SQLscript) do begin try ExecSQL; Result := True; except Result := False; end; Free; end; end;
function CheckExistence(SQLscript: TSQLscript): boolean; begin with GiveMeResultSET(SQLscript) do begin Result := not EOF; Free; end; end;
function GiveMeResultSET(SQLscript: TSQLscript): TQuery; begin Result := CreateTempQuery(SQLscript); with Result do try Open; except Free; Result := nil; end; end;
function FastLookUP(SQLscript: TSQLscript): string; begin with GiveMeResultSET(SQLscript) do begin try Result := Fields[0].AsString; except Result := ''; end; Free; end; end;
end.
|
|