Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
45 / 45 / 15
Регистрация: 17.01.2013
Сообщений: 328

Удаление InterBase

02.11.2013, 23:41. Показов 3565. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Подскажите пожалуйста почему не работает код:
Delphi
1
2
3
4
5
6
7
8
9
  DM.IBQuery1.Close;
  DM.IBQuery1.SQL.Clear;
  DM.IBQuery1.SQL.Add('DELETE FROM POKUP WHERE KOD='+
    QuotedStr(IntToStr(DM.IBQuery1KOD.Value)));
  DM.IBQuery1.Open;
  DM.IBQuery1.Close;
  DM.IBQuery1.SQL.Clear;
  DM.IBQuery1.SQL.Add('SELECT * FROM POKUP ORDER BY FAM');
  DM.IBQuery1.Open;
Заранее спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.11.2013, 23:41
Ответы с готовыми решениями:

Удаление столбца из таблицы interbase
Доброго времени суток, пытаюсь удалить столбец из таблицы interbase, но сталкиваюсь с ошибкой Unexpected end of command, недавно начал...

Редактирование и удаление полей базы InterBase
Простите, что создаю очередную тему с таким вопросом, но в других темах я ответ на свой вопрос так и не нашёл. В общем, использую...

InterBase
при установке выводится ошибка please login as root if you wish to install interbase как с ней бороться?

10
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
02.11.2013, 23:55
Для удаления записей нужны еще две вещи:
- стартовать и коммитить транзакции вручную (прописать старт и коммит)
- для модифицирующих запросов используется метод ExecSQL, а не Open

Еще. Лучше, если для разных видов запросов будут использоваться разные компоненты, а не один и тот же.
1
45 / 45 / 15
Регистрация: 17.01.2013
Сообщений: 328
02.11.2013, 23:57  [ТС]
Delphi
1
2
3
4
5
6
7
8
9
10
  DM.IBTransaction1.StartTransaction;
  DM.IBQuery1.Close;
  DM.IBQuery1.SQL.Clear;
  DM.IBQuery1.SQL.Add('DELETE FROM POKUP WHERE KOD='+
    QuotedStr(IntToStr(DM.IBQuery1KOD.Value)));
  DM.IBQuery1.ExecSQL;
  DM.IBTransaction1.CommitRetaining;
  DM.IBQuery1.SQL.Clear;
  DM.IBQuery1.SQL.Add('SELECT * FROM POKUP ORDER BY FAM');
  DM.IBQuery1.Open;
Я правильно Вас понял?
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
03.11.2013, 00:01
Если IBTransaction1 связан с IBQuery1, то да.
Только вместо CommitRetaining нужен просто Commit.
Ну и разнесите вы по разным компонентам модификацию и чтение данных.
0
45 / 45 / 15
Регистрация: 17.01.2013
Сообщений: 328
03.11.2013, 00:17  [ТС]
Цитата Сообщение от Скандербег Посмотреть сообщение
стартовать
Цитата Сообщение от Maksim2309 Посмотреть сообщение
DM.IBTransaction1.StartTransaction;
Ругается, что транзакция активна. И так же ничего не происходит

Добавлено через 3 минуты
Цитата Сообщение от Скандербег Посмотреть сообщение
Ну и разнесите вы по разным компонентам модификацию и чтение данных.
Да я бы с радостью, в предыдущей теме мне тоже самое сказали, но у меня есть 2 причины:
1) Задание препода (она же основная)
2) Охота все-таки понять как с одним это сделать, т.е. пройти все тяготы. А то в нете примеры в основном на несколько компонентов
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
03.11.2013, 00:21
Чтение и удаление разнесены по разным компонентам?
И разным транзакциям?
Ошибка, что транзакция активна, и получается тогда, когда прочли набор данных (а для этого специально
стартовать и завершать транзакции, как правило, не делают, хотя и полезно), а транзакцию не закрыли и тут же по этой транзакции начали что-то другое вершить.

Добавлено через 2 минуты
А, ну тогда просто (если злой препод):
Нужно проверить активность транзации и придушить коммитом, а дальше уже работать как со свежим компонентом:
Delphi
1
2
  if DM.IBQuery1.Transaction.Active then
    DM.IBQuery1.Transaction.Commit;
1
45 / 45 / 15
Регистрация: 17.01.2013
Сообщений: 328
03.11.2013, 00:22  [ТС]
Цитата Сообщение от Скандербег Посмотреть сообщение
Чтение и удаление разнесены по разным компонентам?
И разным транзакциям?
Нет нет все в одном

Добавлено через 1 минуту
Цитата Сообщение от Скандербег Посмотреть сообщение
Нужно проверить активность транзации и придушить коммитом, а дальше уже работать как со свежим компонентом:
Delphi
1
2
* if DM.IBQuery1.Transaction.Active then
* * DM.IBQuery1.Transaction.Commit;
Все равно ничего не происходит
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
03.11.2013, 00:26
Хм, а что должно происходить? Удаление? Или чего еще?
Все равно вам никто не расскажет что не так - как бы это узнать.
Выкладывайте проект. тогда есть вероятность понять причину "ничего не происходящего".
1
45 / 45 / 15
Регистрация: 17.01.2013
Сообщений: 328
03.11.2013, 00:28  [ТС]
Цитата Сообщение от Скандербег Посмотреть сообщение
Хм, а что должно происходить? Удаление? Или чего еще?
Удаление.
Вот проект
Вложения
Тип файла: rar InterBase.rar (3.37 Мб, 33 просмотров)
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
03.11.2013, 00:58
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
procedure TPokup.BitBtn3Click(Sender: TObject);
var
  Kod : string;
begin
  kod := IntToStr(DM.IBQuery1KOD.Value);
  if DM.IBQuery1.Transaction.Active then
    DM.IBQuery1.Transaction.Commit;
  DM.IBQuery1.Close;
  DM.IBQuery1.SQL.Clear;
  DM.IBQuery1.SQL.Add('DELETE FROM POKUP WHERE KOD='+ Kod);
  DM.IBQuery1.Transaction.StartTransaction;
  DM.IBQuery1.ExecSQL;
  DM.IBQuery1.Transaction.Commit;
  DM.IBQuery1.SQL.Clear;
  DM.IBQuery1.SQL.Add('SELECT * FROM POKUP ORDER BY FAM');
  DM.IBQuery1.Open;
end;
Понятно, что после закрытия набора данных (Close) у поля DM.IBQuery1KOD.Value не было значения.
Поэтому значение надо сохранить, и только затем закрыть датасет.

Добавлено через 7 минут
Кстати, кавычить (QuotedStr) числовые значения не нужно. Достаточно преобразования числа в строковое представление.
С кавычками отправляют в запрос только даты/время и строковые значения.
1
45 / 45 / 15
Регистрация: 17.01.2013
Сообщений: 328
03.11.2013, 00:59  [ТС]
Спасибо большое, выручили

Добавлено через 56 секунд
Буду иметь в виду. Еще раз спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.11.2013, 00:59
Помогаю со студенческими работами здесь

Interbase
Бд аэропорт, в ней есть три таблицы - рейс, направление, время рейса. Чтобы добавить в таблицу рейс новую запись о рейсе я делаю так: ...

InterBase
Создаю локал сервер, жму логин, выбивает ошибки. Что-то наподобе сервер не может быть запущен и прочие. Возможно не правильно крякал....

ошибка InterBase
Здравствуйте. Наконец-то в колледже мы дошли до InterBase. Вот решил написать программу, так как минимальный опыт уже был (еще на втором...

Подключение InterBase
Доброго времени суток! Прошу вашей помощи по созданию БД. Пытаюсь создать подключение к InterBase с вводом логина и пароля из формы....

InterBase+Delphi
Господа профи, всех приветствую, подскажите плизз ссылки или литературу, ну или просто совет как начать. нужно вот что: субд InterBase +...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru