Поиск:

Ответ в темуСоздание новой темы Создание опроса
> считаем строки в dbgrid, считаем строки в dbgrid 
V
    Опции темы
alf138
Дата 19.9.2011, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 15.11.2009

Репутация: нет
Всего: нет



Есть dbgrid в нём есть заполненые поля, нужно посчитать заполненные поля думал посчитать так 
Код

for i:= 0 to DBGrid1.DataSource.DataSet.FieldCount - 1 do
h:=h+1;

не хотит ...  smile 
PM MAIL   Вверх
Данкинг
Дата 19.9.2011, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Мне только такой вот извращённый способ в голову приходит:
Код

for i:= 0 to DBGrid1.DataSource.DataSet.FieldCount - 1 do
 if length(trim(DataSet.fieldvalues[DataSet.fields[i].fieldname]))<>0 then
  inc (h);



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
alf138
Дата 19.9.2011, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 15.11.2009

Репутация: нет
Всего: нет



Код

for i:= 0 to DBGrid1.DataSource.DataSet.FieldCount - 1 do
if Length(Trim(DBGrid1.DataSource.DataSet.FieldValues[DBGrid1.DataSource.DataSet.Fields[i].FieldName]))<>0 then
// if length(trim(DataSet.fieldvalues[DataSet.fields[i].fieldname]))<>0 then
  inc (h);
  Label3.Caption:=IntToStr(h);

стройчиво пишет циферку "1" хотя грид забит под завязку smile 

Это сообщение отредактировал(а) alf138 - 19.9.2011, 18:55
PM MAIL   Вверх
Данкинг
Дата 19.9.2011, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Попробуй Begin поставить, хотя это глупо, конечно:
Код

for i:= 0 to DBGrid1.DataSource.DataSet.FieldCount - 1 do
 begin 
  if  length(Trim(DBGrid1.DataSource.DataSet.FieldValues[DBGrid1.DataSource.DataSet.Fields[i].FieldName]))<>0    then
  inc (h);
 end;
 Label3.Caption:=IntToStr(h);


Это сообщение отредактировал(а) Данкинг - 19.9.2011, 19:01


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
alf138
Дата 19.9.2011, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 15.11.2009

Репутация: нет
Всего: нет



Кинул на кнопку он работает как обычный счетчик, щелкнул прибавилась единичка. А вот строчки не считает (
PM MAIL   Вверх
Данкинг
Дата 19.9.2011, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(alf138 @  19.9.2011,  20:12 Найти цитируемый пост)
А вот строчки не считает ( 

Какие строчки? Тебе что посчитать-то требуется?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
alf138
Дата 20.9.2011, 03:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 15.11.2009

Репутация: нет
Всего: нет



Количество заполненных строчек в DBGRID.
PM MAIL   Вверх
bems
Дата 20.9.2011, 05:41 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: нет
Всего: 88



Поля это столбцы.
Записи это строки.
Если тебе строки, то FieldCount не при чем


--------------------
Обижено школьников: 8
PM MAIL   Вверх
AndreyIQ
Дата 20.9.2011, 07:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 5.2.2007

Репутация: 1
Всего: 8



Цитата(alf138 @ 19.9.2011,  18:42)
Есть dbgrid в нём есть заполненые поля, нужно посчитать заполненные поля думал посчитать так 
Код

for i:= 0 to DBGrid1.DataSource.DataSet.FieldCount - 1 do
h:=h+1;

не хотит ...  smile

Если просто кол-во надо посчитать, то проще всего через Query
Код

Query1.FetchAll;
Query.RecordCount;

Если надо по всем записям пройтись, то
Код

  while Query.Eof do
  begin
    .....
    Query.Next;
   end;

А еще лучше все запросом сделать smile 
PM MAIL   Вверх
Данкинг
Дата 20.9.2011, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(alf138 @ 20.9.2011,  04:16)
Количество заполненных строчек в DBGRID.

 smile 
Код

DBGrid1.DataSource.DataSet.First;
for ii:= 1 to DBGrid1.DataSource.DataSet.RecordCount do
 begin 
  for i:= 0 to DBGrid1.DataSource.DataSet.FieldCount - 1 do
    if length(trim(DataSet.fieldvalues[DataSet.fields[i].fieldname]))<>0 then
         inc (h);
 DBGrid1.DataSource.DataSet.Next; 
 end;



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
AndreyIQ
Дата 20.9.2011, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 5.2.2007

Репутация: 1
Всего: 8



Чуть не забыл, перед циклом DisableControls, после EnableControls;

PM MAIL   Вверх
Staruha
Дата 20.9.2011, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

Репутация: нет
Всего: 27



Ну да надо считать во время вывода данных в Grid. Если же ты тащишь все данные то используй ClientDataSet


--------------------
Возмездие настигнет
PM MAIL   Вверх
alf138
Дата 21.9.2011, 03:54 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 15.11.2009

Репутация: нет
Всего: нет



Всем спасибо, получилось в разы проще
Код

Label3.Caption:=IntToStr(DBGrid1.DataSource.DataSet.RecordCount);

 smile 
PM MAIL   Вверх
Данкинг
Дата 21.9.2011, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



alf138, это называется "число строк в таблице (т.е. датасете)". smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
superVad
Дата 21.9.2011, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 3
Всего: 15



Цитата(alf138 @  21.9.2011,  02:54 Найти цитируемый пост)
Всем спасибо, получилось в разы проще

Это количество строк, а не количество заполненных полей.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0987 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.