MyBooks.club
Все категории

Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

На сайте mybooks.club вы можете бесплатно читать книги онлайн без регистрации, включая Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001. Жанр: Программирование издательство неизвестно,. Доступна полная версия книги с кратким содержанием для предварительного ознакомления, аннотацией (предисловием), рецензиями от других читателей и их экспертным мнением.
Кроме того, на сайте mybooks.club вы найдете множество новинок, которые стоит прочитать.

Название:
Советы по Delphi. Версия 1.4.3 от 1.1.2001
Издательство:
неизвестно
ISBN:
нет данных
Год:
неизвестен
Дата добавления:
17 сентябрь 2019
Количество просмотров:
205
Читать онлайн
Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 краткое содержание

Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 - описание и краткое содержание, автор Валентин Озеров, читайте бесплатно онлайн на сайте электронной библиотеки mybooks.club
…начиная с 1001. Смотрите другие файлы…

Советы по Delphi. Версия 1.4.3 от 1.1.2001 читать онлайн бесплатно

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - читать книгу онлайн бесплатно, автор Валентин Озеров

Эта проблема была в Delphi 3.0 только на TQuery, а в Delphi 3.01 появилась и в TTable.

Лечится так (простой пример):

procedure TMainForm.Edit1Change(Sender: TObject);

begin

 if length(Edit1.Text) > 0 then begin

  Table1.Filtered := TRUE;

  UpdateFilter(Table1);

 end

 else Table1.Filtered := FALSE;

end;


procedure TMainForm.UpdateFilter(DataSet: TDataSet);

var FR: TFilterRecordEvent;

begin

 with DataSet do begin

  FR := OnFilterRecord;

  if Assigned(FR) and Active then begin

   DisableControls;

   try

    OnFilterRecord := nil;

    OnFilterRecord := FR;

   finally

    EnableControls;

   end;

  end;

 end;

end

Как бы мне соорудить в SP исключение, чтобы его увидел Delphi-клиент?

Nomadic отвечает:

sqlstate='99999' не подходит, так как хочется на клиенте видеть код исключения.

Используй RAISERROR с кодом >20000. Если еще при этом научишься без потерь передавать на Delphi-клиента русские ругательства, то скажи мне как ты этого добился :). 

Когда я применяю ApplyUpdates на ClientDataSet, на серверной стороне не срабатывает событие OnNewRecord для оригинального набора данных. Как это исправить?

Nomadic отвечает:

Никак. Эти обновления идут прямо через BDE, а не через компонент набора данных.

В Delphi 4.0 (C++Builder 4.0) ситуация радикально изменилась.

Во-первых, обычному провайдеру данных (TProvider) можно указать, каким образом обновлять данные.

Во-вторых, новый тип провайдера (TDataSetProvider) работает только через соответвующие методы TDataSet.

То есть – все события при данных условиях на сервере будут отрабатываться обычным образом.

Если же Вы пользуетесь более старой версией Delphi, то, как обычно, можно посоветовать использование хранимых процедур, в данном контексте это будут методы сервера приложений. К сожалению, совет неприемлем для транспорта Sockets. 

SQL 

Функции дат в SQL

Тема: Функции дат в SQL

Кто-нибудь знает как «вытащить» месяц или год из datetime-поля с помощью SQL? Я знаю, что QBE этого не может. SQL в состоянии это сделать?

Как насчет функции EXTRACT?

SELECT SALEDATE,

 EXTRACT(DAY FROM SALEDATE) AS DD,

 EXTRACT(MONTH FROM SALEDATE) AS MM,

 EXTRACT(YEAR FROM SALEDATE) AS YY

FROM ORDERS

Steve Koterski 

Зарезервированные слова Local SQL

Ниже приведен список в алфавитном порядке слов, зарезервированных Local SQL в Borland Database Engine. Имейте в виду, что данный совет публикуется «как есть».

ACTIVE, ADD, ALL, AFTER, ALTER, AND, ANY, AS, ASC, ASCENDING, AT, AUTO, AUTOINC, AVG

BASE_NAME, BEFORE, BEGIN, BETWEEN, BLOB, BOOLEAN, BOTH, BY, BYTES

CACHE, CAST, CHAR, CHARACTER, CHECK, CHECK_POINT_LENGTH, COLLATE, COLUMN, COMMIT, COMMITTED, COMPUTED, CONDITIONAL, CONSTRAINT, CONTAINING, COUNT, CREATE, CSTRING, CURRENT, CURSOR

DATABASE, DATE, DAY, DEBUG, DEC, DECIMAL, DECLARE, DEFAULT, DELETE, DESC, DESCENDING, DISTINCT, DO, DOMAIN, DOUBLE, DROP

ELSE, END, ENTRY_POINT, ESCAPE, EXCEPTION, EXECUTE, EXISTS, EXIT, EXTERNAL, EXTRACT

FILE, FILTER, FLOAT, FOR, FOREIGN, FROM, FULL, FUNCTION

GDSCODE, GENERATOR, GEN_ID, GRANT, GROUP, GROUP_COMMIT_WAIT_TIME

HAVING, HOUR

IF, IN, INT, INACTIVE, INDEX, INNER, INPUT_TYPE, INSERT, INTEGER, INTO, IS, ISOLATION

JOIN

KEY

LONG, LENGTH, LOGFILE, LOWER, LEADING, LEFT, LEVEL, LIKE, LOG_BUFFER_SIZE

MANUAL, MAX, MAXIMUM_SEGMENT, MERGE, MESSAGE, MIN, MINUTE, MODULE_NAME, MONEY, MONTH

NAMES, NATIONAL, NATURAL, NCHAR, NO, NOT, NULL, NUM_LOG_BUFFERS, NUMERIC

OF, ON, ONLY, OPTION, OR, ORDER, OUTER, OUTPUT_TYPE, OVERFLOW

PAGE_SIZE, PAGE, PAGES, PARAMETER, PASSWORD, PLAN, POSITION, POST_EVENT, PRECISION, PROCEDURE, PROTECTED, PRIMARY, PRIVILEGES

RAW_PARTITIONS, RDB$DB_KEY, READ, REAL, RECORD_VERSION, REFERENCES, RESERV, RESERVING, RETAIN, RETURNING_VALUES, RETURNS, REVOKE, RIGHT, ROLLBACK

SECOND, SEGMENT, SELECT, SET, SHARED, SHADOW, SCHEMA, SINGULAR, SIZE, SMALLINT, SNAPSHOT, SOME, SORT, SQLCODE, STABILITY, STARTING, STARTS, STATISTICS, SUB_TYPE, SUBSTRING, SUM, SUSPEND

TABLE, THEN, TIME, TIMESTAMP, TIMEZONE_HOUR, TIMEZONE_MINUTE, TO, TRAILING, TRANSACTION, TRIGGER, TRIM

UNCOMMITTED, UNION, UNIQUE, UPDATE, UPPER, USER

VALUE, VALUES, VARCHAR, VARIABLE, VARYING, VIEW

WAIT, WHEN, WHERE, WHILE, WITH, WORK, WRITE

YEAR

Операторы:

||, –, *, /, <>, <, >, ,(запятая), =, <=, >=, ~=, !=, ^=, (, ) 

Сиротские Master-записи

Как с помощью SQL найти записи таблицы, которых нет в другой таблице?

Вот пример: 

with PeopleHiddenForm.PersonQuery.SQL do begin

 Add('Select P.Last, P.First, P.Middle, P."Suffix", P.KeyNo, COUNT(PersMemL.PersonKeyNo)');

 Add('From   Person P Left Outer Join ');

 Add('       PersMemL PersMemL');

 Add('On     ((P.KeyNo = PersMemL.PersonKeyNo))');

 Add('Group By P.Last, P.First, P.Middle, P.Suffix, P.KeyNo');

 Add('Having ((Count(PersmemL.PersonKeyNo) = 0))');

Данный код позволяет связаться с таблицей (PersMemL), содержащей количество ключей персональной записи и запись членства. Запрос возвращает имена персон, которые не имеют записей членства.

На практике этот способ оказывается очень эффективным, по крайней мере, с локальным SQL в таблицах Paradox.

David G. Wachtel

Назначение SQL-счетчика переменной

Delphi 1

query.Close;

query.SQL.Clear;

query.SQL.Add('select count(*) from table where field = :XXX');

Query.ParamByName('XXX').AsString := value;

query.Open;

while Query.Eof <> True do begin

 SqlCount := Query.Fields[0].AsInteger;

 Query.Next

end;

Подразумевается наличие компонентов TTable, TQuery, TStoredProc

Объявление

property RecordCount: Longint;

Описание

Времени исполнения и только для чтения. Свойство RecordCount определяет количество записей в наборе данных. Количество возвращаемых записей может зависеть от сервера и не зависит от границ задаваемого диапазона.

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


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;


Валентин Озеров читать все книги автора по порядку

Валентин Озеров - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки mybooks.club.


Советы по Delphi. Версия 1.4.3 от 1.1.2001 отзывы

Отзывы читателей о книге Советы по Delphi. Версия 1.4.3 от 1.1.2001, автор: Валентин Озеров. Читайте комментарии и мнения людей о произведении.

Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*
Все материалы на сайте размещаются его пользователями.
Администратор сайта не несёт ответственности за действия пользователей сайта..
Вы можете направить вашу жалобу на почту librarybook.ru@gmail.com или заполнить форму обратной связи.