Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.93/30: Рейтинг темы: голосов - 30, средняя оценка - 4.93
480 / 393 / 113
Регистрация: 24.04.2012
Сообщений: 1,632
Записей в блоге: 3

Insert + Edit в IBDataSet

04.05.2012, 06:28. Показов 5958. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день. Такая проблема. Есть таблица с 5 полями. Делаю Insert 3 первых вставляю и эту же новую запись сразу делаю Edit меняю 2 последних (спросите зачем?! проверяю работоспособность. Insert на одной кнопке Edit на другой). Так вот в DataSet все нормально. Закрываю и открываю форму, есть только данные Insert'а , а Edit'а нет. Сам Edit без Insert'а нормально работает. В чем проблема?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.05.2012, 06:28
Ответы с готовыми решениями:

Not in edit or insert mode
Вроде все делает как надо,но в конце выводит ошибку "DataSet not in edit or insert mode" что не так???Помогите,пожалуйста,исправить.... ...

Dataset not in edit or insert mode
есть 2 таблицы :поставка, возврат и окно с помощью которого добавляем записи из поставки в возврат при добавлении возникает...

Dataset not in edit or insert mode
Form3.ADOQuery1.Active:=False; Form3.ADOQuery1.SQL.Clear; Form3.ADOQuery1.SQL.Add('SELECT * FROM WHERE =:b1'); ...

26
 Аватар для arni
914 / 879 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
04.05.2012, 08:11
Ну если отбросить детские ошибки вроде "забыл нажать Post", то как вариант:
генерация ID на стороне сервера, и этот ID не возвращается во вставленную записть,
соответственно запрос на update происходит без локализации по PK, т.е. проходит впустую.
0
480 / 393 / 113
Регистрация: 24.04.2012
Сообщений: 1,632
Записей в блоге: 3
04.05.2012, 08:42  [ТС]
Post не забыл . Генерация id на Post. Insert работает, Edit работает. А если Insert и сразу же Edit, то Insert сохраняется, а Edit нет !
0
 Аватар для arni
914 / 879 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
04.05.2012, 08:59
Цитата Сообщение от Bit_Man Посмотреть сообщение
Генерация id на Post.
Очень подробно про это место можно?
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
04.05.2012, 09:28
Bit_Man, а вы попробуйте все тоже самое с sql запросами... ну и явите нам код
0
480 / 393 / 113
Регистрация: 24.04.2012
Сообщений: 1,632
Записей в блоге: 3
04.05.2012, 11:09  [ТС]
Извеняюсь что код в Builder c++ но в той теме не ответили. Да тут сложного ничего нет
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//Insert
IBDataSet1->Append();
IBDataSet1->FieldValues["id_priem3"] = Priem3.Indicator;
IBDataSet1->FieldValues["id_uslcln"] = usl->DBGrid1->DataSource->DataSet->FieldValues["id_key"];
IBDataSet1->FieldValues["id_doctor_in"] = editlinkguild.Indicator;
IBDataSet1->FieldValues["Обследование"] = usl->DBGrid1->DataSource->DataSet->FieldValues["name"];
IBDataSet1->FieldValues["Назначил"] = NameShortFIO(&editlinkguild.personal.FIO);
IBDataSet1->FieldValues["Дата назначения"] = GetDateBD();
IBDataSet1->Post();
//Update
IBDataSet1->Edit();
IBDataSet1->FieldValues["Дата отмены"] = GetDateBD();
IBDataSet1->FieldValues["id_doctor_out"] = editlinkguild.Indicator;
IBDataSet1->FieldValues["Отменил"] = NameShortFIO(&editlinkguild.personal.FIO);
IBDataSet1->Post();
Сами SQL
SQL
1
2
3
4
5
6
INSERT INTO T_STAC_PLAN_OBSL (id_priem3, id_uslcln, id_doctor_in)
VALUES(:id_priem3, :id_uslcln, :id_doctor_in)
UPDATE T_STAC_PLAN_OBSL SET
        id_doctor_out = :id_doctor_out,
        date_out = CURRENT_DATE
WHERE id_key = :old_id_key
Про генерацию GeneratorField - Apply Event - On Post
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
04.05.2012, 11:16
Bit_Man, погодите, у меня один вопрос: вы так уверены, что указатель в базе стоит именно на нужной записи? обычно редактированию записи всегда предшествует позиционирование на заданной записи... и вообще дам вам один совет - переходите полностью на запросы... Таблицы все равно, рано или поздно, вам придется исключить из использования, когда начнете упираться в скорость ответа системы... нагружайте базу, в ней же реализованы все механизмы для быстрой обработки
0
480 / 393 / 113
Регистрация: 24.04.2012
Сообщений: 1,632
Записей в блоге: 3
04.05.2012, 11:22  [ТС]
Lord_Voodoo, вы сталкивались с IBDataSet?
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
04.05.2012, 11:27
Bit_Man, к счастью нет... я использую IBDac, они больше меня радуют... причем у всех этих компонентов принцип работы один и тот же...
0
39 / 71 / 10
Регистрация: 03.02.2012
Сообщений: 362
04.05.2012, 11:27
Цитата Сообщение от Bit_Man Посмотреть сообщение
вы сталкивались с IBDataSet?
А вы сталкивались с БД?
0
480 / 393 / 113
Регистрация: 24.04.2012
Сообщений: 1,632
Записей в блоге: 3
04.05.2012, 11:42  [ТС]
Цитата Сообщение от perepe4a Посмотреть сообщение
А вы сталкивались с БД?
Странный вопрос. уж год как в глаза ей смотрю
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
04.05.2012, 11:44
Bit_Man, вы ради эксперимента получите между ваши операциями значение ключевого поля и посмотрите, что выходит... и все равно, чтобы вы там не думали, настоятельно рекомендую все операции делать по средствам SQL-запросов, так оно шустрее будет
0
480 / 393 / 113
Регистрация: 24.04.2012
Сообщений: 1,632
Записей в блоге: 3
04.05.2012, 11:51  [ТС]
IBDataSet выполняет запросы прописанные у него в InsertSQL, UpdateSQL, DeleteSQL. Значения смотрел - все прописывает.
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
04.05.2012, 11:56
Bit_Man, у него даже есть специальные свойства, а вы их почему-то не юзаете... можно узнать, почему?
0
480 / 393 / 113
Регистрация: 24.04.2012
Сообщений: 1,632
Записей в блоге: 3
04.05.2012, 12:05  [ТС]
Какие свойства? Эти
InsertSQL, UpdateSQL, DeleteSQL
?! так я запросы вам прописал в начале которые в них и находятся. Эксперименты показывают:
1. инсерт новую запись, едит старую, едит новую = есть инсерт новой, есть едит старой, нет едит новой.
2. инсерт новую, едит новой, едит старой = есть инсерт новой, нет едит новой, есть едит старой
О_о
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
04.05.2012, 12:21
теперь я понимаю, почему не юзал эти компоненты... феерично, что еще могу сказать...

я почитаю маны дома, авось что-то придет на ум... но компоненты удались у них...
0
480 / 393 / 113
Регистрация: 24.04.2012
Сообщений: 1,632
Записей в блоге: 3
04.05.2012, 12:22  [ТС]
Буду благодарен если что узнаешь
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
04.05.2012, 12:26
Bit_Man, слушай, а у тебя вообще много уже по проге написано? может стоит заменить компоненты на более вменяемые и понятные?
0
480 / 393 / 113
Регистрация: 24.04.2012
Сообщений: 1,632
Записей в блоге: 3
04.05.2012, 12:28  [ТС]
Да я заменил уже на IBQuery но приходится весь запрос переоткрывать при изменении. А связку IBQuery + IBUpdateSQL не получалось нормально сделать. IBDataSet можно сказать и есть IBQuery + IBUpdateSQL
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
04.05.2012, 12:31
Bit_Man, неее, я про всю линейку компонентов... писал я когда-то для FireBird, так IBDac самое оно, причем методы наследуются из TDataSet, что позволяет быстро адаптироваться в работе с новыми компонентами
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.05.2012, 12:31
Помогаю со студенческими работами здесь

Dataset not in Edit or Insert mode
Код: if not (qry.DataSource.DataSet.State in ) and (lbl14.Caption <> 'Зображення...') then begin qry.SQL.Clear; ...

Database not in Edit or Insert mode
DBGrid1.DataSource.DataSet.FieldByName('T_Kol_vo').Clear; DBGrid1.DataSource.DataSet.Edit; DBGrid1.DataSource.DataSet.Insert; ...

ADODataSet1: Dataset not in edit or insert mode
Здравсвуйте, сразу извиняюсь за возможный повтор темы. Дело в кнопке выбора документа для загрузки его в дальнейшем в базу...

Ошибка: Dataset not in edit or insert mode
Вообщем такая проблема, задача из одной колонки с количеством (предметов) отнять другую колонку с количеством (тех же предметов), но они в...

Ошибка Dataset not in edit or insert mode
Здравствуйте! Нужно в переменную типа стринг, занести значение поля , пробовал разными способами, но всегда получаю один и ту же ошибку. ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru