Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 03.08.2017
Сообщений: 23

Ошибка: "adoquery1.field 'id_work' not found"

04.08.2017, 14:31. Показов 2516. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На одной форме есть два grida. По сути один grid должен быть главным,а второй второстепенным(подчинённым).Необходимо чтобы при выделении одной строки (id_work) в главной таблице появлялось содержание подчиненной таблицы. И при выделении следующей записи в главной таблице появлялось содержание другой подчиненной таблицы. Нашла код в интернете и всё сделала как там написано,но выдаёт ошибку adoquery4.field 'shifr' not found.
Я бы сделала всё через master-detail,но я работаю же с adoquery.
Ещё странно,что в коде я упоминаю AdoQuery4, а в ошибке у меня указан вообще AdoQuery1. Или я чего-то не догоняю?

Delphi
1
2
3
4
5
6
7
8
9
10
var nah:string;
begin
 nah:=form4.ADOQuery4.Fields[0].AsString;
 form4.ADOQuery4.Active:=false;
 form4.ADOQuery4.SQL.Clear;
 form4.ADOQuery4.SQL.Add('SELECT rasxod_mat.*');
 form4.ADOQuery4.SQL.Add('FROM work_con INNER JOIN rasxod_mat ON work_con.id_work:=rasxod_mat.id_work');
 form4.ADOQuery4.SQL.Add('WHERE(rasxod_mat.id_work='+nah+');');
 form4.ADOQuery4.Active:=true;
 end;
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.08.2017, 14:31
Ответы с готовыми решениями:

Ошибка 'ADOQuery1: Parameter 'id_sotr_' not found'
Всем привет! Делаю запрос через adoquery, который должен выводить записи из таблицы в dbgrid исходя из ID сотрудника прописанного в...

Ошибка: Field '' not found
БД в ACCESS. Считываю и записываю данные через ADOTable по такому принципу: DataModule2.FindKBQuery.Active:=False; ...

Ошибка: FDQuery field not found
Добрый вечер. Долго мучаюсь, но не могу понять в чём дело. Делаю приложение для android, но работоспособность проверяю на Windows. ...

14
Модератор
 Аватар для D1973
9917 / 6454 / 2455
Регистрация: 21.01.2014
Сообщений: 27,389
Записей в блоге: 3
04.08.2017, 17:35
Цитата Сообщение от mayhggghh Посмотреть сообщение
в коде я упоминаю AdoQuery4, а в ошибке у меня указан вообще AdoQuery1
А Вы прямо уверены, что в этом фрагменте кода ошибка?
0
 Аватар для krapotkin
6847 / 4674 / 1463
Регистрация: 14.04.2014
Сообщений: 20,660
Записей в блоге: 21
04.08.2017, 19:58
1.знака := в SQL запросах нет, так что ошибка у вас имеется
2.не нужно 100 раз заново заполнять текст запроса
нужно делать параметры. Они начинаются с :

один раз заполнили и всё
Delphi
1
2
3
ADOQueryMaster.SQL.text:='SELECT rasxod_mat.* FROM work_con '+
                                  'INNER JOIN rasxod_mat ON work_con.id_work=rasxod_mat.id_work'+
                                  'WHERE(rasxod_mat.id_work=:id_work';
желательно это прямо в дизайн-тайме заполнить и забыть
теперь в программе
Delphi
1
2
3
ADOQueryMaster.Close;
ADOQueryMaster.parameters.paramByName('id_work').value := 12345;
ADOQueryMaster.Open;
чтобы сделать мастер-деталь, на главный датасет на OnAfterScroll повесьте
аналогичное открытие запроса
Delphi
1
2
3
ADOQueryDetail.Close;
ADOQueryDetail.parameters.paramByName('имяпараметра').value := значениедлявыборанужныхзаписей;
ADOQueryDetail.Open;
привяжите к каждому свой грид и наслаждайтесь
0
0 / 0 / 0
Регистрация: 03.08.2017
Сообщений: 23
05.08.2017, 08:45  [ТС]
а откуда взять и где его найти этот самый design-time ?
0
 Аватар для krapotkin
6847 / 4674 / 1463
Регистрация: 14.04.2014
Сообщений: 20,660
Записей в блоге: 21
05.08.2017, 10:44
это то что вы видите на экране, когда составляете программу и настраиваете свойства компонентов
run-time это когда ваша программа уже скомпилирована и запущена

у вас на форме компонент TAdoQuery
у него свойство SQL
вот и заполните его один раз и больше не трогайте
для другого запроса другой компонент
0
0 / 0 / 0
Регистрация: 03.08.2017
Сообщений: 23
05.08.2017, 11:10  [ТС]
ладно,вроде бы всё сделано правильно.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm8.ADODataSet1AfterScroll(DataSet: TDataSet);
begin
form8.ADOQuery2.Close;
form8.ADOQuery2.Parameters.ParamByName('id_work').Value:=(DBGrid1.Columns.Items[0].field.asstring);
form8.ADOQuery2.Open;
end;
 
procedure TForm8.DBGrid1CellClick(Column: TColumn);
begin
form8.ADOQuery1.SQL.Text:='SELECT rasxod_mat.* FROM work_con '+
                           'INNER JOIN rasxod_mat ON work_con.id_work=rasxod_mat.id_work'+
                              'WHERE(rasxod_mat.id_work=:work_con.id_work';
form8.ADOQuery1.Close;
form8.ADOQuery1.Parameters.ParamByName('id_work').Value:=(DBGrid1.Columns.Items[0].field.asstring);
form8.ADOQuery1.Open;
Но выдаёт ошибку adoquery1.field 'id_work' not found".
Может быть я не правильно соединила dataset с другими компонентами,потому что возле неё в structure стоит знак вопроса.
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
05.08.2017, 11:37
Просто ошибки:
- наименование параметров не могут быть с точками;
- если уж указывать ADOQuery1.Close, то перед присвоением текста запроса (хотя и это не требуется, т.к. само присвоение закрывает датасет, т.е. ADOQuery1.Close вообще не нужен, тем более после присвоения текста запроса);
- если перед FROM поля только одной таблицы, то в предложении JOIN нет никакого смысла.
- организационная ошибка - указывать внутри класса имя экземпляра этого же класса.

Выводы:
1. в параметре запроса убрать work_con.
2. убрать ADOQuery1.Close
3. убрать INNER JOIN
4. везде нужно убрать form8.

Вполне возможно, что это не все. Но без проекта и БД подсказывать решения довольно сложно.
Так что, нужно выложить и проект и БД - будет проще и автору и советчикам.
0
0 / 0 / 0
Регистрация: 03.08.2017
Сообщений: 23
05.08.2017, 11:51  [ТС]
Цитата Сообщение от Скандербег Посмотреть сообщение
везде нужно убрать form8.
без этого нельзя,потому что это не одна форма на которой есть ADOQuery,если не указывать,то будет ошибка.

Добавлено через 56 секунд
Цитата Сообщение от Скандербег Посмотреть сообщение
наименование параметров не могут быть с точками
что-то не совсем понимаю
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
05.08.2017, 11:54
Цитата Сообщение от mayhggghh Посмотреть сообщение
что-то не совсем понимаю
1. в параметре запроса убрать work_con. и оставить только :id_work
0
0 / 0 / 0
Регистрация: 03.08.2017
Сообщений: 23
05.08.2017, 11:54  [ТС]
Цитата Сообщение от Скандербег Посмотреть сообщение
Вполне возможно, что это не все. Но без проекта и БД подсказывать решения довольно сложно.
Так что, нужно выложить и проект и БД - будет проще и автору и советчикам.
Downloads.rar
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
05.08.2017, 11:58
Без файла БД один проект ничего не стоит. Где файл базы?

P.S. Имя параметра в запросе вовсе не обязано называться как поле таблицы базы - это имя произвольное и в нем не должно быть не корректных символов, в которые входит и точка.
0
0 / 0 / 0
Регистрация: 03.08.2017
Сообщений: 23
05.08.2017, 12:06  [ТС]
Цитата Сообщение от Скандербег Посмотреть сообщение
Без файла БД один проект ничего не стоит. Где файл базы?
Может быть я что-то делаю не так,но он лежит в той папке,где и сам проект,но он не архивируется
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
05.08.2017, 12:09
винда не дает. надо закрыть проект и среду акссесса перед архивацией, чтобы файл БД был не открыт нигде.
0
0 / 0 / 0
Регистрация: 03.08.2017
Сообщений: 23
05.08.2017, 12:11  [ТС]
Цитата Сообщение от Скандербег Посмотреть сообщение
Без файла БД один проект ничего не стоит. Где файл базы?
вот проект.rar
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
05.08.2017, 12:24
Теперь придется возвращаться к первому посту: в представленном проекте на форме4 нет второго DBGrid. а так же ADOQuery4.
Поэтому непонятно что тут надо делать.

Может быть это устаревший проект?

Вдогонку: в базе все таблицы имеют поля, начинающиеся с id_
У всех должны быть тип "Счетчик", чтобы не беспокоится об уникальности этих идентификаторов (Аксесс сам позаботиться об уникальности значений в этих полях)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.08.2017, 12:24
Помогаю со студенческими работами здесь

Ошибка field 'SQL' not found
Добрый день! Возникла такая ошибка, при выполнении кода программы вылетает ошибка: " DBEdit1: field 'SQL' not found" Подскажите...

Ошибка: Field 'Msg_text' not found
Добрый вечер. При попытки получить значение поля Msg_text после Оптимизации вываливается ошибка Field 'Msg_text' not found. CHECK и...

Ошибка Field not found DBEdit
Здравствуйте программисты я новичок в delphi, подскажите пожалуйста почему при добавление строк в БД вылетает ошибка DBEdit29 'Lic_schet'...

Ошибка: Field 'Роль' Not found
Подскажите пожалуйста, в чем ошибка почему всегда при авторизации вылетает ошибка? procedure TForm1.Button1Click(Sender: TObject); ...

Ошибка. adoquery field not found
Мне нужно занести в переменную b значение из Количество. Делаю так: ADOQuery2.Close; ADOQuery2.SQL.Clear; ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru