![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выбока максимального значения поля
Вика2 © (2004-08-19 11:50:00)Подскажите плиз как можно программно без использования SQL выбрать максимальное значение поля (тип дата) ?
Thanx...
Вика2 (2004-08-19 14:39:00) [1]2 Соловьев ©
Запрос получился:
SELECT count(idcard) AS numCards, status AS nameStatus
FROM cards
GROUP BY status;
В Access все нормально работает, возрращает все как надо, попробовала этот же запрос в Delph'e: выдается ошибка:
...Exception class EAccessViolation with message 'Access violation at adress 1Bxxxx in module msjet40.dll' Read of adress ...
???
Соловьев (2004-08-19 13:54:00) [2]можно, групировка для этого есть.
Вика2 (2004-08-19 13:53:00) [3]вобщем понятно, спасибо, я сделала это с помощью SQL'я. Подскажите плиз, если например из одной таблицы надо выудить несколько значений, как-то:
1. Число доступных карт
2. Число активированных карт
3. Число заблокированных карт
Это надо 3 запроса делать? или можно как-нибудь в одном? :((
}{ander (2004-08-19 13:18:00) [4]
> surkis (19.08.04 12:30) [12]
> Факт в том что моя схема меня не разу не подводила потому для меня не разницы
> я пишу и так и так
А ты попробуй использовать с этой "схемой" TIBDataSet и увидишь, что получится - если не сделать предварительно FetchAll, то будет еще хороше, если твой цикл выполнится хотя бы раз, не смотря на то, что в выборке может быть туча записей ;-)
Кщд (2004-08-19 13:10:00) [5]if MaxDate<Query.FieldByName('Date').asDateTime then
begin
...
Query.Next;
end
else Query.Next;
Ильш (2004-08-19 12:35:00) [6]
> Факт в том что моя схема меня не разу не подводила потому
> для меня не разницы я пишу и так и так
можно правой ного почесать левое ухо
никто не говорит что нельзя
но удобно ли????
surkis (2004-08-19 12:30:00) [7]> Соловьев © (19.08.04 12:24) [10]
> да потому... прочти про свойство датасета BOF и EOF
Спасибо за совет, свойства я такие знаю. Факт в том что моя схема меня не разу не подводила потому для меня не разницы я пишу и так и так
Ильш (2004-08-19 12:25:00) [8]ghbvth в С++ (с Дельфями давно не общался просто)
for (Table->First();Table->Eof;Table->Next())
{
....и погнали максимум искати :))))
}
Соловьев (2004-08-19 12:24:00) [9]да потому... прочти про свойство датасета BOF и EOF
surkis (2004-08-19 12:16:00) [10]> > for i:=1 to Query.RecordCount do
> да и это потенциальная ошибка.
это почему?
Соловьев (2004-08-19 12:15:00) [11]
> NumOfRec:=Query.RecNo;
А это вообще застрелится.
Соловьев (2004-08-19 12:14:00) [12]
> for i:=1 to Query.RecordCount do
да и это потенциальная ошибка.
surkis (2004-08-19 12:12:00) [13]> > Query.
> Я бы понял если бы это была Table, но если запрос... ужас.
Может у неё и Table я по привычке написал Query
Ильш (2004-08-19 12:10:00) [14]забавно
если человек не может даже просто найти максимальное в неком массиве
на уроках информатики такое по моему проходят
Соловьев (2004-08-19 12:10:00) [15]
> Query.
Я бы понял если бы это была Table, но если запрос... ужас.
surkis (2004-08-19 12:06:00) [16]> программно без использования SQL
думаю имеется уже готовый датасет и нужно найти запись с максимальным значением даты, тогда
var
NumOfRec:Integer;
MaxDate:TDateTime;
...
begin
...
Query.First;
MaxDate:=Query.FieldByName('Date').asDateTime;
NumOfRec:=Query.RecNo;
for i:=1 to Query.RecordCount do
begin
if MaxDate<Query.FieldByName('Date').asDateTime then
begin
MaxDate:=Query.FieldByName('Date').asDateTime;
NumOfRec:=Query.RecNo;
Query.Next;
end;
else Query.Next;
end;
Query.RecNo:=NumOfRec;
...
end;
Соловьев (2004-08-19 11:58:00) [17]
> как можно программно без использования SQL
зачем? с помощью скл это быстрее и правельнее
Ильш (2004-08-19 11:58:00) [18]перебором как же еще
тока без SQL это изврат конкретный