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

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

12.12.2014, 15:59. Показов 1586. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Программа пишет ошибку "Не найдено поле в ADOQqery1 Id_FIO" Подскажите, пожалуйста, как исправить или переделать? Хотя вроде это поле -то у меня есть

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm9.Button2Click(Sender: TObject);
begin
Try DataModule2.ADOConnection1.BeginTrans;
    with DataModule2.Redakt do
      begin
        Parameters.ParamByName('Vozrast').Value:=edit20.text;
        DataModule2.Redakt.Parameters[0].Value:= form3.DBGrid1.Datasource.DataSet.FieldByName('Id_FIO').Value;
      end;
    DataModule2.ADOConnection1.CommitTrans;
  except
  DataModule2.ADOConnection1.RollbackTrans;
  ShowMessage('Íåâîçìîæíî âûïîëíèòü. Ïîâòîðèòå!');
  end;
  end;
Redakt
SQL
1
UPDATE Itog  SET Vozrast=:Vozrast WHERE id_FIO=:ID_FIO
ADOQuery1
SQL
1
2
SELECT Rezultat.FIO, Itog.Vozrast, Pol.Pol, Gruppa.Name_Gruppa, 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;
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.12.2014, 15:59
Ответы с готовыми решениями:

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

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

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

Редактирование записи
Не могу сообразить почему так, и как это исправить? На форме редактирование, если исправить...

18
пофигист широкого профиля
4757 / 3194 / 860
Регистрация: 15.07.2013
Сообщений: 18,491
12.12.2014, 16:53 2
И где в ADOQqery1 поле Id_FIO?
0
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 240
12.12.2014, 18:07  [ТС] 3
northener, сделала так:

SQL
1
2
SELECT Rezultat.FIO, Itog.Vozrast, Pol.Pol, Gruppa.Name_Gruppa, Itog.PJT, Itog.CMM, Itog.CM, Itog.MO, Itog.Id_FIO, Rezultat.Id_FIO
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;
тоже самое пишет....
0
129 / 129 / 41
Регистрация: 17.10.2013
Сообщений: 335
12.12.2014, 21:26 4
Цитата Сообщение от POVT Посмотреть сообщение
Itog.Id_FIO, Rezultat.Id_FIO
два поля с одинаковыми названиями - какое выбирать???
Нужно в SELECT'е заменить, например, на
SQL
1
(Itog.Id_FIO) AS I_idfio, (Rezultat.Id_FIO) AS R_idfio
и обращаться по этим идентификаторам
Delphi
1
2
3
DataModule2.Redakt.Parameters[0].Value:= form3.DBGrid1.Datasource.DataSet.FieldByName('I_idfio').Value;
//или
DataModule2.Redakt.Parameters[0].Value:= form3.DBGrid1.Datasource.DataSet.FieldByName('R_idfio').Value;
0
пофигист широкого профиля
4757 / 3194 / 860
Регистрация: 15.07.2013
Сообщений: 18,491
13.12.2014, 02:01 5
Цитата Сообщение от POVT Посмотреть сообщение
тоже самое пишет...
Правильно пишет. Ибо под "полем в ADOQqery1" понимается конкретный компонент-наследник TField из тех, которые автоматом создаются при открытии TQuery. А в твоём запросе, как уже сказал andrey_k3, два поля с одним именем, но с разной "фамилией".

Добавлено через 1 минуту
Цитата Сообщение от andrey_k3 Посмотреть сообщение
и обращаться по этим идентификаторам
Общепринято называть их не идентификаторами, а псевдонимами. На слэнге - алиасами.
0
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 240
15.12.2014, 12:43  [ТС] 6
northener, andrey_k3, Сделала, как Вы описали.
SQL
1
2
SELECT Rezultat.FIO, Itog.Vozrast, Pol.Pol, Gruppa.Name_Gruppa, Itog.PJT, Itog.CMM, Itog.CM, Itog.MO, Rezultat.Id_FIO AS I_DFIO
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;
код
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm9.Button2Click(Sender: TObject);
begin
Try DataModule2.ADOConnection1.BeginTrans;
    with DataModule2.Redakt do
      begin
        Parameters.ParamByName('Vozrast').Value:=edit20.text;
         DataModule2.Redakt.Parameters[0].Value:= form3.DBGrid1.Datasource.DataSet.FieldByName('I_DFIO').Value;
      end;
    DataModule2.ADOConnection1.CommitTrans;
  except
  DataModule2.ADOConnection1.RollbackTrans;
  ShowMessage('Íåâîçìîæíî âûïîëíèòü. Ïîâòîðèòå!');
  end;
  end;
но ошибка та же самая, не видит он поле и все тут
0
129 / 129 / 41
Регистрация: 17.10.2013
Сообщений: 335
15.12.2014, 14:11 7
Проблема в том, что Вы не можете определиться со стилем кода...
Delphi
1
2
3
4
5
with DataModule2.Redakt do
      begin
        Parameters.ParamByName('Vozrast').Value:=edit20.text;
         DataModule2.Redakt.Parameters[0].Value:= form3.DBGrid1.Datasource.DataSet.FieldByName('I_DFIO').Value;
      end;
Определитесь - использовать ParamByName или Parameters[n]
Если вернуться к первому посту, то видно что ParamByName('Vozrast') и есть Parameters[0]!
SQL
1
UPDATE Itog  SET Vozrast=:Vozrast WHERE id_FIO=:ID_FIO
измените
Delphi
1
2
3
Parameters[1].Value:= form3.DBGrid1.Datasource.DataSet.FieldByName('I_DFIO').Value;
//или
Parameters.ParamByName('ID_FIO').Value:= form3.DBGrid1.Datasource.DataSet.FieldByName('I_DFIO').Value;

Не по теме:


SELECT Rezultat.FIO, Itog.Vozrast, Pol.Pol, Gruppa.Name_Gruppa, Itog.PJT, Itog.CMM, Itog.CM, Itog.MO, Rezultat.Id_FIO AS I_DFIO
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;
для данного запроса - если имя поля уникально, то для чего ему псевдоним?

1
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 240
15.12.2014, 14:31  [ТС] 8
andrey_k3,
Цитата Сообщение от andrey_k3 Посмотреть сообщение
измените
изменила. Все равно не видит поле I_DFIO в ADOquery1((
0
129 / 129 / 41
Регистрация: 17.10.2013
Сообщений: 335
15.12.2014, 14:35 9
Что в запросе в момент нажатия Button2?
Delphi
1
2
3
4
5
procedure TForm9.Button2Click(Sender: TObject);
begin
ShowMessage(ADOquery1.SQL.Text); //какой текст запроса?
Try DataModule2.ADOConnection1.BeginTrans;
...
0
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 240
15.12.2014, 14:44  [ТС] 10
andrey_k3,
Цитата Сообщение от andrey_k3 Посмотреть сообщение
Что в запросе в момент нажатия Button2?
Delphi
1
2
3
DataModule2.ADOQuery1.SQL.Text:='SELECT Rezultat.FIO, Itog.Vozrast, Pol.Pol, Gruppa.Name_Gruppa, Itog.PJT, Itog.CMM, Itog.CM,'+
  'Itog.MO,  Rezultat.Id_FIO AS I_DFIO 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;';
  DataModule2.ADOQuery1.Active:=True;
Вроде заработал, но почему-то теперь не сохраняет измененный возраст
0
129 / 129 / 41
Регистрация: 17.10.2013
Сообщений: 335
15.12.2014, 15:00 11
А в таблице Itog точно есть запись "WHERE id_FIO=:ID_FIO"?
0
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 240
15.12.2014, 15:05  [ТС] 12
andrey_k3,
Цитата Сообщение от andrey_k3 Посмотреть сообщение
А в таблице Itog точно есть запись "WHERE id_FIO=:ID_FIO"?
у меня База данных Access. Итог Itog нигде на форме не выводится. Есть только таблица, которая выводится запросом
Цитата Сообщение от POVT Посмотреть сообщение
Код Delphi
DataModule2.ADOQuery1.SQL.Text:='SELECT Rezultat.FIO, Itog.Vozrast, Pol.Pol, Gruppa.Name_Gruppa, Itog.PJT, Itog.CMM, Itog.CM,'+
* 'Itog.MO, *Rezultat.Id_FIO AS I_DFIO 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;';
* DataModule2.ADOQuery1.Active:=True;
схема данных (на всякий случай)
Миниатюры
Редактирование записи  
0
129 / 129 / 41
Регистрация: 17.10.2013
Сообщений: 335
15.12.2014, 15:22 13
Чтобы выполнился запрос
SQL
1
UPDATE Itog  SET Vozrast=:Vozrast WHERE id_FIO=:ID_FIO
в таблице Itog должна быть запись, попадающая под условие WHERE. Такая запись есть? Что содержится в form3.DBGrid1.Datasource.DataSet.FieldByName('I_DFIO').Value? Совпадает ли это значение с одним (или несколькими) из значений поля id_FIO таблицы Itog?
0
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 240
15.12.2014, 15:29  [ТС] 14
andrey_k3,
Цитата Сообщение от andrey_k3 Посмотреть сообщение
Что содержится в form3.DBGrid1.Datasource.DataSet.FieldByName('I_DFIO').Value?
идентификатор фамилии студента
Цитата Сообщение от andrey_k3 Посмотреть сообщение
Совпадает ли это значение с одним (или несколькими) из значений поля id_FIO таблицы Itog?
Да, совпадает. Нажала на DBGrid1 на запись Дружинина. Принял значение верное = 12. В Аксессе Дружинина имеет значение идентификатора 12
Миниатюры
Редактирование записи  
0
129 / 129 / 41
Регистрация: 17.10.2013
Сообщений: 335
15.12.2014, 15:34 15
Попробовать добавить ExecSQL после передачи последнего параметра
0
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 240
15.12.2014, 15:40  [ТС] 16
andrey_k3, Добавила, все равно не сохраняет
Delphi
1
DataModule2.ADOQuery1.ExecSQL;
0
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 240
15.12.2014, 15:42  [ТС] 17
andrey_k3, а вот, то, что он вот так пишет, после прохождения, это нормально?
Миниатюры
Редактирование записи  
0
129 / 129 / 41
Регистрация: 17.10.2013
Сообщений: 335
15.12.2014, 15:44 18
Лучший ответ Сообщение было отмечено POVT как решение

Решение

Цитата Сообщение от POVT Посмотреть сообщение
DataModule2.ADOQuery1.ExecSQL
почему DataModule2.ADOQuery1? Разве с помощью него обновление выполняется?
Delphi
1
2
3
4
5
6
with DataModule2.Redakt do
  begin
    Parameters.ParamByName('Vozrast').Value:=edit20.text;
    Parameters.ParamByName('id_FIO').Value:= form3.DBGrid1.Datasource.DataSet.FieldByName('I_DFIO').Value;
    ExecSQL;
  end;
1
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 240
15.12.2014, 15:49  [ТС] 19
andrey_k3, ааааааааааааа наконец-то заработало!!! Спасибо огромное
0
15.12.2014, 15:49
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.12.2014, 15:49
Помогаю со студенческими работами здесь

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

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

Добавление и редактирование записи
Добрый день. Необходимо чтобы при добавлении записи, можно было выбрать группу и это значение...

Редактирование записи (Access)
Подскажите, пожалйуста, как правильно перейти на форму редактирования записи по двойному клику на...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Всё не так уж и плохо.
Hrethgir 25.01.2025
Запустил более-менее сносно регистры в связке с сумматорами. Да - виновата оптимизация от Gowin EDA, дело в том, что Education шифрует нетлист, да и вообще много чего не позволяет. Просто обвязал. . .
Cisco ASA: подробное руководство по настройке и использованию
hw_wired 25.01.2025
В сетевой безопасности межсетевые экраны играют критически важную роль в защите корпоративных инфраструктур от постоянно растущего числа киберугроз. Среди множества решений для обеспечения. . .
Cisco Intelligent Services Gateway: руководство по настройке
hw_wired 25.01.2025
В сетевых инфраструктурах Cisco Intelligent Services Gateway (ISG) играет ключевую роль в организации и управлении сервисами для конечных пользователей. Этот компонент представляет собой. . .
Использование Go (Golang) в Highload-проектах: преимущества и особенности
bytestream 25.01.2025
В мире высоконагруженных систем выбор правильного инструментария играет ключевую роль в успехе проекта. Go (Golang) представляет собой относительно молодой язык программирования, который быстро. . .
Откуда у float лишние цифры в конце дробной части. Представление чисел с плавающей точкой
bytestream 25.01.2025
При разработке программного обеспечения часто возникает необходимость работать с вещественными числами, которые содержат дробную часть. В современных компьютерных системах такие числа представляются. . .
Как использовать глобальную переменную в функции в Python
bytestream 25.01.2025
В программировании на Python глобальные переменные представляют собой особый тип переменных, которые доступны для использования во всех частях программы, включая различные функции, классы и модули. . . .
Как в цикле обойти все элементы map в Java
bytestream 25.01.2025
В разработке на Java одной из наиболее востребованных структур данных является интерфейс Map, который предоставляет эффективный способ хранения и управления парами "ключ-значение". Разработчики. . .
Для чего нужен UserManager.isU­serAGoat(­) в Android и как это использовать
bytestream 25.01.2025
В мире Android-разработки существует множество интересных и порой загадочных функций, о которых знают далеко не все разработчики. Одной из таких функций является метод UserManager. isUserAGoat(),. . .
Как обойти масси в JavaScript. Всё о циклах
bytestream 25.01.2025
JavaScript представляет собой мощный язык программирования, широко используемый в веб-разработке, где массивы и циклы являются фундаментальными концепциями для эффективной работы с данными. Массив в. . .
Как сделать, чтобы существующая ветка отслеживала удалённую в Git. Связывание локальных и удалённых веток
bytestream 25.01.2025
В разработке программного обеспечения системы контроля версий стали неотъемлемой частью процесса создания качественного программного продукта. Эти инструменты позволяют разработчикам эффективно. . .
Как проверить, что файл НЕ существует с помощью Bash
bytestream 25.01.2025
В системном администрировании проверка существования файлов является фундаментальной операцией, особенно при написании скриптов на Bash. Правильная обработка ситуаций, когда файл отсутствует,. . .
Как проверить, что строка пустая, неопределена или null в JavaScript
bytestream 25.01.2025
При разработке веб-приложений на JavaScript разработчики регулярно сталкиваются с необходимостью проверки строковых значений на различные состояния. Валидация данных является критически важным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru