Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];

Вниз

Счетчик таблицы в IB   Найти похожие ветки 

 
Piero   (2005-08-26 10:47) [0]

t : TIBTable

Не могу узнать число записей в таблице - t.RecordCount - почему-то не работае, приходиться действовать так:

result:=0;
with t do
 begin
  open;active:=true;first;
  while not EOF do
   begin
    result := result+1;
    next;
   end;
  active:=false;close;
 end;

есть ли способ попроще, спасибо


 
Desdechado ©   (2005-08-26 10:55) [1]

1. Не используй Table для работы с IB. Это устаревший неэффективный путь. Почему - см. ibase.ru
2. Работай с IB через запросы. Количество записей определяется SELECT Count(*) FROM Tab


 
P.N.P. ©   (2005-08-26 10:55) [2]

TIBTable -фтопку!
Используй TIBDataSet или TIBQuery. Это вопервых.
Во вторых сделай датасету Last,First
или после открытия FetchAll и RecordCount
вернет нормальное значение.


 
dolmat   (2005-08-26 11:03) [3]

open; это и есть active:=true; оставь что-нить одно


 
Piero   (2005-08-26 11:28) [4]

Спасибо


 
Piero   (2005-08-26 17:06) [5]

IBQuery1.sql.text:="SELECT Count(*) FROM T_Obj"

запрос сделал, работает нормально, а как получить значение в Delphi? т.е. непосредственно количество записей


 
Zacho ©   (2005-08-26 17:21) [6]

Piero   (26.08.05 17:06) [5]

1. Не стоит использовать TIBQuery вообще. А именно для таких запросов самое подходящее - TIBSQL.
2. См. help по компоненту. Там всё есть.
Например, в случае с TIBQuery : MyVar:=IBQuery1.Fields[0].AsInteger;


 
P.N.P. ©   (2005-08-26 18:39) [7]

>Zacho ©   (26.08.05 17:21) [6]
>1. Не стоит использовать TIBQuery вообще.
Это почему это вдруг??


 
Zacho ©   (2005-08-26 19:18) [8]

P.N.P. ©   (26.08.05 18:39) [7]

А зачем это использовать ? Вообще, моё предубеждение к TIBQuery и TIBTable скорее субъективно, чем объективно, так что извеняюсь, что не добавил imho ...

Но:
Во-первых, (хотел привести текст из хелпа, но не нашёл, хотя точно помню, что это было в хелпе к IBX, возможно это было в D6) TIBTable и TIBQuery предназначены для облегчения перевода проектов с BDE на IBX или в случае, если в дальнейшем планируется перевод на BDE-like компоненты.

Во-вторых: для всех случаев вполне достаточно TIBDataSet и TIBSQL.

В-третьих: Нафига использовать два компонента (TIBQuery и TIBUpdateSQL) вместо одного TIBDataSet ?

В 4-х: Нафиг оверхэд при использовании TIBQuery, когда для задачи достаточно TIBSQL ?

В 5-х: Честно скажу, не знаю как в современных версиях IBX, но в IBX 6.0 при использовании TIBQuery+TIBUpdateSQL невозможно было использовать ХП в ModifySQL, InsertSQL и DeleteSQL. А вот в TIBDataSet - без проблем.

В 6-х: (подтверждать - ломы, так что можете считать недостоверным). Неоднократно на этом форуме проблемы решались тем, что вместо TIBQuery вопрошающий применял TIBDataSet.

В общем, использование только TIBDataSet и TIBSQL и неиспользование TIBQuery и TIBTable облегчает разработку и уменьшает возможные проблемы :)


 
P.N.P. ©   (2005-08-26 19:39) [9]

>Zacho ©   (26.08.05 19:18) [8]
Хорошо. Для задач read/write TIBDataSet - самое оно, я не спорю,
и даже не собирался спорить, но вот для readonly датасетов
(например для справочников) использовать TIBDataSet это как-то
нелогично, согласитесь? И в данном случае, для отображения результата запроса select count... использование TIBQuery
вполне приемлимо.


 
Zacho ©   (2005-08-26 20:06) [10]

P.N.P. ©   (26.08.05 19:39) [9]
но вот для readonly датасетов
(например для справочников) использовать TIBDataSet это как-то
нелогично, согласитесь?


Не соглашусь. В чём нелогичность ?

>использование TIBQuery
> вполне приемлимо.

Да, приемлемо. Но зачем, когда этой задаче полностью соответствует гораздо более простой TIBSQL ? (также см. п.4 в [8] )


 
}{ander ©   (2005-08-27 09:39) [11]

2 Zacho ©   (26.08.05 20:06) [10]
> Не соглашусь. В чём нелогичность ?

А зачем использовать TIBDataSet с его функциональностью, если нет изменения данных - нужно-то всего лишь получить одну цифру! И изменять ее никто не собирается.

А насчет TIBQuery vs TIBSQL, то

Use TIBQuery to access one or more tables in a database using SQL statements. The TIBQuery component provides a read-only dataset, and adapts well to the InterBase client/server environment.

Честно говоря, не вижу причин, почему его не использовать...


 
}{ander ©   (2005-08-27 09:41) [12]

Кстати, в догонку:
TIBSQL provides an object for executing an InterBase SQL statement with minimal overhead.

TIBSQL, в принципе, позиционируется, как компонент для выполнения операций, не связанных с выборкой данных, хотя и имеет (мне кажется зря) такую функциональность.


 
Zacho ©   (2005-08-27 10:50) [13]

}{ander ©   (27.08.05 9:39) [11]

А зачем использовать TIBQuery с его функциональнстью, когда достаточно TIBSQL ?


 
}{ander ©   (2005-08-27 13:05) [14]

2 Zacho ©   (27.08.05 10:50) [13]

Это дело вкуса :-)


 
Piero   (2005-08-29 15:03) [15]

Запрос сделал, работает нормально

IbQuery1.text.sql:="SELECT Count(*) FROM T_Obj",
но как в программе, получить результат этого запроса?


 
Zacho ©   (2005-08-30 05:28) [16]

Piero   (29.08.05 15:03) [15]

Я же тебе уже ответил в [6]
В чём проблемы ?


 
tomkat   (2005-08-30 17:18) [17]

А чем не нравится
myvar:integer;
myvar:=ibDataSet1.RecordCount;

еще не было ни одного случая, чтоб это не сработало ....
даже fetchAll не надобилось ....


 
Zacho ©   (2005-08-30 17:41) [18]

tomkat   (30.08.05 17:18) [17]
еще не было ни одного случая, чтоб это не сработало


Тебе просто повезло.
Читай хелп по IBX.
И больше никогда так не делай.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.013 c
14-1126728661
syte_ser78
2005-09-15 00:11
2005.10.09
Стоит ли апгрейдится?


1-1126854574
Новичок1
2005-09-16 11:09
2005.10.09
Уважаемые Доны подкажите пожалуйста как можно сделать


1-1126774221
CaptainAlex
2005-09-15 12:50
2005.10.09
Хранение пароля


1-1126797235
Alex Kryuchkov
2005-09-15 19:13
2005.10.09
Программное создание макроса в Экселе


1-1127296340
Domkrat
2005-09-21 13:52
2005.10.09
Быстрый поиск в текстовом файле





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский