Alert('Ошибка пpи вставке', 'Отсутствует запись в МАСТЕР-таблице!' + ExtInfo)
else if (StrPos(PChar(E.Message), PChar('UPDATE')) <> nil) then
Alert('Ошибка пpи обновлении', 'Отсутствует запись в МАСТЕР-таблице! ' + ExtInfo);
2601:
Alert('Ошибка', 'Такая запись уже есть!');
else
Alert('Ошибка', 'Hеизвестная ошибка, код – ' + inttostr(EDBEngineError(E).Errors[0].NativeError) + ExtInfo);
end;
end;
end;
end;
Этот код был заточен под MSSQL, но не нужно пытаться его использовать, а лучше по этому пpимеpу написать свою процедуру.
Как добиться верной работы фильтра на запросах и на неиндексированных таблицах?
Nomadic отвечает:
Эта проблема была в 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 отвечает:
Используй 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