Как удобнее работать с динамически формируемыми запросами

Советы » SQL » Как удобнее работать с динамически формируемыми запросами

В процессе работы с БД иногда необходимо выполнить какие-то мелкие запросы. Держать для этого где-то временную 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

.

Другое по теме:

Категории

Статьи

Советы

Copyright © 2022 - All Rights Reserved - www.delphirus.com