|
Вопрос # 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_category
- FROM "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): Вопрос больше не актуален.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|