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

Dataset not in edit or insert mode

14.05.2014, 07:25. Показов 17811. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Delphi
1
2
3
4
5
6
7
8
9
Form3.ADOQuery1.Active:=False;
Form3.ADOQuery1.SQL.Clear;
Form3.ADOQuery1.SQL.Add('SELECT * FROM [Ëåêàðñòâà]  WHERE [Íàèìåíîâàíèå]=:b1');
Form3.ADOQuery1.Parameters.ParamByName('b1').Value := Combobox5.text;
I:=Form3.ADOQuery1.FieldByName('¹_Ëåêàðñòâà').AsInteger;
Form3.ADOQuery1.Active:=True;
Form3.ADOQuery1.FieldByName('¹_Àíàëîãè÷íîãî_ëåêàðñòâà').AsInteger:=I;
 
Form3.ADOQuery1.Post;
Суть такова. В таблице имеются уже некие значения со своими ID(тип счетчик)
При добавлении новых данных можно выбрать уже существующую строку, т.е. поиск по названию и ввести ее ID в другую строку.
Все происходит на одной форме в одном ADOQuery1. думаю из-за этого и ошибка. Подскажите как исправить

Добавлено через 31 минуту
Фильтрация работает, т.е. запрос. А дальше не пойму почему ошибка
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.05.2014, 07:25
Ответы с готовыми решениями:

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

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

Table4: DataSet not in Edit or insert mode
при нажатии кнопки даные из ComboBox1.text должны перемещаться в таблицу если работаемс новой пустой стракой то даные заносятся хороше...

25
129 / 129 / 41
Регистрация: 17.10.2013
Сообщений: 335
14.05.2014, 07:39
во-первых, чтобы переменной I присвоить значение Form3.ADOQuery1.FieldByName('№_Лекарства '), запрос выполнить надо. т.е. строки 5 и 6 поменять местами. во-вторых,
Dataset not in edit or insert mode
в 9 строке есть Post, а перед 7 строкой нет ни Edit, ни Insert. в-третьих, а куда вставляются данные? сейчас ADOQuery1 выбирает одну запись и в этот же самый набор идет добавление значения переменной I
0
 Аватар для ZfoxAK
670 / 560 / 242
Регистрация: 26.11.2012
Сообщений: 2,191
14.05.2014, 07:43
Цитата Сообщение от Ivanko1993 Посмотреть сообщение
Dataset not in edit or insert mode
Dataset (информация расположенная в памяти ПК) находится в режиме который не предпологает редактирование или вставку.
Цитата Сообщение от Ivanko1993 Посмотреть сообщение
Form3.ADOQuery1.FieldByName('№_Аналогичн ого_лекарства').AsInteger:=I;
попытка присвоение.

ЗЫ.

Цитата Сообщение от Ivanko1993 Посмотреть сообщение
Form3.ADOQuery1.Active:=False;
Delphi
1
Form3.ADOQuery1.close;
Цитата Сообщение от Ivanko1993 Посмотреть сообщение
Form3.ADOQuery1.Active:=True;
Для запроса Select правильней так.
Delphi
1
Form3.ADOQuery1.Open;
Для запросов редактирования Delete, Insert, Update
Delphi
1
Form3.ADOQuery1.ExecSQL;
0
5 / 3 / 3
Регистрация: 29.05.2012
Сообщений: 328
14.05.2014, 08:11  [ТС]
Спасибо все получилось. А теперь такой вопрос.
В таблице имеются поля: '№лекарства' 'наименование' '№_Аналогичного_лекарства'.
так же на этой форме имеются memo. Я решил добавить новое. Которое бы отображало аналогичное лекарство.
например кликаю на лекарство(в таблице). Происходит sql запрос который сравнивает эти № и при совпадении выводит строку(точнее поле наименование) в memo.
Делаю так.
Delphi
1
2
3
4
5
Form3.ADOQuery1.SQL.Clear;
Form3.ADOQuery1.SQL.Add('SELECT * FROM Лекарства  WHERE  №_Лекарства=:s20');
Form3.ADOQuery1.Parameters.ParamByName('s20').Value:=Form3.ADOQuery1.FieldByName('№_Аналогичного_лекарства').Asstring;
Form3.ADOQuery1.Active:=True;
memo7.Text:=Form3.ADOQuery1.Fields[1].AsString;
Но мемо пустой. Хотя значения одинаковые в полях присутствуют.

Добавлено через 1 минуту
В событии TForm3.DBGrid1CellClick

Добавлено через 13 минут
Поправил 3 и 4 сроку
Delphi
1
2
Form3.ADOQuery1.Parameters.ParamByName('s20').Value:=Form3.ADOQuery1.FieldByName('¹_Àíàëîãè÷íîãî_ëåêàðñòâà').AsInteger;
Form3.ADOQuery1.Open;
результат тот же
0
 Аватар для ZfoxAK
670 / 560 / 242
Регистрация: 26.11.2012
Сообщений: 2,191
14.05.2014, 08:43
а если
Delphi
1
memo7.lines.add(Form3.ADOQuery1.Fields[1].AsString);
Для проверки что за инфа выдется - подключи BDGrid.
0
5 / 3 / 3
Регистрация: 29.05.2012
Сообщений: 328
14.05.2014, 08:51  [ТС]
тоже самое(

Добавлено через 49 секунд
При нажатии на любую строку не отображается ничего в ADOQuery1
0
 Аватар для ZfoxAK
670 / 560 / 242
Регистрация: 26.11.2012
Сообщений: 2,191
14.05.2014, 09:02
Цитата Сообщение от Ivanko1993 Посмотреть сообщение
При нажатии на любую строку не отображается ничего в ADOQuery1
ADOQuery1 не отображает данные))
Для проверки, что выдает запрос и выдает он что либо подключи BDGrid. ADOQuery1 <-> DataSource1 <-> BDGrid1.
0
129 / 129 / 41
Регистрация: 17.10.2013
Сообщений: 335
14.05.2014, 09:04
Цитата Сообщение от Ivanko1993 Посмотреть сообщение
Form3.ADOQuery1.Parameters.ParamByName(' s20').Value:=Form3.ADOQuery1.FieldByName ('№_Аналогичного_лекарства').AsInteger;
к этому моменту ADOQuery1 закрыт (должен быть закрыт), т.о. в Form3.ADOQuery1.Parameters.ParamByName(' s20').Value не попадает планируемое значение. либо параметру присваивать значение из другого запроса, либо до закрытия датасета в переменную писать значение Form3.ADOQuery1.FieldByName('№_Аналогичн ого_лекарства').AsInteger и эту переменную использовать в параметре
0
 Аватар для ZfoxAK
670 / 560 / 242
Регистрация: 26.11.2012
Сообщений: 2,191
14.05.2014, 09:07
Цитата Сообщение от Ivanko1993 Посмотреть сообщение
Form3.ADOQuery1.Parameters.ParamByName(' s20').Value:=Form3.ADOQuery1.FieldByName ('№_Аналогичного_лекарства').Asstring;
так же меня смущает эта запись!
1 строка: очищаешь запрос что предпологает отключение ADOQuery1
2 строка: вносишь новый запрос
3 строка: присвоение параметру пустого значения если отключена ADOQuery1
4 строка: активируешь компоненту в запросе которого параметр с неизвестным значением.
0
5 / 3 / 3
Регистрация: 29.05.2012
Сообщений: 328
14.05.2014, 09:10  [ТС]
Сделаем проще
Delphi
1
2
3
4
Form3.ADOQuery1.SQL.Clear;
Form3.ADOQuery1.SQL.Add('SELECT * FROM Ëåêàðñòâà  WHERE  ¹_Ëåêàðñòâà=¹_Àíàëîãè÷íîãî_ëåêàðñòâà');
Form3.ADOQuery1.Open;
memo7.lines.add(Form3.ADOQuery1.Fields[0].AsString);
без параметра. но так же не работает
0
129 / 129 / 41
Регистрация: 17.10.2013
Сообщений: 335
14.05.2014, 09:17
покажи всю процедуру, т.к. этот запрос рабочий
0
5 / 3 / 3
Регистрация: 29.05.2012
Сообщений: 328
14.05.2014, 09:31  [ТС]
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
procedure TForm3.DBGrid1CellClick(Column: TColumn);
begin
Memo1.Text:=Form3.ADOQuery1.FieldByName('Наименование').Asstring;
Memo2.Text:=Form3.ADOQuery1.FieldByName('Назначение').Asstring;
 
Form7.ADOQuery1.Active:=false;
Form7.ADOQuery1.SQL.Clear;
Form7.ADOQuery1.SQL.Add('SELECT * FROM Группы_лекарств  WHERE №_группы_лекарств=:s2');
Form7.ADOQuery1.Parameters.ParamByName('s2').Value:=Form3.ADOQuery1.FieldByName('Группы_лекарств').Asstring;
Form7.ADOQuery1.Active:=True;
Memo6.Text:=Form7.ADOQuery1.Fields[1].AsString;
 
Form9.ADOQuery1.Active:=false;
Form9.ADOQuery1.SQL.Clear;
Form9.ADOQuery1.SQL.Add('SELECT * FROM Форма_выпуска_лекарства  WHERE №_Формы_выпуска_лекарства=:s2');
Form9.ADOQuery1.Parameters.ParamByName('s2').Value:=Form3.ADOQuery1.FieldByName('Форма_выпуска').Asstring;
Form9.ADOQuery1.Active:=True;
Memo5.Text:=Form9.ADOQuery1.Fields[1].AsString;
 
Form5.ADOQuery1.Active:=false;
Form5.ADOQuery1.SQL.Clear;
Form5.ADOQuery1.SQL.Add('SELECT * FROM Способ_применения  WHERE №_Способа_применения=:s2');
Form5.ADOQuery1.Parameters.ParamByName('s2').Value:=Form3.ADOQuery1.FieldByName('№_Способа_применения').Asstring;
Form5.ADOQuery1.Active:=True;
Memo3.Text:=Form5.ADOQuery1.Fields[1].AsString;
 
Form11.ADOQuery1.Active:=false;
Form11.ADOQuery1.SQL.Clear;
Form11.ADOQuery1.SQL.Add('SELECT * FROM Изготовитель  WHERE №_Изготовителя=:s2');
Form11.ADOQuery1.Parameters.ParamByName('s2').Value:=Form3.ADOQuery1.FieldByName('Изготовитель').Asstring;
Form11.ADOQuery1.Active:=True;
Memo4.Text:=Form11.ADOQuery1.Fields[1].AsString;
 
 
Form3.ADOQuery1.SQL.Clear;
Form3.ADOQuery1.SQL.Add('SELECT * FROM Лекарства  WHERE  №_Лекарства=№_Аналогичного_лекарства');
Form3.ADOQuery1.Open;
memo7.lines.add(Form3.ADOQuery1.Fields[0].AsString);
0
 Аватар для ZfoxAK
670 / 560 / 242
Регистрация: 26.11.2012
Сообщений: 2,191
14.05.2014, 09:57
Цитата Сообщение от Ivanko1993 Посмотреть сообщение
Form3.ADOQuery1.SQL.Add('SELECT * FROM Лекарства *WHERE *№_Лекарства=№_Аналогичного_лекарства');
№_Аналогичного_лекарства - это что за значение?
SQL
1
SELECT * FROM Лекарства WHERE №_Лекарства = 24
№_Лекарства - численое значение?!
0
129 / 129 / 41
Регистрация: 17.10.2013
Сообщений: 335
14.05.2014, 09:58
какой результат выполнения? Memo7 пустой? что после 38 строки?
0
5 / 3 / 3
Регистрация: 29.05.2012
Сообщений: 328
14.05.2014, 10:20  [ТС]
№_Аналогичного_лекарства - Число
№_Лекарства - число (тип данных счетчик)

Добавлено через 1 минуту
После 38 строки
Delphi
1
end;
Добавлено через 12 секунд
Мемо пустой
0
 Аватар для ZfoxAK
670 / 560 / 242
Регистрация: 26.11.2012
Сообщений: 2,191
14.05.2014, 10:34
Цитата Сообщение от Ivanko1993 Посмотреть сообщение
№_Аналогичного_лекарства - Число
и какому значению оно равно в запросе?

Добавлено через 11 минут
Цитата Сообщение от ZfoxAK Посмотреть сообщение
'SELECT * FROM Лекарства *WHERE *№_Лекарства=№_Аналогичного_лекарства
вывести все поля и значения записей
таблицы Лекарства
при условии равенства значений в одной записи(строке) поля №_Лекарства и значения поля №_Аналогичного_лекарства в этой же записи.
0
129 / 129 / 41
Регистрация: 17.10.2013
Сообщений: 335
14.05.2014, 10:35
если я правильно понял идею, то для одной записи №_Лекарства не может быть равным №_Аналогичного_лекарства, отсюда следует отсутствие данных в наборе (а если равно - то это ссылка на себя...)
0
5 / 3 / 3
Регистрация: 29.05.2012
Сообщений: 328
14.05.2014, 13:08  [ТС]
нет нет... записи разные. То есть №_Лекарства должен быть равен №_Аналогичного_лекарства другой строки. но все в одной таблице
0
129 / 129 / 41
Регистрация: 17.10.2013
Сообщений: 335
14.05.2014, 13:47
какой ожидается результат от SELECT * FROM Лекарства WHERE №_Лекарства=№_Аналогичного_лекарства? Список лекарств-аналогов?
0
5 / 3 / 3
Регистрация: 29.05.2012
Сообщений: 328
14.05.2014, 13:56  [ТС]
Идея в том, чтобы при нажатии на строку проходила фильтрация по столбцу №_Лекарства. и должна найтись строка(одна) которая содержит этот номер в столбце №_Аналогичного_лекарства
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.05.2014, 13:56
Помогаю со студенческими работами здесь

Ошибка: Dataset not in edit or insert mode
Как исправить ошибку Dataset not in edit or insert mode?

Dataset not in edit or insert mode (ADOQuery)
Проблема такова: нужно автоматически сохранять данные в ADOQuery при событии edit2change. Но дело в том, что возможен тот случай, когда...

ADOTable1: DataSet not in edit or insert mode
Добрый день, форумчане. В общем, есть 3 формы. Работа с БД Access. На первой: PageControl, в котором 7 TabSheet`ов, в каждом лежит DBGrid....

Ошибка : Dataset not in edit or insert mode
При добавлении в таблицу появляется такая ошибка Обработчик клика на кнопку &quot;Добавить&quot;: procedure...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru