Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не выполняется SQL - запрос в связной таблице 
V
    Опции темы
ivanfr
Дата 7.8.2012, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 1.4.2009

Репутация: нет
Всего: нет



При формировании запроса(Access)  к таблице Table_of_key_media с TempDataFromMemory[3] содержимым, выводит пустой результат,
хотя данные в таблице есть.

Код

DataModule1.ADOQuery1.SQL.Clear;
DataModule1.ADOQuery1.SQL.ADD('SELECT * FROM Table_of_key_media WHERE Type_Carrier LIKE "%'+TempDataFromMemory[3]+'%"');
DataModule1.ADOQuery1.Open;

Помогите разобраться, почему не работает вышеприведенный код?

таблицы связаны след. образом образом
user posted image
В делфи таблицы тоже связаны и ДБгрид1,2,3 при переключении выводит корректные данные.

Если, например, обращаюсь  так - 
Код

DataModule1.ADOQuery1.SQL.Clear;
DataModule1.ADOQuery1.SQL.ADD('SELECT * FROM persona_stor WHERE tabel_nomer LIKE "%'+TempDataFromMemory[3]+'%"');
DataModule1.ADOQuery1.Open;
 
то все работает.


Это сообщение отредактировал(а) ivanfr - 8.8.2012, 05:50
PM MAIL   Вверх
kami
Дата 7.8.2012, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 3
Всего: 72



Нет строк, удовлетворяющих условию Like ?
PM MAIL WWW   Вверх
ivanfr
Дата 7.8.2012, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 1.4.2009

Репутация: нет
Всего: нет



Ага. А в базе смотрю они есть.
PM MAIL   Вверх
kami
Дата 7.8.2012, 14:03 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 3
Всего: 72



Чудес не бывает smile Почти  smile 

Прямой запрос в Access-е, с подстановкой вместо TempDataFromMemory[3] его значения, выдаст результат?

Добавлено через 4 минуты и 57 секунд
Цитата(ivanfr @  7.8.2012,  12:14 Найти цитируемый пост)
В делфи таблицы тоже связаны

И кстати, может не ADOQuery1, а ADOQuery2 ? Чтобы не нарушать связи по полям?

Это сообщение отредактировал(а) kami - 7.8.2012, 14:03
PM MAIL WWW   Вверх
baldina
Дата 7.8.2012, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: нет
Всего: 101



БД mssql или access? во втором случае спец-символом "любой" является  * а не %
PM MAIL   Вверх
Данкинг
Дата 7.8.2012, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(baldina @  7.8.2012,  15:10 Найти цитируемый пост)
во втором случае спец-символом "любой" является  * а не % 

Кто сказал?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
baldina
Дата 7.8.2012, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: нет
Всего: 101



Цитата(Данкинг @  7.8.2012,  14:35 Найти цитируемый пост)
Кто сказал? 

документация

Добавлено через 54 секунды
недоверчивые могут проверить опытным путем smile
PM MAIL   Вверх
kami
Дата 7.8.2012, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 3
Всего: 72



Цитата(baldina @  7.8.2012,  15:15 Найти цитируемый пост)
недоверчивые могут проверить опытным путем

Проверяли smile

Цитата

Важно заметить, что подстановочные знаки процентов (%) и подчеркивания (_) языка ANSI SQL доступны только при использовании с ядром Microsoft Jet версии 4.X и с поставщиком Microsoft OLE DB для Jet. При использовании с приложением Microsoft Access или объектами DAO они будут считаться литералами.

Источник
К сожалению не описано, но верно и обратное - символ '*' действует только в Access, а при работе через ADO считается литералом.
PM MAIL WWW   Вверх
baldina
Дата 7.8.2012, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: нет
Всего: 101



Цитата(kami @  7.8.2012,  15:27 Найти цитируемый пост)
но верно и обратное - символ '*' действует только в Access, а при работе через ADO считается литералом

буду знать.. но ты прав, чудес не бывает
PM MAIL   Вверх
Данкинг
Дата 7.8.2012, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Вот у меня работающий код:
Код

zap:='select disk,info from spisok where info like "%'+ss+'%" or info like "%'+sss+'%" or info like "%'+sss+'%" order by info';



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
ivanfr
Дата 8.8.2012, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 1.4.2009

Репутация: нет
Всего: нет



Попробовал по серийному номеру ключ 
Код

ADOQuery1.SQL.ADD('SELECT * FROM Table_of_key_media WHERE Type_Carrier LIKE "%'+'e00630FGE'+'%"');


Результат, пустой. Поля рисунка соответсвуют таблице бд после запроса, но данных в ней нет.

user posted image

Данные в БД access
user posted image

Все равно не работает

Это сообщение отредактировал(а) ivanfr - 8.8.2012, 09:35
PM MAIL   Вверх
baldina
Дата 8.8.2012, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: нет
Всего: 101



Цитата(Данкинг @  7.8.2012,  19:26 Найти цитируемый пост)
info like "%'+sss+'%" or info like "%'+sss+'%"

для надежности?

Цитата(ivanfr @  8.8.2012,  09:06 Найти цитируемый пост)
Результат, пустой Поля соответсвуют таблице

моя твоя понимайтен

Цитата(ivanfr @  8.8.2012,  09:06 Найти цитируемый пост)
Type_Carrier LIKE "%'+'e00630FGE'+'%"'

судя по скриншоту ему лайк Serial_Number...

PM MAIL   Вверх
ivanfr
Дата 8.8.2012, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 1.4.2009

Репутация: нет
Всего: нет



Цитата


Цитата(Данкинг @  7.8.2012,  19:26 )
info like "%'+sss+'%" or info like "%'+sss+'%"

or - Так делать нельзя.
Запрос делаю по 7 полям, если они совпадают, то я считаю, что в БД уже есть такая запись, следовательно, вносить ее повторно не нужно.

Цитата

Цитата(ivanfr @  8.8.2012,  09:06 )
Type_Carrier LIKE "%'+'e00630FGE'+'%"'
судя по скриншоту ему лайк Serial_Number...

Не сообразил, что хочешь сказать?
Код

   DataModule1.ADOQuery1.SQL.Clear;
      DataModule1.ADOQuery1.SQL.ADD('SELECT * FROM Table_of_key_media WHERE Type_Carrier LIKE "%'+ TempDataFromMemory[2]+
                                     '%" and Serial_Number_Carrier LIKE "%'+ TempDataFromMemory[3]+
                                     '%" and Issued_Keys LIKE "%'+TempDataFromMemory[5]+
                                     '%" and Name_Of_The_Holder_Of_The_Keys LIKE "%'+ TempDataFromMemory[6]+
                                     '%" and Employee_Number_Key_Holder LIKE "%'+ TempDataFromMemory[7]+
                                     '%" and Position_Or_Location_Key LIKE "%'+ TempDataFromMemory[8]+
                                     '%" and Workstation_Installation_Inventory_Number LIKE "%'+ TempDataFromMemory[9]+
                                     '%" and Type_Key LIKE "%'+ TempDataFromMemory[11]+
                                     '%" and Date_Of_Issue_Of_Key_Media LIKE "%'+ TempDataFromMemory[12]+
                                     '%" and Date_of_delivery_of_key LIKE "%'+ TempDataFromMemory[14]+
                                     '%" and Date_Of_Last_Inspection LIKE "%'+ TempDataFromMemory[15]+
                                     '%" and Integrity_Of_The_Sealing LIKE "%'+ TempDataFromMemory[16]+
                                     '%" and Order_Of_The_Key_Storage_Medium LIKE "%'+ TempDataFromMemory[17]+
                                     '%" and Comment LIKE "%'+TempDataFromMemory[18]+'%"');
     DataModule1.ADOQuery1.Open;

вот сообсвтвенно сам запрос который выводит пустое значение.


Это сообщение отредактировал(а) ivanfr - 8.8.2012, 09:50
PM MAIL   Вверх
baldina
Дата 8.8.2012, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: нет
Всего: 101



на скриншоте вижу кусочек данных в поле Serial_Number - 'e00...', в поле Type_Carrier - 'eToken RPC'
а в твоем запросе Type_Carrier сравнивается с e00630FGE

ЗЫ:ты бы нормально показал свои данные
PM MAIL   Вверх
ivanfr
Дата 8.8.2012, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 1.4.2009

Репутация: нет
Всего: нет



Ответить там в коде ошибка. 
Код

ADOQuery1.SQL.ADD('SELECT * FROM Table_of_key_media WHERE Serial_Number_Carrier  LIKE "%'+'e00630FGE'+'%"');
 Вот так данные выбираются.

Данные не там искал. 
Сейчас поправил заработало, а вот основном коде, который приведен выше не фурычит.

Смотрю в  Watch list данные соответсвют, тому что находится в таблице в столбцах.

Это сообщение отредактировал(а) ivanfr - 8.8.2012, 09:56
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0988 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.