Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.06.2014, 15:59
WarPig WarPig вне форума
Прохожий
 
Регистрация: 14.06.2014
Сообщения: 2
Версия Delphi: Delphi XE5
Репутация: 10
По умолчанию Фильтрация

Здравствуйте. В общем, имеется БД MS Access, в которой 4 таблицы: delivery(id, stock_num, asset_name, id_sort, amount, id_units, sum, del_date, id_pic), units(id, unit_name), sort(id, sort_name, sort_number) и pic(id, pic_name, pic_post). Таблицы units, sort и pic являются справочниками для таблицы delivery (думаю, понятно, по каким полям они связаны). В Delphi создал форму для добавления/удаления данных, в которой находится DBGrid, кнопки и компоненты для работы с БД. В ADOTable таблицы delivery для отображения в DBGrid скрыл поля id, id_sort, id_units, id_pic; но добавил LookUp поля sort, units, pic, в которых данные из одноименных таблиц нужных мне полей. Занес данные в таблицу. Далее, на другой форме имеется DBGrid, DBLookupComboBox, ADOQuery и два DataSource. DBLookupComboBox принимает данные из таблицы sort. Мне нужно сделать так, чтобы при выборе в DBLookupComboBox в DBGrid отображались записи, в которых есть выбранное название.
Написал такой код:
Код:
procedure TForm1.DBLookupComboBox1Click(Sender: TObject);
begin
ADOQuery1.SQL.text:='select * from delivery where sort='+char(39)+''+DBLookupComboBox1.text+''+char(39) +'';
ADOQuery1.Open;
end;
Думал, прокатит, но в delivery нет поля sort, я его создал только для отображения в DBGrid.
Я в БД нуб и, в основном, все делал по примерам. Сорри, если много лишнего написал.
Ответить с цитированием
  #2  
Старый 14.06.2014, 17:25
phomm phomm вне форума
Новичок
 
Регистрация: 07.10.2013
Адрес: Тюмень
Сообщения: 50
Версия Delphi: 7/2007/XE+/FPC
Репутация: 22
По умолчанию

Код:
ADOQuery1.SQL.text:='select * from delivery where id_sort=' + DBLookupComboBox1.KeyValue;
Вот так по идее (если DBLookupComboBox1.KeyField это id , из таблицы sort ессно). Для случая айдишника таблицы не числового (ну или для универсального способа) надо использовать TADOQuery.Parameters
Ответить с цитированием
  #3  
Старый 14.06.2014, 17:41
WarPig WarPig вне форума
Прохожий
 
Регистрация: 14.06.2014
Сообщения: 2
Версия Delphi: Delphi XE5
Репутация: 10
По умолчанию

Сделал. Вылетела ошибка "Could not convert variant of type (UnicodeString) into type (Double)"

Как его использовать?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:31.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter