Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
1 / 1 / 2
Регистрация: 13.02.2015
Сообщений: 99
1

Ошибка при добавлении(поля не найдены)

05.11.2016, 17:48. Показов 723. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем.
Задачи:
1. отобразить вместо id - имя поставщика поставщиков и имя мебели из других таблиц.
2. возможность сортировки, при клике на название столбца в DBgrid.
Для 1-й задачи был написан sql запрос
SQL
1
2
3
4
SELECT i.*, p.name AS name_prod, f_t.name AS furn_type
FROM producers  AS p
INNER JOIN items AS i ON i.producer_id = p.id_producer
INNER JOIN items AS i ON i.furniture_type_id = f_t.id_furniture
Схему данных можно увидеть на скриншоте(связи между ними)

Для 2-й задачи написан код
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
procedure TF_items.DBGrid1TitleClick(Column: TColumn);
var
ss : string;
begin
      if Datamodule2.ADOQuery1.FieldByName(Column.FieldName).Tag=0 then
       begin
        ss := ' ASC';
        Datamodule2.ADOQuery1.FieldByName(Column.FieldName).Tag := 1;
       end
      else
       begin
        ss := ' DESC';
        Datamodule2.ADOQuery1.FieldByName(Column.FieldName).Tag := 0;
       end;
     Datamodule2.ADOQuery1.Sort:=Column.FieldName + ss;
end;
end;
Сортировка работает, но! При добавлении/удалении/изменении записей выскакивает ошибка о том, что name_prod и furn_type не найдены
В ADOQuery1 все поля добавлены через "add all fields". Подскажите в чем проблема
Миниатюры
Ошибка при добавлении(поля не найдены)  
Изображения
 
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2016, 17:48
Ответы с готовыми решениями:

Ошибка при добавлении(поля не найдены)
Привет всем. Задачи: 1. отобразить вместо id - имя поставщика поставщиков и имя мебели из других...

Ошибка при добавлении поля
Здравствуйте!У меня следующуя проблема: При попытке изменения свойства индексирования поля с "Не...

Ошибка при добавлении нового поля
Доброго времени суток, форумчане! Делаю небольшой проект, скажем, творческую работу в колледже,...

Ошибка при добавлении поля в базу данных
код из класса public void Add(int indid, string lastname, string firstname, string...

5
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,253
05.11.2016, 18:40 2
Как выполняется добавление/удаление/изменение
0
1 / 1 / 2
Регистрация: 13.02.2015
Сообщений: 99
05.11.2016, 18:44  [ТС] 3
northener, например, добавление
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 with Datamodule2.ADOItems  do
    begin
    SQL.Clear;
    SQL.Add('INSERT INTO items (furniture_type_id, name, producer_id, quantity, price) ');
    SQL.Add(' values (:f_type, :name, :prod_id, :quantity, :price)') ;
    Parameters.ParamByName('f_type').Value:=sDBLookupComboBox1.KeyValue;
    Parameters.ParamByName('name').Value:=sEdit1.Text;
    Parameters.ParamByName('prod_id').Value:=sDBLookupComboBox2.KeyValue;
    Parameters.ParamByName('quantity').Value:=sEdit2.Text;
    Parameters.ParamByName('price').Value:=sEdit3.Text;
    ExecSQL;
    SQL.Clear;
    SQL.Add('SELECT * FROM items');
    Open;
Если не сильно понятно, то подробнее:
У задачи 1 есть ДВА вариант решения:
1. Написать запрос как указано в 1-м посте.
2. В ADOtable1 добавить новое поле и связать его с другими. (Показано на картинке). Тогда вместо id поставщика будет его имя.
Если идем по 1-му варианту, то, при клике по всем колонкам для сортировки, сортировка будет работать абсолютна ВСЯ! НО при клике на кнопку "Добавить запись" мы получим ошибку как в первом посте о том, что поле name_prod не найдено.
Если идем по 2-му варианту, то, при клике на колонку "name_prod", которая является связанной с другой таблицей для сортировки, мы получим ошибку о коллекции и сортировки не будет. Но, если мы нажмем на колонку, которая есть в основной таблице(например, price), то сортировка будет работать.
В этом случае кнопка "Добавить запись" работать будет и запись добавится.
Так что в любом варианте есть проблема и я не могу решить ни одну из них.
Миниатюры
Ошибка при добавлении(поля не найдены)  
0
1 / 1 / 2
Регистрация: 13.02.2015
Сообщений: 99
05.11.2016, 22:27  [ТС] 4
актуально
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,253
05.11.2016, 22:39 5
Цитата Сообщение от Hyliop Посмотреть сообщение
SQL.Add('SELECT * FROM items');
Open;
И где в наборе данных полученных этим запросом поле name_prod?
0
1 / 1 / 2
Регистрация: 13.02.2015
Сообщений: 99
05.11.2016, 22:50  [ТС] 6
northener, уже решена проблема. Спасибо
0
05.11.2016, 22:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.11.2016, 22:50
Помогаю со студенческими работами здесь

Ошибка при добавлении текстового поля в БД Access в поле типа MEMO
Приветствую всех! Помогите решить следующую проблему. Из формы добавляется запись из 2 полей...

Ajax ошибка в добавлении поля
не добавляет в базу поле из 3 селекта, помогите, пожалуйста, в чем ошибка? index.php <script...

ошибка при установке: не найдены драйвера дисковода оптических дисков
У меня ноутбук asus s550c, при покупке стояла восьмерка, сейчас решил снести ее. Когда ставил...

Чтение значения поля при добавлении
Запрашиваю записи из mdb. TADOQuery and TDBGrig. Как отследить значение определенного поля в...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru