Форум: "Базы";
Текущий архив: 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