Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.17;
Скачать: CL | DM;

Вниз

Не получается выполнить обработку Исключительной ситуации   Найти похожие ветки 

 
Андрей Королёв   (2003-03-30 16:34) [0]

procedure TMainObjectForm.Button3Click(Sender: TObject);
begin
if IBDataset.Active then IBDataset.close;
If IBTransaction.InTransaction then IBTransaction.Commit;
IBDatabase.Open;

try
IBDataset.SelectSQL.Text:=ComboBox22.Text;
except
// НЕ Получается выполнить обработку исключительной ситуации при
// неправильном наборе SQL-запроса
// В USES тип IB указан
on EIBInterBaseError do ShowMessage("Не удается получить данные");
end;
If IBTransaction.InTransaction then IBTransaction.Commit;
IBTransaction.StartTransaction;
IBDataset.Open;

end;



 
big_rom ©   (2003-03-30 18:27) [1]

возбудить его надо если что-то нетак
выдержка из хелпа
For example, the function below converts a string to an integer, raising an ERangeError exception if the resulting value is outside a specified range.

function StrToIntRange(const S: string; Min, Max: Longint): Longint;

begin
Result := StrToInt(S); // StrToInt is declared in SysUtils
if (Result < Min) or (Result > Max) then
raise ERangeError.CreateFmt(
"%d is not within the valid range of %d..%d",
[Result, Min, Max]);
удачи


 
ЮЮ ©   (2003-03-31 03:14) [2]

// НЕ Получается выполнить обработку исключительной ситуации при
// неправильном наборе SQL-запроса

А кто сказал, что при неправильном наборе должно возникать исключение? :-) Ошибка проявится только при Prepere, Open и т.п.


 
Johnmen ©   (2003-03-31 09:29) [3]

А самая загадочная строка
IBDatabase.Open; :)


 
zacho ©   (2003-03-31 09:45) [4]

Еще небольшой советик: вместо if IBDataset.Active then IBDataset.close; проще сделать IBDataset.Active:=false;


 
Anatoly Podgoretsky ©   (2003-03-31 11:37) [5]

zacho © (31.03.03 09:45)
Ну это уже в области вкусов - свойство или действие, я предпочитаю Close/Open, а вот проверка действительно не нужна, можно сразу.


 
zacho ©   (2003-03-31 11:43) [6]


> Anatoly Podgoretsky © (31.03.03 11:37)

Я тоже предпочитаю Close/Open - imho более читабельно.


 
MsGuns ©   (2003-03-31 11:48) [7]

Зачем каждый раз "дергать" Базу Данных (Open/Close), и перестартовывать транзакцию ? Для обновления курсора ИМХО достаточно дать TIBTransaction.CommitRetaining и переоткрыть НД.
Или я чего-то недопонимаю ?


 
zacho ©   (2003-03-31 11:52) [8]


> MsGuns © (31.03.03 11:48)

Насколько я понял, вопрошавшему требовалось не обновление курсора, а изменение текста запроса и проверка его на корректность.
P.S. Использование CommitRetaining - черевато, хотя я, тьфу-тьфу-тьфу, на этот баг еще не разу не нарывался.


 
MsGuns ©   (2003-03-31 11:57) [9]

>zacho © (31.03.03 11:52)

А разве IB API "караулит" все изменения текстов запросов в свойств "своих" компонент ? Я по-дилетантски считал, что проверка корректности запроса делается в Prepare или, в случае его отсутствия, в Open, ExecSQL, ExecQuery и т.д.


 
zacho ©   (2003-03-31 12:04) [10]


> MsGuns © (31.03.03 11:57)

Ты правильно считал :) В том-то и была ошибка > Андрей Королёв, что он пытался получить исключение, просто поменяв текст запроса, и не делая Open и т.п.




Страницы: 1 вся ветка

Текущий архив: 2003.04.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.021 c
1-54622
illusion Dolphin
2003-04-07 23:24
2003.04.17
HTML и ресурсы


11-54540
SPeller
2002-06-30 06:39
2003.04.17
Оптимизация ??


6-54782
msoftware
2003-02-24 06:23
2003.04.17
ВОПРОС ПО ID SMTP


1-54707
elf_123
2003-04-01 22:28
2003.04.17
Очень хитрый Эдит


3-54447
jen_bond
2003-03-28 17:38
2003.04.17
Проблемма с многопользовательской БД.