Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 946

/ вопрос открыт /

Приветствую, уважаемые эксперты!
у меня есть SQL - запрос:
на выходе следующая информация:

VidObr | cou
--------------
знач1 | 4
знач2 | 8


а как теперь допустим в Edit1 занести количество встречаемых записей знач1?? (т.е. чтобы значение Edit1.text = 4 ???)

Приложение:
  1. SELECT RegistraKartochka.VidObr, Count(*) AS cou
  2. FROM RegistraKartochka
  3. GROUP BY RegistraKartochka.VidObr, 1;


Танюшка Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задала: Танюшка (статус: Посетитель)
Вопрос отправлен: 29 сентября 2008, 14:43
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, Танюшка!
Если надо именно знач1, то так и надо написать в запросе
SELECT RegistraKartochka.VidObr, Count(*) AS cou
FROM RegistraKartochka
where VidObr = 'знач1'
GROUP BY RegistraKartochka.VidObr, 1;
теперь у нас в результате ответом будет одна строка. А дальше всё зависит от тех компонентов, которые используете. для многих это будет что то вида
QueryXXX.FieldByName('имя поля')
или
QueryXXX.FieldByName('имя поля').asinteger
пишите, какие компоненты юзаете - напишу реальный кусочек кода.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 29 сентября 2008, 14:54
Оценка за ответ: 5

Комментарий к оценке: За идею ;)

Мини-форум вопроса

Всего сообщений: 5; последнее сообщение — 30 сентября 2008, 19:21; участников в обсуждении: 3.
Танюшка

Танюшка (статус: Посетитель), 29 сентября 2008, 15:00 [#1]:

на самом деле мне нужно и количество записей знач1 и знач 2 (написала просто чтоб сократить текст), и поэтому в самом запросе блок where VidObr = 'знач1' я использовать не хочу ... так как иначе мне придеться создавать 22 ADOQuery а это вы сами понимаете даже не смешно...
так что если есть какие нибудь предложения по моему запросу и как его разобрать так сказать на составляющие то заранее огромное спасибо
Вадим К

Вадим К (статус: Академик), 29 сентября 2008, 15:14 [#2]:

во первых, 22 ADOQuery создавать не надо. можно пользоваться только одним.
После выполнения запроса можно пройтись по нему. Это где то так
While not Adoquery1.eof do begin
memo1.lines.add(ADOQuery1.FieldByName('VidObr'));
ADOQuery1.next;
end;
Галочка "подтверждения прочтения" - вселенское зло.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 30 сентября 2008, 18:47 [#3]:

Если необходимо значение поместить именно в Edit, то воспользуйтесь методом LookUp для ADOQuery. Где-то так:
var lResult:Variant;
begin
....
lResult:=ADOQuery.LookUp('vidobr','знач1','cou');
if vartype(lResult)=varnull
then //значение не найдено
else edit1.text:=IntToStr(lResult);
Вадим К

Вадим К (статус: Академик), 30 сентября 2008, 19:02 [#4]:

вот как раз этих древностей и не надо. Они очень хорошо тормозят.
Правильней сделать цикл, как я выше написал и распихать по этитам.
Галочка "подтверждения прочтения" - вселенское зло.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 30 сентября 2008, 19:21 [#5]:

непонятно только зачем именно edit применять - ведь изменение полученного значения смысла не имеет.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:48
Выполнено за 0.02 сек.