Недавно добавленные исходники

•  TDictionary Custom Sort  3 223

•  Fast Watermark Sources  2 988

•  3D Designer  4 750

•  Sik Screen Capture  3 259

•  Patch Maker  3 466

•  Айболит (remote control)  3 526

•  ListBox Drag & Drop  2 903

•  Доска для игры Реверси  80 753

•  Графические эффекты  3 842

•  Рисование по маске  3 171

•  Перетаскивание изображений  2 544

•  Canvas Drawing  2 671

•  Рисование Луны  2 500

•  Поворот изображения  2 089

•  Рисование стержней  2 119

•  Paint on Shape  1 522

•  Генератор кроссвордов  2 180

•  Головоломка Paletto  1 730

•  Теорема Монжа об окружностях  2 156

•  Пазл Numbrix  1 649

•  Заборы и коммивояжеры  2 016

•  Игра HIP  1 261

•  Игра Go (Го)  1 200

•  Симулятор лифта  1 421

•  Программа укладки плитки  1 176

•  Генератор лабиринта  1 510

•  Проверка числового ввода  1 295

•  HEX View  1 465

•  Физический маятник  1 322

•  Задача коммивояжера  1 356

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

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



Автор: Nomadic

В процессе работы с БД иногда необходимо выполнить какие-то мелкие запросы. Держать для этого где-то временную 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 © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте