Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.09.2007, 11:48   #1
antoniosm
Пользователь
 
Регистрация: 05.09.2007
Сообщений: 14
По умолчанию count(*)

всем здрасти. нужна помощь. вот код:
Код:
ADOQuery1.SQL.Text:='select count(*) from tabl1 where grup=:sir';
ADOQuery1.Parameters.ParamByName('sir').DataType:=ftString;
ADOQuery1.Parameters.ParamByName('sir').Value:='123';
а:=ADOQuery.ExecSQL ==>>??????
далее, мне значение count(*) нужно передать в некую переменную а:интегер. и как быть? а:=ADOQuery.ExecSQL - вот енто я прально делал?
подскажите пожалста.
antoniosm вне форума Ответить с цитированием
Старый 11.09.2007, 12:08   #2
Pitbull
детский тренер
Форумчанин
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Сообщений: 532
По умолчанию

a:=ADOQuery1.Fields[0].AsInteger;

а можно еще и без count обойтись....
Например a:=adoQuery1.RecordCount,но тогда в запросе пиши просто :
select * from .....Where....
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp

Последний раз редактировалось Pitbull; 11.09.2007 в 12:11.
Pitbull вне форума Ответить с цитированием
Старый 11.09.2007, 12:24   #3
antoniosm
Пользователь
 
Регистрация: 05.09.2007
Сообщений: 14
По умолчанию

мне нужно посчитать кол-во записей в столбце с имнем grup, значения которых равны 123. если не ошибаюсь recordCount - кол-во вообще всех записей, а мне нуно определенное кол-во. как быть? подскажите
antoniosm вне форума Ответить с цитированием
Старый 11.09.2007, 12:54   #4
Pitbull
детский тренер
Форумчанин
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Сообщений: 532
По умолчанию

Цитата:
Сообщение от antoniosm Посмотреть сообщение
мне нужно посчитать кол-во записей в столбце с имнем grup, значения которых равны 123. если не ошибаюсь recordCount - кол-во вообще всех записей, а мне нуно определенное кол-во. как быть? подскажите
adoquery.active:=false;
adoQuery.sql.clear;
ADOQuery1.SQL.add('select * from tabl1 where grup=:sir');
ADOQuery1.Parameters.ParamByName('s ir').DataType:=ftString;
ADOQuery1.Parameters.ParamByName('s ir').Value:='123';
ADOQuery.ExecSQL ;
a:=adoQuery1.RecordCount;

Ну смісл в том, что ті делаешь запрос, а потом подсчитіваешь количество записей, которіе удовлетворяют условию...
Ну вот смотри, у тебя ж будут віводится только те записи,которіе удов.условию....Другие не віводятся....


вот так тоже работает.....Но как ті написал - єто тоже правильно и красиво ADOQuery1.Parameters[0].value:='123';


Ну или вместо * напишт имя своего столбца
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp

Последний раз редактировалось Pitbull; 11.09.2007 в 12:58.
Pitbull вне форума Ответить с цитированием
Старый 12.09.2007, 05:33   #5
antoniosm
Пользователь
 
Регистрация: 05.09.2007
Сообщений: 14
По умолчанию

спасибо, питбуль.
если не сложно, киньте ссылочки где можно почитать про делфи и скл более подробно.
antoniosm вне форума Ответить с цитированием
Старый 12.09.2007, 06:47   #6
antoniosm
Пользователь
 
Регистрация: 05.09.2007
Сообщений: 14
По умолчанию

и еще такой головнячок-с. в бд в поле "дата" данные хранятся в стриноговом формате

Код:
Form1.ADOQuery1.Parameters.ParamByName('date_u').DataType := ftString;
Form1.ADOQuery1.Parameters.ParamByName('date_u').Value := datetostr(DateTimePicker3.Date);
при выполнении сортировки она выполняется не прально, т.е. сравнивает строки посимвольно, например, имеется 3 значения: 10.08.2007; 10.09.2007; 10.12.2006. запрос на сортировку:

Код:
ADOQuery1.Close;
ADOQuery1.SQL.Text:='select id,name,fam,day from tabl1 order by day asc';
ADOQuery1.Open;
результат:
10.08.2007
10.09.2007
10.12.2006

хотя должно быть:
10.12.2006
10.08.2007
10.09.2007
не меняя формат(т.е. string), как можно сделать корректную сортировку? перегнать все в массив?
подскажите.
antoniosm вне форума Ответить с цитированием
Старый 12.09.2007, 10:33   #7
Pitbull
детский тренер
Форумчанин
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Сообщений: 532
По умолчанию

ну 10.12.2006 оно самое маленькое из них строка...Все правильно віводит..Ведь оно сравнивает посимвольно....Вот оно и делает каку.Почему ті не хочешь использовать поле типа Дата?
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp

Последний раз редактировалось Pitbull; 12.09.2007 в 10:58.
Pitbull вне форума Ответить с цитированием
Старый 12.09.2007, 10:49   #8
antoniosm
Пользователь
 
Регистрация: 05.09.2007
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Pitbull Посмотреть сообщение
ну 10.12.2006 оно самое большая из них строка...Все правильно віводит..Ведь оно сравнивает посимвольно....И в третей позиции 1 >0 Вот оно и делает каку.Почему ті не хочешь использовать поле типа Дата?
строка-то самая большая, только мне нужено по факту что ето дата.
тип "дата" можно использовать, но т.к. программа пишется для тётенек, которые практически в англ не бумм-бумм, а при типе "дата" данные получаются в виде, например, "Sep 10 2007" или "Jun 4 2006", для их восприятия ето не удобно. переделал из "даты" в "строку" - не сортирует прально. что делать?

Код:
Form1.ADOQuery1.Parameters.ParamByName('date_u').DataType:=ftDate;
Form1.ADOQuery1.Parameters.ParamByName('date_u').Value:=FormatDateTime('dd/mm/yyyy', DateTimePicker3.Date);
вот код. думал преобразование даты сделать по формату - не помогает, все равно пишет "Sep 10 2007".
что делать?
antoniosm вне форума Ответить с цитированием
Старый 12.09.2007, 11:05   #9
geget
Пользователь
 
Регистрация: 07.09.2007
Сообщений: 16
По умолчанию

В самой таблице навряд ли получится сортировать строки как дату. Разве что дату записывать в формате 'YYYY.MM.DD' Сам, правда, не проверял.
geget вне форума Ответить с цитированием
Старый 12.09.2007, 13:06   #10
Pitbull
детский тренер
Форумчанин
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Сообщений: 532
По умолчанию

ну , впринципе formatDate... должен нормально все делать...
Но если уж єто не віходит, то у полей есть такое свойство : DisplayFormat .... В данном свойстве можно указать в каком типе нужно віводить данніе....
Для таблиці вам просто нужно проиндексировать таблицу - 2 клик по єлементу AdoTable , потом правой кнопкой по віпавшему окну и вібрать Add all Fields....В данном окне появятся все ваши поля, которіе у вас в таблице....Если Какие-то поля Вам не нужні. то уберите их... Затем вібераете именно то поле, которое отвечает у Вас за Дату... Тип єтого поля должен біть date .... И у єтого поля есть свойство DisplayFormat
Установите данное свойство : dd.mm.yyyy.... Если Вам нужно изменить заголовок столбца, то DisplayLabel...
C AdoQuery ситуация другая... Чтобі так проделать, то нужно в свойтве SQL прописать какой-то запрос.... И проделать все тоже....
Впринципе все єто можно проделать программно в коде, но я затрудняюсь , как єто все Вам разїяснить...
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp
Pitbull вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
функция запроса COUNT Таня84 БД в Delphi 1 10.06.2007 15:49