Имя: Пароль:
1C
1С v8
Работа с Firebird
0 Быдло замкадное
 
26.01.12
09:27
Всем доброго утра. Есть подключение к базе Firebird и считывание данных, потом обход циклом. Подскажите как можно узнать количество строк в таблице которая от Firebird пришла???

СтрокаПодключения = "DRIVER=Firebird/InterBase(r) driver;UID=SYSDBA;PWD=masterkey;DBNAME=sms89006:c:\SSA\SKD\codos_db\CODOS.GDB";//Рабочая
Connection = Новый COMObject("ADODB.Connection");
Connection.Open(СтрокаПодключения);
       
Command = Новый COMObject("ADODB.Command");
Command.ActiveConnection = Connection;
       
Command.CommandText = "ТЕКСТ ЗАПРОСА ЛЯЛЯЛЯ";
       
Command.CommandType = 1;
RecordSet = Новый COMObject("ADODB.RecordSet");
RecordSet = Command.Execute();

// Перебор данных
Если не RecordSet.EOF() = 1 тогда
RecordSet.MoveFirst();                
Пока RecordSet.EOF() = 0 Цикл
1 Быдло замкадное
 
26.01.12
09:28
Вот в этом RecordSet можно узнать количество строк..?
2 Ёпрст
 
26.01.12
09:32
RecordCount
3 Ненавижу 1С
 
гуру
26.01.12
09:37
вчера хранимую процедуру на Firebird написал - помнят еще руки! ))
расчет прибыли от продаж при списывании себестоимости по ФИФО
4 Быдло замкадное
 
26.01.12
09:43
(2) RecordSet.RecordCount() всегда -1 возвращает
5 Быдло замкадное
 
26.01.12
09:47
в поиске нашел:

Намудрили
Надо чтобы курсор был статический
и тогда RecordCount будет возвращать количество записей
Connection = Новый COMОбъект ("ADODB.Connection");    
Connection.CursorLocation= 3;
6 Быдло замкадное
 
26.01.12
09:47
Надеюсь на перебор строк этот CursorLocation не повлияет
7 Стальная Крыса
 
26.01.12
10:06
для простоты я делаю MoveLast(), а потом обратно MoveFirst()   :)
зы. работает в любых местах
8 Torquader
 
26.01.12
17:26
(4) Всё зависит от режима запроса, если запрос исполняется на сервере и в режиме Forward Only, то ни количества строк ни возврата назад (как в (7)) не получится.
P.S. а вообще-то, количество элементов получают через SELECT COUNT(*), но FireBird устроен так, что количество в процессе работы может поменяться (сторонняя транзакция завершилась и в выборку добавляется строка).