Страница 1 из 2
FIBQuery возвращает только одну запись
Добавлено: 12 дек 2007, 10:00
antonie
Доброго времени суток. Я использую FIBPlus совсем недавно, поэтому возможно вопрос покажется кому-то из разряда элементарных, но все таки.
В клиентском приложении (Delphi7) для работы с данными использую FIBQuery, так вот при запросе select в FIBQuery возвращается только одна запись, причем первая в базе удовлетворяющая параметрам запроса.
Компоненты свызаны так FIBDataBase-FIBTransaction-FIBQuery.
В чем может быть причина, может параметры компонентов неправильно настроены. Заранее спасибо.
Re: FIBQuery возвращает только одну запись
Добавлено: 12 дек 2007, 11:01
stix-s
antonie писал(а):Доброго времени суток. Я использую FIBPlus совсем недавно, поэтому возможно вопрос покажется кому-то из разряда элементарных, но все таки.
В клиентском приложении (Delphi7) для работы с данными использую FIBQuery, так вот при запросе select в FIBQuery возвращается только одна запись, причем первая в базе удовлетворяющая параметрам запроса.
Компоненты свызаны так FIBDataBase-FIBTransaction-FIBQuery.
В чем может быть причина, может параметры компонентов неправильно настроены. Заранее спасибо.
Вообще-то у FIBQuery нет локального кэша - следовательно .....
Добавлено: 12 дек 2007, 11:08
antonie
Хм. Но в документации написан пример:
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 выбирает не одну запись, а все требуемые в запросе.
Добавлено: 12 дек 2007, 11:44
WildSery
Уж не посредством ли RecordsCount ты смотришь "число записей"?
Добавлено: 12 дек 2007, 11:49
antonie
WildSery писал(а):Уж не посредством ли RecordsCount ты смотришь "число записей"?
Им самым, а что есть какие-то косяки?
Добавлено: 12 дек 2007, 11:58
antonie
Ага сам теперь понял, RecorCount показывает 1, если записи есть и 0 если их нет вообще. По крайней мере получается так!
Добавлено: 12 дек 2007, 12:57
WildSery
Ох-ох-ох.
RecordCount показывает число "зафетченных" записей.
Открыв выборку, ты получаешь только одну запись. Потому что никто не знает, сколько их будет. По мере чтения дальше их число увеличивается. И полное число будет, когда прочитаешь всё, или выполнишь команду FetchAll.
Добавлено: 12 дек 2007, 14:37
antonie
Тонкости! :о) WildSery, спасибо.
Добавлено: 12 дек 2007, 16:12
_Mad_
Отсюда вывод пользоваться для выборки FBDataset, а FBQuery использовать на запись.
Добавлено: 12 дек 2007, 17:12
WildSery
_Mad_ писал(а):Отсюда вывод пользоваться для выборки FBDataset, а FBQuery использовать на запись.
Для какой такой "выборки"?
Добавлено: 12 дек 2007, 19:27
kdv
Отсюда вывод пользоваться для выборки
отсюда вывод - не парить мозг, читать
www.ibase.ru/devinfo/ibx.htm
и проводить параллели с FIBPlus.
Добавлено: 13 дек 2007, 08:13
stix-s
kdv писал(а):Отсюда вывод пользоваться для выборки
отсюда вывод - не парить мозг, читать
www.ibase.ru/devinfo/ibx.htm
и проводить параллели с FIBPlus.
ммм, не все так параллельно
в FIB+ аналога IBQuery как такового нет (да собственно и нафиг он)
а IBSQL~FIBQuery
это иногда с толку сбивало изначально
Добавлено: 13 дек 2007, 08:50
kdv
а IBSQL~FIBQuery
и чем он именно не равен? почти одно и то же.
Добавлено: 13 дек 2007, 09:50
stix-s
kdv писал(а):а IBSQL~FIBQuery
и чем он именно не равен? почти одно и то же.
тем, что
почти
я IBX не пользую, посему точно утверждать не возьмусь

Добавлено: 13 дек 2007, 17:58
kdv
я IBX не пользую, посему точно утверждать не возьмусь
давай будем исходить из факта, что IBX и FIBPlus, оба, базируются на коде FreeIBComponents. В котором были
IBDatabase
IBTransaction
IBDataSet
IBSQL
последний был переиначен в FIBQuery. И сильно отличаться от IBX.IBSQL отличаться вряд-ли может. Я могу сравнить, конечно, но сомневаюсь что Devrace в нем поменяли принцип действия.
Добавлено: 14 дек 2007, 07:12
stix-s
kdv писал(а):я IBX не пользую, посему точно утверждать не возьмусь
давай будем исходить из факта, что IBX и FIBPlus, оба, базируются на коде FreeIBComponents. В котором были
IBDatabase
IBTransaction
IBDataSet
IBSQL
последний был переиначен в FIBQuery. И сильно отличаться от IBX.IBSQL отличаться вряд-ли может. Я могу сравнить, конечно, но сомневаюсь что Devrace в нем поменяли принцип действия.
угу, с исходной посылкой согласен, но развивались IBX и FIB+ потом независимо, причем FIB+ гораздо более динамично
впрочем, ладно, если в IBSQL есть пакетная обработка типа:
FIBQuery методы:
BatchInputRawFile, BatchOutputRawFile,BatchToQuery..........
тогда я сдаюсь

вообще смысл моего поста по поводу отличий IBX и FIB+ был в том, что разница между этими наборами все же присутствует и не всегда их пожно сопоставить один к одному
Добавлено: 14 дек 2007, 09:57
kdv
если в IBSQL есть пакетная обработка типа
типа, типа... опа. (с).
ЕСТЬ. Она и БЫЛА В FreeIBComponents! Просто некоторые даже не хотят просматривать
www.ibase.ru/devinfo/ibx.htm
вот чего ты начинаешь тут фигню типа "не читал, но осуждаю"?
разница между этими наборами все же присутствует и не всегда их пожно сопоставить один к одному
присутствует, но базовая функциональность у них идентична по определению. точно так же как между последними версиями InterBase и Firebird.
Добавлено: 14 дек 2007, 10:18
stix-s
kdv писал(а):
типа, типа... опа. (с).
ЕСТЬ. Она и БЫЛА В FreeIBComponents! Просто некоторые даже не хотят просматривать
www.ibase.ru/devinfo/ibx.htm
вот чего ты начинаешь тут фигню типа "не читал, но осуждаю"?
Да не осуждаю я, с чего бы вдруг?
Ушел я на FIB+ и дела мне нет, что там с IBX происходит.
Про пакетную обработку-да, была, я имел в виду именно между двумя кверями и в файл
kdv писал(а):
разница между этими наборами все же присутствует и не всегда их пожно сопоставить один к одному
присутствует, но базовая функциональность у них идентична по определению. точно так же как между последними версиями InterBase и Firebird.
Конечно, но не всегда можно просто тупо заменить компонент из IBX компонентом из FIB+ и наоборот, я только в данном ключе.
Добавлено: 14 дек 2007, 12:10
WildSery
stix-s писал(а):Про пакетную обработку-да, была, я имел в виду именно между двумя кверями и в файл
А мне у FIBQuery нравится ExecWP / ExecWPS.
Очень удобная штукенция.
Добавлено: 14 дек 2007, 12:33
stix-s
WildSery писал(а):stix-s писал(а):Про пакетную обработку-да, была, я имел в виду именно между двумя кверями и в файл
А мне у FIBQuery нравится ExecWP / ExecWPS.
Очень удобная штукенция.
+1