Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: TQuery && Field not found  (Прочитано 10410 раз)
0 Пользователей и 1 Гость смотрят эту тему.
OxCom
Интересующийся

ua
Offline Offline
Пол: Мужской
Неуч


« : 25-05-2010 10:38 » 

Доброго времени суток. Столкнулся с такой проблемой:
Есть компонент TQuery через него делаю запрос в БД. Запрос осуществляется и все замечательно работает до момента, когда необходимо обработать полученную информацию: достать значения из полей. Список полей приходит тот, что и ожидался. А вот после запроса информации из Query1 вылетает сообщение об ошибке: Field "блаблабла" not found. (Вместо "блаблабла" название поля.)


Код:
Form1->Query1->SQL->Clear();
AnsiString asQ = "SELECT `name` as `a_name`, `pwd` FROM `users` WHERE `name` = ";
asQ = asQ + "'" + Form1->Edit1->Text + "'";
Form1->Query1->SQL->Add(asQ);
Form1->Query1->Open();
Form1->Query1->First();
if (!Form1->Query1->Eof)
{
Form1->Query1->GetFieldNames(ComboBox1->Items); // список полей, что получили
asQ = Form1->Query1->FieldByName(ComboBox1->Items->Strings[0])->AsAnsiString; //инфа из первого поля
...
}
Form1->Query1->Close();
Form1->Query1->SQL->Clear();

Помогите решить проблему описанную выше. Спасибо за внимание.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 25-05-2010 10:40 » 

OxCom, имя поля должно в точности совпадать с именем, указанном в запросе. Никаких флуктуаций регистра и лишних пробелов.

У тебя имена столбцов: "a_name" и "pwd". Включай отладчик и пошагово смотри, что и где.
« Последнее редактирование: 25-05-2010 10:44 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
OxCom
Интересующийся

ua
Offline Offline
Пол: Мужской
Неуч


« Ответ #2 : 25-05-2010 10:45 » new

RXL в том то и дело, что совпадает вплоть до регистра.
Сейчас попробовал так:
Код:
asQ = Form1->Query1->Fields->FieldByNumber(1)->AsAnsiString;
Выдает: Access violation ad address 00402A0F in module "Exl.exe". Read of address 00000000.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 25-05-2010 10:48 » 

Попробуй убрать строку с GetFieldNames и прогони с константным именем.

Кстати, какая версия BCB?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
OxCom
Интересующийся

ua
Offline Offline
Пол: Мужской
Неуч


« Ответ #4 : 25-05-2010 10:57 » 

Пользую CodeGear RAD Studio 2009
Цитата
Попробуй убрать строку с GetFieldNames и прогони с константным именем.
Тоже самое.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 25-05-2010 11:01 » 

У меня BCB6 - кто знает, насколько там изменилось...

Такой вариант: попробуй перейти на ADO - с ним проблем не замечено и интерфейс проще:

Код:
value = adoquery->FieldValues["fieldName"]
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
OxCom
Интересующийся

ua
Offline Offline
Пол: Мужской
Неуч


« Ответ #6 : 25-05-2010 11:11 » 

Хех... видимо они что-то там намутили Жаль печально. ADO работает нормально
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines