Форум: "Базы";
Текущий архив: 2003.04.17;
Скачать: [xml.tar.bz2];
ВнизНе получается выполнить обработку Исключительной ситуации Найти похожие ветки
← →
Андрей Королёв (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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c