Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: СУБД и Delphi/Lazarus

  Все выпуски  

RusFAQ.ru: СУБД и Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / СУБД и Delphi

Выпуск № 264
от 25.12.2006, 22:35

Администратор:CJ
В рассылке:Подписчиков: 276, Экспертов: 30
В номере:Вопросов: 1, Ответов: 2


Вопрос № 67888: Немогу написать код для посчета и вывода результатов. Есть поле 'IND' и поле 'JA' и поле 'YCH'. Допустим, 11111 1 1 11111 1 1 11111 3 1 ..... . . Отображается в DBGrid1. На форме Edit1(IND) и Edit2(YCH). Делаю запрос ...

Вопрос № 67.888
Немогу написать код для посчета и вывода результатов.
Есть поле 'IND' и поле 'JA' и поле 'YCH'. Допустим,
11111 1 1
11111 1 1
11111 3 1
..... . . Отображается в DBGrid1.
На форме Edit1(IND) и Edit2(YCH). Делаю запрос
пишу 11111 1, и нажимаю, бутон1. Отображается DBGrid2 c результатом
11111 1 1
11111 1 1
11111 3 1
Нужно по нажатию на бутон1, подсчитать количество по полю 'JA' и результат вывести на форму, т.е сейчас код бутона:
procedure TCart8.Button2Click(Sender: TObject);
var
st : string;
sv : string;
begin
DBGrid1.Visible:=False;
DBGrid3.Visible:=True;
st:= Edit1.Text;
sv:= Edit3.Text;
Query2.SQL.Clear;
Query2.SQL.Add('SELECT IND, Naz, JA, F, MR, A, MY, IU, IL, AU, S, O, N, D, ADR, FAM, YCH');
Query2.SQL.Add('FROM adr.db');
Query2.SQL.Add('WHERE IND = '''+st+''' AND YCH = '''+sv+'''');
Query2.SQL.Add('ORDER BY IND, Naz, JA, F, MR, A, MY, IU, IL, AU, S, O, N, D, ADR, FAM, YCH');
Query2.Open;
if Query2.RecordCount <> 0 then
DataSource3.DataSet := Query2
else begin
ShowMessage(' ');
end;
end.
Помогите, что нужно добавить в код.
Отправлен: 20.12.2006, 20:10
Вопрос задал: Gsvprog (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Крылов Александр Владимирович
Здравствуйте, Gsvprog!
Подсчёт по количеству в одном из полей.

DataSource.DataSet.First //устанавливаем курсор на первую запись
kolvo:=0;
repeat
kolvo:=kolvo+DataSource.DataSet.Fields[2].AsString;
DataSource.DataSet.Next;
until DataSource.DataSet.EOF; // пока не достигнем последней записи

Почему же именно Fileds[2]? Потому что в Вашем запросе поле "JA" идёт третьим по счёту, а индексация полей в DataSource начинается с 0
Ответ отправил: Крылов Александр Владимирович (статус: 1-ый класс)
Ответ отправлен: 20.12.2006, 22:17

Отвечает: PaVeL_Ekt
Здравствуйте, Gsvprog!

Крылов Александр Владимирович немного неверно ответил:
дело в том, что переменная kolvo у него идет либо интегеровская и в нее он пытаеться присвоить стринговое значение,
либо переменная стринговая и в нее он присваивает числа.
Одним словом здесь ошибка приведения типов.

и второе: данным кодом он считает сумму всех элементов поля 'JA'.

Через SQL
Select count(*) as cnt from adr.db where ja is not null
выполнить скажем в Query3, а затем
Form1.Edit1.Text:=Query3.FielByName('cnt').AsString;

либо через циклы while, for
var
Kol_vo: integer;
...
// цикл while
query2.first;
while not Query2.eof do
begin
if trim(query2.fieldbyname('ja').asstring)<>'' then inc(Kol_vo);
query2.next;
end;

// цикл for
for i:=1 to query2.recordcount do
begin
query2.recno:=i;
if trim(query2.fieldbyname('ja').asstring)<>'' then inc(Kol_vo);
end;

// вывод на форму
Edit1.Text:=inttostr(kol_vo);
Form1.canvas.textout(5,10,inttostr(kol_vo)); //выводит кол-во прямо на форме в координате х=5, у=10.

УДАЧИ


---------
Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: 10-ый класс)
Ответ отправлен: 21.12.2006, 06:57


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.38 от 20.12.2006
Яндекс Rambler's Top100

В избранное