Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использоваяние в выражении запроса переменной. Выдаётся ошибка. 
:(
    Опции темы
Hatigatsu
Дата 5.12.2006, 02:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 11.10.2006
Где: г. Н.Новгород

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



Добрый вечер. Подскажите, пожалуйсто, как в выражении запроса использовать переменную, которая при каких-либо условиях должна меняться.  
В своей программе использовал переменную "Ffild" типа string (в программе кавычек не было разумеется) для указания поля таблицы БД и при помещении её (переменную "Ffild") в выражение запроса
Код

ADOQuery1.SQL.Add('select DISTINCT RusToFromEng."'+Ffild+'" from RusToFromEng');

выдаётся сообщение:
Project Rus_Eng_Jap.exe raised exception class EOleException with message
'Недопустимое использование '.', '!' или '()'. в выражении запроса 'RusToFromEng.""".Process stoped.
Пробовал 
Код

ADOQuery1.SQL.Add('select DISTINCT RusToFromEng.'+Ffild+ ' from RusToFromEng');

ничего не получается. Научите "Лаптя" как правильно писа'ть.

Это сообщение отредактировал(а) Hatigatsu - 5.12.2006, 02:36
PM MAIL   Вверх
Fedia
Дата 5.12.2006, 02:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

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



Если компоненты доступа к данным настроены правильно, таблица RusToFromEng существует, и поле, с названием, содержащемся в переменной Ffild находиться в этой таблице, то должен сработать запрос:
Код

ADOQuery1.SQL.Add('select DISTINCT '+Ffild+' from RusToFromEng');

PS. этот вопрос относиться к разделу БД.


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
Albinos_x
Дата 5.12.2006, 02:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



Цитата(Hatigatsu @  5.12.2006,  02:30 Найти цитируемый пост)
'select DISTINCT RusToFromEng.'

Цитата(Hatigatsu @  5.12.2006,  02:30 Найти цитируемый пост)
'Недопустимое использование '.', '!' или '()'. в выражении запроса 'RusToFromEng.""".Process stoped.

ТОчку пробовал удалять?




--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Fedia
Дата 5.12.2006, 03:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

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



Цитата(Albinos_x @  5.12.2006,  02:59 Найти цитируемый пост)
ТОчку пробовал удалять?

Не, без точки точно работать не должно.


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
Hatigatsu
Дата 5.12.2006, 04:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 11.10.2006
Где: г. Н.Новгород

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



Fedia, Вот вот, без точки не работает.
Есть пример, где используется переменная str и всё работает.

Код

     ADOQuery2.SQL.Add('select RusToFromEng.EnglishW from RusToFromEng');
     ADOQuery2.SQL.Add('WHERE (RussianW = "'+ str +'")');

Такую же схему использую добавляя в запрос переменную "'+ Ffild +'" и выходит ошибка.
Я с SQL недавно начал работать.

Пришлось в программе везде If then наставить, мол:
Код

    if Ffild='RussianW' then ADOQuery1.SQL.Add('select DISTINCT RusToFromEng.RussianW from RusToFromEng');
    if Ffild='EnglishW' then ADOQuery1.SQL.Add('select DISTINCT RusToFromEng.EnglishW from RusToFromEng');


Это сообщение отредактировал(а) Hatigatsu - 5.12.2006, 04:31
PM MAIL   Вверх
Fedia
Дата 5.12.2006, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

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



Раз код 
Код

ADOQuery1.SQL.Add('select DISTINCT RusToFromEng.'+Ffild+ ' from RusToFromEng');
 не работает, а 
Код

    if Ffild='RussianW' then ADOQuery1.SQL.Add('select DISTINCT RusToFromEng.RussianW from RusToFromEng');
    if Ffild='EnglishW' then ADOQuery1.SQL.Add('select DISTINCT RusToFromEng.EnglishW from RusToFromEng');
 работает, то возникает подозрение, что переменная Ffild принимает значения, отличные от наименований полей таблицы RusToFromEng.

Это сообщение отредактировал(а) Fedia - 5.12.2006, 07:38


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

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


 




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


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

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