Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2011, 13:59   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Не удаляется запись. Firebird + Interbase

Добрый вечер! Не могу удалить программно запись. Вот код, которым пытаюсь удалить запись, зная ее ID:
Код:
procedure TForm3.sSpeedButton1Click(Sender: TObject);
begin
 Form1.IBQuery1.Close;
 Form1.IBQuery1.SQL.Clear;
 Form1.IBQuery1.SQL.Text:='delete from INPUT where ID=' +  Form1.sDBText1.Caption;
// Form1.IBQuery1.ParamByName('A').Value:=Form1.sDBText1.Caption;
 Form1.IBQuery1.ExecSQL;
 Form1.IBTransaction1.Commit;
 Form1.IBQuery1.Close;
 Form1.IBQuery1.SQL.Clear;
 Form1.IBQuery1.SQL.Text:='select * from INPUT';
 Form1.IBQuery1.Open;
 Form3.Close;
end;
но данный код выдает ошибку (см.скрин)
Однако, сам же запрос, сделанный в IBExpert'e:
Код:
delete from INPUT where ID='1'
прекрасно удаляет запись с ID=1. Пробовал и через параметр передавать значение в запрос, но не работает. Помогите, что не так? Нужно удалить запись и подтвердить транзакцию.
Изображения
Тип файла: png ошибка.png (9.4 Кб, 47 просмотров)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 08.05.2011, 14:23   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

какого типа поле ID в базе.
Если строковое, тогда почему у тебя в запросе значение Form1.sDBText1.Caption не в кавычках (QoutedStr(Form1.sDBText1.Caption)

если числовое, тогда почему в запросе в IBExpert 1 в кавычках?

Последний раз редактировалось artemavd; 08.05.2011 в 14:30.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.05.2011, 14:30   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Все, разобрался. Просто значение бралось на Form1, а запрос выполнялся на Form3. Параметр заносился из первой формы. Сделал, чтобы при появлении Form3 параметр из первой формы присваивался в Label, который на третьей форме и все заработало. Вот, так сделал:
Код:
procedure TForm3.sSpeedButton1Click(Sender: TObject);
begin
 Form1.IBQuery1.Close;
 Form1.IBQuery1.SQL.Clear;
 Form1.IBQuery1.SQL.Text:='delete from INPUT where ID=' + Form3.sLabel3.Caption;
 Form1.IBQuery1.ExecSQL;
 Form1.IBTransaction1.Commit;
 Form1.IBQuery1.Close;
 Form1.IBQuery1.SQL.Clear;
 Form1.IBQuery1.SQL.Text:='select * from INPUT';
 Form1.IBQuery1.Open;
 Form3.Close;
end;
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось artemavd; 08.05.2011 в 14:36.
artemavd вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
из interbase в firebird? Domanoff БД в Delphi 1 18.05.2010 20:23
Вопрос с Firebird Interbase (фильтрация) bablzz БД в Delphi 10 30.04.2010 22:42
Проблема с Interbase 2009 и Firebird 2.1.3 forzi Софт 2 19.03.2010 15:36
DAC компоненты для Interbase(FireBird) codekick БД в Delphi 1 21.01.2010 19:34
Клиент FireBird/InterBase sabina_smile SQL, базы данных 9 28.10.2008 21:08