Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Запрос со связанной таблицей


Автор: this 18.3.2006, 16:42
Делаю вот такой запрос:

Код

select o.*, c.NAME as name  from Orders as o, Customers c where o.STATE < 6 and c.ID = o.CUSTID order by o.CODE;


и после
Код

 qOrders.FieldByName('name').AsString
получаю сообщение об ошибке, что такого столбца('name') нету. Хотя в MySql query browser такой запрос возвращает нужный столбец. В чем может быть проблема?
Использую Zeos(впервые), MySql.

Автор: Vit 18.3.2006, 19:00
А query открыта?

Автор: DeadSoul 18.3.2006, 19:02
Цитата(this @ 18.3.2006, 16:42 Найти цитируемый пост)
from Orders as o

Разве тут слово AS нужно?

Автор: this 18.3.2006, 20:49
Цитата(Vit @ 18.3.2006, 19:00)
А query открыта?

Да, и возвращает все столбцы из "orders", но связанный столбец из "customers" нет.

Автор: ADAM83 23.3.2006, 10:30
this,
Цитата

получаю сообщение об ошибке, что такого столбца('name') нету. Хотя в MySql query browser такой запрос возвращает нужный столбец. В чем может быть проблема?

Зачем тебе псевдоимя столбца? используй как есть. А не пробовал написать так
Код

var s:string;
...
qOrders.Close;
qOrders.SQL.Clear;
qOrders.SQL.Add('select o.*, c.NAME as name  from Orders o LEFT OUTER JOIN Customers c '+
'ON c.ID = o.CUSTID AND o.STATE < 6 order by o.CODE');
qOrders.Open;
s:=qOrders.FieldByName('NAME').AsString;


Автор: Pakshin A. S. 23.3.2006, 10:40
Цитата(this @ 18.3.2006, 16:42 Найти цитируемый пост)
В чем может быть проблема?


Если говорит, что столбца нет, но информация выводится, значит у него есть индекс... Посему почему бы нам не использовать вот это:
Код

 ShowMessage(Query1.Fields[<индекс, начиная с нуля у первого столбца>].AsString);

Добавлено @ 10:42
Через
Код

 Memo1.Lines.Clear;
 for i:=0 to Query1.FieldCount-1 do
  Memo1.Lines.Add(Query1.Fields[i].FieldName);

Мы получим (скорее всего) все имена полей в Мемо, поэтому мы сможем сравнить посимвольно то, что есть в Query и то, что мы пытаемся всунуть в FieldByName()

Автор: Dimich 24.3.2006, 08:24
Zeos не юзал, но есть предположение. Посмотри qOrders.Fields (или что-то подобное должно быть). Наверняка там перечислены какие либо поля, но нет "NAMES". Или очисти его вовсе или добавь туда нужные поля (NAMES).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)