FIBQuery возвращает только одну запись

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

antonie
Сообщения: 9
Зарегистрирован: 12 дек 2007, 09:37

FIBQuery возвращает только одну запись

Сообщение antonie » 12 дек 2007, 10:00

Доброго времени суток. Я использую FIBPlus совсем недавно, поэтому возможно вопрос покажется кому-то из разряда элементарных, но все таки.
В клиентском приложении (Delphi7) для работы с данными использую FIBQuery, так вот при запросе select в FIBQuery возвращается только одна запись, причем первая в базе удовлетворяющая параметрам запроса.
Компоненты свызаны так FIBDataBase-FIBTransaction-FIBQuery.
В чем может быть причина, может параметры компонентов неправильно настроены. Заранее спасибо.

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Re: FIBQuery возвращает только одну запись

Сообщение stix-s » 12 дек 2007, 11:01

antonie писал(а):Доброго времени суток. Я использую FIBPlus совсем недавно, поэтому возможно вопрос покажется кому-то из разряда элементарных, но все таки.
В клиентском приложении (Delphi7) для работы с данными использую FIBQuery, так вот при запросе select в FIBQuery возвращается только одна запись, причем первая в базе удовлетворяющая параметрам запроса.
Компоненты свызаны так FIBDataBase-FIBTransaction-FIBQuery.
В чем может быть причина, может параметры компонентов неправильно настроены. Заранее спасибо.
Вообще-то у FIBQuery нет локального кэша - следовательно .....

antonie
Сообщения: 9
Зарегистрирован: 12 дек 2007, 09:37

Сообщение antonie » 12 дек 2007, 11:08

Хм. Но в документации написан пример:

var sql: TpFIBQuery;
sql := TpFIBQuery.Create(nil);
with sql do
try
Database := db;
Transaction := db.DefaultTransaction;
SQL.Text := 'select first_name, last_name from customer';
ExecQuery;
while not Eof do begin.....

следовательно FIBQuery выбирает не одну запись, а все требуемые в запросе.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 12 дек 2007, 11:44

Уж не посредством ли RecordsCount ты смотришь "число записей"?

antonie
Сообщения: 9
Зарегистрирован: 12 дек 2007, 09:37

Сообщение antonie » 12 дек 2007, 11:49

WildSery писал(а):Уж не посредством ли RecordsCount ты смотришь "число записей"?
Им самым, а что есть какие-то косяки?

antonie
Сообщения: 9
Зарегистрирован: 12 дек 2007, 09:37

Сообщение antonie » 12 дек 2007, 11:58

Ага сам теперь понял, RecorCount показывает 1, если записи есть и 0 если их нет вообще. По крайней мере получается так!

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 12 дек 2007, 12:57

Ох-ох-ох.
RecordCount показывает число "зафетченных" записей.
Открыв выборку, ты получаешь только одну запись. Потому что никто не знает, сколько их будет. По мере чтения дальше их число увеличивается. И полное число будет, когда прочитаешь всё, или выполнишь команду FetchAll.

antonie
Сообщения: 9
Зарегистрирован: 12 дек 2007, 09:37

Сообщение antonie » 12 дек 2007, 14:37

Тонкости! :о) WildSery, спасибо.

_Mad_
Сообщения: 10
Зарегистрирован: 12 окт 2006, 16:15

Сообщение _Mad_ » 12 дек 2007, 16:12

Отсюда вывод пользоваться для выборки FBDataset, а FBQuery использовать на запись.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 12 дек 2007, 17:12

_Mad_ писал(а):Отсюда вывод пользоваться для выборки FBDataset, а FBQuery использовать на запись.
Для какой такой "выборки"?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 12 дек 2007, 19:27

Отсюда вывод пользоваться для выборки
отсюда вывод - не парить мозг, читать
www.ibase.ru/devinfo/ibx.htm
и проводить параллели с FIBPlus.

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Сообщение stix-s » 13 дек 2007, 08:13

kdv писал(а):
Отсюда вывод пользоваться для выборки
отсюда вывод - не парить мозг, читать
www.ibase.ru/devinfo/ibx.htm
и проводить параллели с FIBPlus.
ммм, не все так параллельно
в FIB+ аналога IBQuery как такового нет (да собственно и нафиг он)
а IBSQL~FIBQuery
это иногда с толку сбивало изначально

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 13 дек 2007, 08:50

а IBSQL~FIBQuery
и чем он именно не равен? почти одно и то же.

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Сообщение stix-s » 13 дек 2007, 09:50

kdv писал(а):
а IBSQL~FIBQuery
и чем он именно не равен? почти одно и то же.
тем, что почти
я IBX не пользую, посему точно утверждать не возьмусь :)

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 13 дек 2007, 17:58

я IBX не пользую, посему точно утверждать не возьмусь
давай будем исходить из факта, что IBX и FIBPlus, оба, базируются на коде FreeIBComponents. В котором были
IBDatabase
IBTransaction
IBDataSet
IBSQL

последний был переиначен в FIBQuery. И сильно отличаться от IBX.IBSQL отличаться вряд-ли может. Я могу сравнить, конечно, но сомневаюсь что Devrace в нем поменяли принцип действия.

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Сообщение stix-s » 14 дек 2007, 07:12

kdv писал(а):
я IBX не пользую, посему точно утверждать не возьмусь
давай будем исходить из факта, что IBX и FIBPlus, оба, базируются на коде FreeIBComponents. В котором были
IBDatabase
IBTransaction
IBDataSet
IBSQL

последний был переиначен в FIBQuery. И сильно отличаться от IBX.IBSQL отличаться вряд-ли может. Я могу сравнить, конечно, но сомневаюсь что Devrace в нем поменяли принцип действия.
угу, с исходной посылкой согласен, но развивались IBX и FIB+ потом независимо, причем FIB+ гораздо более динамично
впрочем, ладно, если в IBSQL есть пакетная обработка типа:
FIBQuery методы:
BatchInputRawFile, BatchOutputRawFile,BatchToQuery..........
тогда я сдаюсь :)
вообще смысл моего поста по поводу отличий IBX и FIB+ был в том, что разница между этими наборами все же присутствует и не всегда их пожно сопоставить один к одному

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 14 дек 2007, 09:57

если в IBSQL есть пакетная обработка типа
типа, типа... опа. (с).
ЕСТЬ. Она и БЫЛА В FreeIBComponents! Просто некоторые даже не хотят просматривать www.ibase.ru/devinfo/ibx.htm

вот чего ты начинаешь тут фигню типа "не читал, но осуждаю"?
разница между этими наборами все же присутствует и не всегда их пожно сопоставить один к одному
присутствует, но базовая функциональность у них идентична по определению. точно так же как между последними версиями InterBase и Firebird.

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Сообщение stix-s » 14 дек 2007, 10:18

kdv писал(а): типа, типа... опа. (с).
ЕСТЬ. Она и БЫЛА В FreeIBComponents! Просто некоторые даже не хотят просматривать www.ibase.ru/devinfo/ibx.htm


вот чего ты начинаешь тут фигню типа "не читал, но осуждаю"?
Да не осуждаю я, с чего бы вдруг?
Ушел я на FIB+ и дела мне нет, что там с IBX происходит.
Про пакетную обработку-да, была, я имел в виду именно между двумя кверями и в файл
kdv писал(а):
разница между этими наборами все же присутствует и не всегда их пожно сопоставить один к одному
присутствует, но базовая функциональность у них идентична по определению. точно так же как между последними версиями InterBase и Firebird.
Конечно, но не всегда можно просто тупо заменить компонент из IBX компонентом из FIB+ и наоборот, я только в данном ключе.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 14 дек 2007, 12:10

stix-s писал(а):Про пакетную обработку-да, была, я имел в виду именно между двумя кверями и в файл
А мне у FIBQuery нравится ExecWP / ExecWPS.
Очень удобная штукенция.

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Сообщение stix-s » 14 дек 2007, 12:33

WildSery писал(а):
stix-s писал(а):Про пакетную обработку-да, была, я имел в виду именно между двумя кверями и в файл
А мне у FIBQuery нравится ExecWP / ExecWPS.
Очень удобная штукенция.
+1

Ответить