| 
| 
 | Вопрос # 5 402/ вопрос закрыт / | 
 |  Здравствуйте!Пытаюсь сделать фильтрацию в данных.
 Есть 2 таблицы: Trade Network (ID-supplier/ Supplier_name/ Product_category) и Supplier
 Они связаны между собой и выводятся в делфи из access в общем, с ними всё замечательно.
 
 Есть также ещё Edit, в который будет написана фамилия, которую нужно найти; Button, при нажатии на который будет работать фильтр и найденное отражаться в  DBGrid.
 
 Что бы было понятнее в приложении описан ход действий
 
 Проблема заключается в том, что в Query1, свойство Active не меняется на true и выводится сообщение, что таблица не существует.
 При запуске, когда ввожу имя и нажимаю на кнопку, выскакивает ошибка, что таблицы не существует
 
 Подскажите, что исправить/подправить/добавить, что бы фильтр наконец таки заработал
 Приложение:Переключить в обычный режим     Query1 SELECT ID-supplier, Supplier_name, Product_categoryFROM "BD.db" Trade Network  WHERE (Supplier_name = :Name_param)      Active => true   DataSource1     DataSet =>	Query1   DBGrid1     DataSource => DataSource1   DataType => ftString.ParamType => ptInput.   procedure TForm1.Button1Click(Sender: TObject);begin  Query1.Close;  if not Query1.Prepared then    Query1.Prepare;  Query1.ParamByName('Name_param').Value := Edit1.Text;  Query1.Open;end; 
|  |   Вопрос задала: Haenta (статус: Посетитель)Вопрос отправлен: 12 июня 2011, 18:29
 Состояние вопроса: закрыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 9; последнее сообщение — 13 июня 2011, 12:31; участников в обсуждении: 3. 
|   | bugmenot (статус: 3-ий класс), 12 июня 2011, 20:00 [#1]: Цитата (Haenta): FROM "BD.db" Trade Network чо-чо? точно access? и синтаксис SQL вызывает сомнения
 виконання програми розпочинається з того самого мiсця, де призупинилося.
 
 |  
|   | Haenta (статус: Посетитель), 12 июня 2011, 21:01 [#2]:то, что 2 таблицы из access - точно - и работают они как надо)) 
 синтаксис SQl у меня тоже вызывает сомнение, т.к. на парах нам про него поверхностно только рассказывали и пришлось изучать его самостоятельно, скорее всего я что-то не так поняла
 сейчас расшифрую SQL-запрос, как я его поняла
 
 SELECT ID-supplier, Supplier_name, Product_category {названия столбцов в таблице, которую будем фильтровать}
 FROM "BD.db" {название файла access} Trade Network {название таблицы в access}
 WHERE (Supplier_name = :Name_param) {поле по которому будем фильтровать}
 
 объясните, пожалуйста, ошибки
 А кофе на клавиатуру тоже вирус пролил? |  
|   | alexlafa (статус: Посетитель), 12 июня 2011, 21:47 [#3]:FROM ':BD.db:Trade Network' - Я не эксперт, попробуйте так!?)) |  
|   | Haenta (статус: Посетитель), 12 июня 2011, 21:53 [#4]:alexlafa: > FROM ':BD.db:Trade Network' - Я не эксперт, попробуйте так!?))
 
 Всё равно не получается((
 А кофе на клавиатуру тоже вирус пролил? |  
|   | bugmenot (статус: 3-ий класс), 12 июня 2011, 22:13 [#5]:навскидку, без лазанья в описание Accessовского диалекта: 
 
 Цитата (Haenta): SELECT ID-supplier, Supplier_name, Product_category {названия столбцов в таблице, которую будем фильтровать} ID-supplier является вычисляемым выражением, да-да, ID минус supplier. Надо либо переименовать столбец, либо справиться в документации, как их в аксессе принято окавычивать.
 
 
 Цитата (Haenta): FROM "BD.db" {название файла access} Trade Network {название таблицы в access} расширение '.db' намекает на Paradox, у которого, кстати, такой вмещает ровно 1 таблицу, а у Access по соглашению - '.mdb'. Но это не главное, далее предложение FROM указывает на таблицу 'Trade' и определяет её псевдоним, как 'Network'. Опять такая же рекомендация, либо именовать объекты БД с учётом синтаксиса SQL, либо окавычивать.
 
 В предложении WHERE скобки в этом случае можно опустить.
 
 
 Цитата (Haenta): пришлось изучать его самостоятельно Если что, есть старая, но хорошая книга авторства Мартина Грубера.
 виконання програми розпочинається з того самого мiсця, де призупинилося.
 
 |  
|   | Haenta (статус: Посетитель), 12 июня 2011, 22:28 [#6]:bugmenot: >ID-supplier является вычисляемым выражением, да-да, ID минус supplier. Надо либо переименовать столбец, либо справиться в документации, как их в аксессе принято окавычивать.
 
 Точно =-))) Как-то об этом не подумала((
 Вот так не проходит(( хотя на сайте было написано, что можно:
 SELECT ID\-supplier, Supplier_name, Product_category {названия столбцов в таблице, которую будем фильтровать}
 имена полей пробовала заключать в обратные кавычки - ` - но тоже не получилось(
 
 bugmenot:
 >расширение '.db' намекает на Paradox, у которого, кстати, такой вмещает ровно 1 таблицу, а у Access по соглашению - '.mdb'. Но это не главное, далее предложение FROM указывает на таблицу 'Trade' и определяет её псевдоним, как 'Network'. Опять такая же рекомендация, либо именовать объекты БД с учётом синтаксиса SQL, либо окавычивать.
 
 Я так понимаю расширение .db можно оставить?
 Trade Network - это уже исправлено на Warehouse
 
 bugmenot:
 >Если что, есть старая, но хорошая книга авторства Мартина Грубера.
 
 Спасибо учту на будущее, только на данный момент время уже поджимает(
 А кофе на клавиатуру тоже вирус пролил? |  
|   | bugmenot (статус: 3-ий класс), 12 июня 2011, 22:52 [#7]: Цитата (Haenta): А вот так можно записать будет:SELECT /ID-supplier
 Я только помню, что там это записывается как-то по-изврашенски, а живого аксесса нет под рукой и точно не скажу.
 
 
 Цитата (Haenta): расширение .db можно оставить? можно и оставить
 виконання програми розпочинається з того самого мiсця, де призупинилося.
 
 |  
|   | Haenta (статус: Посетитель), 12 июня 2011, 22:56 [#8]:С кавычками я разобралась Но он всё равно ругается, что не может найти файл
 Может мне прикрепить свою бд, а вы посмотрите, что я там намудрила?
 А кофе на клавиатуру тоже вирус пролил? |  
|   | Haenta (статус: Посетитель), 13 июня 2011, 12:31 [#9]:SELECT * FROM Warehouse
 WHERE (Supplier_name = :Name_param);
 
 Сделала такой запрос - всё работает =-)
 
 Теперь хочу, чтобы в этой же таблице показывались данные из второй таблицы.
 Для этого использовала подзапрос:
 
 SELECT Name_goods, Price, Number_goods
 FROM Supplier
 WHERE ID_supplie IN
 ( SELECT ID_supplier
 FROM Warehouse
 WHERE (Supplier_name = :Name_param) );
 
 Но когда Active меняю на true, пишет, что не хватает значения для одного или нескольких параметров.
 Подскажите, пожалуйста, каких значений и для каких параметров может не хватать?
 А кофе на клавиатуру тоже вирус пролил? |  16 июня 2011, 22:27: Вопрос закрыт (решение принял автор вопроса — Haenta): Вопрос больше не актуален. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |