Главная страница
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.015 c
1-54602
ДЮША
2003-04-07 17:26
2003.04.17
сворачивается в системный трей


8-54759
lamerzzzzzz
2003-01-18 12:52
2003.04.17
МУЛЬТИМЕДИА


8-54750
vvvaaa
2003-01-17 13:43
2003.04.17
Градиент


3-54508
Sectey
2003-03-31 15:42
2003.04.17
Создание и удаление индексов


1-54696
ruslan_as
2003-04-04 17:20
2003.04.17
Как в DBGride работать с несколькими выделеными строками