С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 240
1

Редактирование записи

07.02.2015, 16:15. Показов 1160. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не могу сообразить почему так, и как это исправить? На форме редактирование, если исправить значения в обоих Combobox, то сохраняет отлично. Но если, я не буду исправлять хотя бы один Combobox, то ошибка
Использую для БД Access.
На кнопку "сохранить" код:
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
Try DataModule2.ADOConnection1.BeginTrans;
    with DataModule2.Redakt do
      begin
        Parameters.ParamByName('Vozrast').Value:=edit20.text;
        Parameters.ParamByName('PJT').Value:=edit14.text;
          ...............................
        Parameters.ParamByName('Id_Gruppa').Value:=Integer(Combobox1.Items.Objects[Combobox1.ItemIndex]); 
        Parameters.ParamByName('Id_Pol').Value:=Integer(Combobox2.Items.Objects[Combobox2.ItemIndex]);
        Parameters.ParamByName('ID_FIO').Value:= form3.DBGrid1.Datasource.DataSet.FieldByName('I_DFIO').Value;
        DataModule2.Redakt.ExecSQL;
      end;
    DataModule2.ADOConnection1.CommitTrans;
  except
  DataModule2.ADOConnection1.RollbackTrans;
  ShowMessage('Невозможно выполнить. Повторите');
  end;
  Try DataModule2.ADOConnection1.BeginTrans;
    with DataModule2.Redakt1 do
      begin
        Parameters.ParamByName('Rost').Value:=edit24.text;
        Parameters.ParamByName('Ves').Value:=edit25.text;
        Parameters.ParamByName('PZ').Value:=edit7.text;
 ..............................
        Parameters.ParamByName('ID_FIO').Value:= form3.DBGrid1.Datasource.DataSet.FieldByName('I_DFIO').Value;
        DataModule2.Redakt1.ExecSQL;
        ShowMessage('Сохранение завершено');
      end;
    DataModule2.ADOConnection1.CommitTrans;
  except
  DataModule2.ADOConnection1.RollbackTrans;
  end;
  form9.Close;
   end;
Миниатюры
Редактирование записи  
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.02.2015, 16:15
Ответы с готовыми решениями:

Редактирование записи
пишу прогу для директора и столкнулся с таким делом.. if label7.Caption='' then ADOQuery1.Insert...

Редактирование записи
Приветствую. Такая проблема. Нужно сделать редактирование записей в таблице. Запись...

Редактирование записи в бд
В общем суть в том что есть две таблицы AUTO_LIST и NEW_TABLE в NEW_TABLE необходимо записать в...

Редактирование записи
Использую тот же код, что и для добавления. только ADOQuery1.Edit; вместо Append. Текущая запись...

12
пофигист широкого профиля
4754 / 3191 / 860
Регистрация: 15.07.2013
Сообщений: 18,486
07.02.2015, 17:03 2
Если в Combobox'е ничего не выбрано, то ItemIndex = -1, Вот и ошибка.
0
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 240
07.02.2015, 17:44  [ТС] 3
northener, У меня есть ДБГрид. Щелкаю в нужную мне строку и открывается форма редактирования с уже заполненными полями т.е. в комбобоксах имеются записи. Я меняю все, что мне нужно, и нажимаю сохранить.
0
пофигист широкого профиля
4754 / 3191 / 860
Регистрация: 15.07.2013
Сообщений: 18,486
07.02.2015, 17:50 4
Цитата Сообщение от POVT Посмотреть сообщение
открывается форма редактирования с уже заполненными полями т.е. в комбобоксах имеются записи
Что значит "в комбобоксах имеются записи"? Поясни кодом.
0
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 240
07.02.2015, 17:53  [ТС] 5
northener,
Цитата Сообщение от northener Посмотреть сообщение
Поясни кодом.
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
procedure TForm3.DBGrid1DblClick(Sender: TObject);
begin
  Form9.Show;
  Form9.Edit6.Text:=DBGrid1.Fields[0].AsString;
  DataModule2.Vivod_Redakt.SQL.Clear ;
  DataModule2.Vivod_Redakt.SQL.Text:='SELECT Rezultat.FIO, Itog.Vozrast, Pol.Pol, Gruppa.Name_Gruppa, Rezultat.Rost, Rezultat.Ves, Rezultat.PZ,'+
  'Rezultat.PP, Rezultat.BV, Rezultat.BN, Rezultat.Jivot, Rezultat.Lopatka, Rezultat.Inter_GM, Rezultat.OPV, Rezultat.OPN, Rezultat.OBV, Rezultat.OBN,'+
  'Rezultat.Inter_MM, Rezultat.DP, Rezultat.DPP, Rezultat.DB, Rezultat.DG, Rezultat.Inter_KM, Itog.PJT, Itog.CMM, Itog.CM,'+
  'Itog.MO FROM Rezultat INNER JOIN (Pol INNER JOIN (Gruppa INNER JOIN Itog ON Gruppa.Id_Gruppa = Itog.Id_Gruppa) ON Pol.Id_Pol = Itog.Id_Pol) ON Rezultat.Id_FIO = Itog.Id_FIO where Rezultat.FIO='+#39+form9.edit6.Text+#39;
  DataModule2.Vivod_Redakt.Active:=True;
  Form9.Edit20.Text:=DataModule2.Vivod_Redakt.FieldByName('Vozrast').AsString;
  Form9.ComboBox2.Text:=DataModule2.Vivod_Redakt.FieldByName('Pol').AsString;
  Form9.ComboBox1.Text:=DataModule2.Vivod_Redakt.FieldByName('Name_Gruppa').AsString;
  Form9.Edit24.Text:=DataModule2.Vivod_Redakt.FieldByName('Rost').AsString;
  Form9.Edit25.Text:=DataModule2.Vivod_Redakt.FieldByName('Ves').AsString;
  Form9.Edit7.Text:=DataModule2.Vivod_Redakt.FieldByName('PZ').AsString;
  Form9.Edit8.Text:=DataModule2.Vivod_Redakt.FieldByName('PP').AsString;
  Form9.Edit9.Text:=DataModule2.Vivod_Redakt.FieldByName('BV').AsString;
  Form9.Edit10.Text:=DataModule2.Vivod_Redakt.FieldByName('BN').AsString;
  Form9.Edit21.Text:=DataModule2.Vivod_Redakt.FieldByName('Jivot').AsString;
  Form9.Edit22.Text:=DataModule2.Vivod_Redakt.FieldByName('Lopatka').AsString;
  Form9.memo3.Text:=DataModule2.Vivod_Redakt.FieldByName('Inter_GM').AsString;
  Form9.Edit5.Text:=DataModule2.Vivod_Redakt.FieldByName('OPV').AsString;
  Form9.Edit11.Text:=DataModule2.Vivod_Redakt.FieldByName('OPN').AsString;
  Form9.Edit12.Text:=DataModule2.Vivod_Redakt.FieldByName('OBV').AsString;
  Form9.Edit13.Text:=DataModule2.Vivod_Redakt.FieldByName('OBN').AsString;
  Form9.memo1.Text:=DataModule2.Vivod_Redakt.FieldByName('Inter_MM').AsString;
  Form9.Edit1.Text:=DataModule2.Vivod_Redakt.FieldByName('DP').AsString;
  Form9.Edit2.Text:=DataModule2.Vivod_Redakt.FieldByName('DPP').AsString;
  Form9.Edit3.Text:=DataModule2.Vivod_Redakt.FieldByName('DB').AsString;
  Form9.Edit4.Text:=DataModule2.Vivod_Redakt.FieldByName('DG').AsString;
  Form9.memo2.Text:=DataModule2.Vivod_Redakt.FieldByName('Inter_KM').AsString;
  Form9.Edit14.Text:=DataModule2.Vivod_Redakt.FieldByName('PJT').AsString;
  Form9.Edit16.Text:=DataModule2.Vivod_Redakt.FieldByName('CMM').AsString;
  Form9.Edit18.Text:=DataModule2.Vivod_Redakt.FieldByName('CM').AsString;
  Form9.Edit19.Text:=DataModule2.Vivod_Redakt.FieldByName('MO').AsString;
end;
0
пофигист широкого профиля
4754 / 3191 / 860
Регистрация: 15.07.2013
Сообщений: 18,486
07.02.2015, 17:58 6
Лучший ответ Сообщение было отмечено POVT как решение

Решение

Цитата Сообщение от POVT Посмотреть сообщение
Form9.ComboBox2.Text:=DataModule2.Vivod_Redakt.FieldByName('Pol').AsString;
Вот это как раз ситуация из серии "На сарае написано ххх, а на самом деле в нем дрова".
Присвоение значения свойству TCombobox.Text не означает выбор из него. Надо так
Delphi
1
Form9.ComboBox2.ItemIndex:=Form9.ComboBox2.Items.IndexOf(DataModule2.Vivod_Redakt.FieldByName('Pol').AsString);
0
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 240
07.02.2015, 18:07  [ТС] 7
northener,
Цитата Сообщение от northener Посмотреть сообщение
Надо так
Заменила, теперь комбобокс вообще не заполнился(
Миниатюры
Редактирование записи  
0
пофигист широкого профиля
4754 / 3191 / 860
Регистрация: 15.07.2013
Сообщений: 18,486
07.02.2015, 18:48 8
Цитата Сообщение от POVT Посмотреть сообщение
теперь комбобокс вообще не заполнился
Значит в Itens комбобокса нет такой строки. А где и как заполняется Items?
0
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 240
08.02.2015, 07:50  [ТС] 9
northener,
Цитата Сообщение от northener Посмотреть сообщение
А где и как заполняется Items?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm9.ComboBox2DropDown(Sender: TObject);
begin
with DataModule2.ADOQuery3 do begin
  SQL.Text:='Select Pol.Pol, Pol.Id_Pol from Pol';
  open;
  ComboBox2.Items.Clear;
  while (not  Eof)  do   begin
   ComboBox2.AddItem(FieldByName('Pol').AsString,
      TObject(FieldByName('Id_Pol').AsInteger));
    Next;
   end;
 end;
end;
0
пофигист широкого профиля
4754 / 3191 / 860
Регистрация: 15.07.2013
Сообщений: 18,486
08.02.2015, 13:30 10
Цитата Сообщение от POVT Посмотреть сообщение
procedure TForm9.ComboBox2DropDown(Sender: TObject);
Ну так и что ты хотела получить? Поздно заполнять комбобокс в событии OnDropDown. Раньше это надо делать. Гораздо раньше.
0
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 240
08.02.2015, 15:16  [ТС] 11
northener,
Цитата Сообщение от northener Посмотреть сообщение
Раньше это надо делать. Гораздо раньше.
куда еще то раньше?)
0
пофигист широкого профиля
4754 / 3191 / 860
Регистрация: 15.07.2013
Сообщений: 18,486
08.02.2015, 15:25 12
Этот конкретный комбо хоть в дизайнере. Список возможных "полоа" всё-таки всегда один и тот же. Ну а список групп, например при старте программы и после его (списка групп) редактирования, если такое редактирование предусмотрено программой.
1
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 240
09.02.2015, 14:08  [ТС] 13
northener, Точно блин. Спасибо))) Разобралась
0
09.02.2015, 14:08
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.02.2015, 14:08
Помогаю со студенческими работами здесь

Редактирование записи
Программа пишет ошибку "Не найдено поле в ADOQqery1 Id_FIO" Подскажите, пожалуйста, как исправить...

Редактирование записи из DBGrid
Допустим есть база: ФИО, Дата рождения. Хочу сделать так: в дбгриде ищем нужную нам запись, щелкаем...

Редактирование записи в dbgrid
Здравствуйте, уважаемые гуру. Знаю, что данная тема поднималась не один раз, но ... SQL Server...

Удаление и редактирование записи
Делаю БД в InterBase, одна таблица редактируется удаляется нормально, а вторая никак, даже когда...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Администрирован­­­ие Git, продвинутые техники работы с Git
InfoMaster 11.01.2025
Основы управления репозиторием Эффективное управление Git-репозиторием требует глубокого понимания механизмов контроля доступа и инструментов администрирования. Рассмотрим ключевые аспекты. . .
Что такое HCL Notes и как с ним работать
InfoMaster 10.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой комплексную платформу для совместной работы и обмена информацией в корпоративной среде. Это многофункциональное решение,. . .
Как работать с Git из Windows и Visual Studio
InfoMaster 10.01.2025
Работа с Git в Windows Работа с Git в операционной системе Windows может быть осуществлена с помощью различных инструментов, каждый из которых обладает своими уникальными возможностями и. . .
Аналог оператора switch case в Python
InfoMaster 10.01.2025
Оператор switch case используется в программировании для выбора одного из нескольких вариантов исполнения кода. Однако в языке Python этот оператор отсутствует. Понимание аналогов switch case в. . .
Отличия абстрактного класса от интерфейса
InfoMaster 10.01.2025
В современной разработке программного обеспечения существуют два основных механизма реализации абстракции: абстрактные классы и интерфейсы. Эти инструменты, хотя и схожи в своей основной цели -. . .
Как работать в Git
InfoMaster 10.01.2025
Git — это одна из наиболее популярных систем контроля версий, которая активно используется разработчиками по всему миру. Она позволяет эффективно управлять изменениями в коде, координировать работу. . .
Реализация передвижения персонажа в Unity3d на C#
InfoMaster 10.01.2025
Реализация передвижения персонажа в Unity3D начинается с правильной настройки проекта. Этот этап критически важен для создания отзывчивого и плавного управления. Рассмотрим основные шаги для создания. . .
Docker: руководство для начинающих
InfoMaster 10.01.2025
В современном мире разработки программного обеспечения контейнеризация стала неотъемлемой частью процесса создания и развертывания приложений. Docker, как ведущая платформа контейнеризации, произвела. . .
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru