![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ADOQuery Подсчет кол-ва значений [D5, Access]
My © (2003-12-16 14:44:00)
Работаю с ADO. У меня есть пустая таблица. Начинаю ее заполнять, и между єтим подсчитываю число записей с определенным значением поля. С пом-ю другого запроса:
select Count (поле1) as Рез-т
from Табл
where поле2=:поле2
and Поле3="значение"
св-во DataSource заполнено и имеются совпадающие значения, но все время, до окончания работы, в рез-те запроса возвращается 0.
JibSkeart (2003-12-17 11:54:00) [1]
ADOQueryKolPar.ParamByName("Gruppa").Value = xxx;
ADOQueryKolPar.Open;
может быть так ?
sniknik (2003-12-17 10:32:00) [2]
> {ADOQueryKolPar.Close;
SQL.Clear;
SQL.Add("select Count (Gruppa) as Par from Promej where Gruppa=: Gruppaand Tip="+QuotedStr("Лек"));
ADOQueryKolPar.Open;}
параметр не задаеш? работает, понятно. что возвращает? (только не RecordCount тут 1 должна быть а значение поля Par)
(неважно где запрос задан (место) результат одинаков если условия одинаковы (и данные, естественно))
My (2003-12-17 10:01:00) [3]
Уважаемые Мастера, большое спасибо, но все равно не понимаю, когда перенес в процедуру код
{ADOQueryKolPar.Close;
SQL.Clear;
SQL.Add("select Count (Gruppa) as Par from Promej where Gruppa=:Gruppa and Tip="+QuotedStr("Лек"));
ADOQueryKolPar.Open;}
то работает
но когда на форме в ADOQueryKolPar.SQL пишу запрос
select Count (Gruppa) as Par
from Promej
where Gruppa=:Gruppa
and Tip="Лек"
Active=True
то в ShowMessage(IntToStr(ADOQueryPromej.RecordCount));
всегда 0.
Получается, ему надо было просто перенести в процедуру, но ведь это должно быть без разницы.
JibSkeart (2003-12-16 18:30:00) [4]
точно насчет этого топика JibSkeart © (16.12.03 18:13) [43]
я действительно ошибся :)
My (2003-12-16 18:26:00) [5]
с небольшой модификацией пошло
procedure TForm1.Button2Click(Sender: TObject);
begin
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add("Insert into Promej (Prepod,Para,Gruppa,Aud,Tip,Smena) Values (1,1,1,1,1,1)");
ADOQuery.ExecSQL;// -- так как возрашяет 0 записей :)
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add("Select Count(*) as cnt from Promej where Para ="+Quotedstr("1"));
ADOQuery.Open;
ShowMessage(ADOQuery.FieldByName("cnt").AsString);
end;
Спасибо БОЛЬШОЕ,ВСЕм за помощь, завтра доразберу, вахта уже приходит 3 раз.
JibSkeart (2003-12-16 18:17:00) [6]
Да добавить запись можно и через TADOQuery
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add("Insert into Promej (Prepod,Para,Gruppa,Aud,Tip,Smena) Values (1,1,1,1,1,1)");
ADOQuery.ExecSQL; -- так как возрашяет 0 записей :)
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add("Select Count(*) as cnt from Promej where Para = 1");
ADOQuery.Open;
ShowMessage(ADOQuery.FieldByName("cnt").AsString);
попробуй так хотябы .
My (2003-12-16 18:16:00) [7]
Сейчас немного по другому
with ADOQueryKolPar do
begin
//////////
ADOQueryKolPar.Close;
SQL.Clear;
SQL.Add("select Count (Gruppa) as Par from Promej where Gruppa=:Gruppa and Tip="+QuotedStr("Лек"));
ADOQueryKolPar.Open;
//////////
lek:=ADOQueryKolPar.FieldByName("Par").AsInteger;
pr2:=ADOQueryKolPar1.FieldByName("Par").AsInteger;
pr3:=ADOQueryKolPar2.FieldByName("Par").AsInteger;
//--------------
end;
ShowMessage(Inttostr(ADOQueryKolPar.RecordCount));
но в ShowMessage всеравно вечная 1.
JibSkeart (2003-12-16 18:13:00) [8]
with ADOQueryKolPar do
begin
Close;
lek:=ADOQueryKolPar.FieldByName("Par").AsInteger;
pr2:=ADOQueryKolPar1.FieldByName("Par").AsInteger;
pr3:=ADOQueryKolPar2.FieldByName("Par").AsInteger;
Open;
end;
Что то этого я утебя там не увидел
My (2003-12-16 18:11:00) [9]
Я только учусь и не знаю как это сделать.
В результате при выполнении не вставляется запись.
нужно как-то активировать ADOCommand1.
JibSkeart (2003-12-16 18:09:00) [10]
ADOCommand1.Execute :)
JibSkeart (2003-12-16 18:08:00) [11]
тфу у тебя оказывается есть код .
а почемы ты все это в хранимую процедуру не завернул ?
My (2003-12-16 18:07:00) [12]
procedure TForm1.Button1Click(Sender: TObject);
begin
//ADODataSet.Close;
ADOCommand1.CommandText:= "Insert into Promej (Prepod,Para,Gruppa,Aud,Tip,Smena) Values (1,1,1,1,1,1)";
ADODataSet.Close;
ADODataSet.CommandText:=
"Select Count(*) from Promej where Para = 1";
ADODataSet.Open;
//Showmessage()
end;
sniknik (2003-12-16 18:07:00) [13]
> Со скобками не принимал.
правильно это я ошибся, надо по 2 вместо одной (тогда в строку/запрос одна попадет)
Values (""1"",""1"",""1"",""1"",""1"",""1"")"; (а вот последняя одно это завершаюшая а не внутри строки)
My (2003-12-16 18:04:00) [14]
Со скобками не принимал.
JibSkeart (2003-12-16 18:03:00) [15]
ну ты покажи точный код как ты это делаешь..
My (2003-12-16 18:01:00) [16]
ADOCommand1 нужно как-то открыть, на open и ExecSQL не реаг-т?
JibSkeart (2003-12-16 17:57:00) [17]
тфу
Вообщето sniknik
тебе пример дал не с TADOQuery а с TADOCommand
sniknik (2003-12-16 17:56:00) [18]
кстати раз уж Para у тебя числовое (смотрю скобки убрал) то и в ставнении с числом сравнивай
"...where Para = 1";
JibSkeart (2003-12-16 17:55:00) [19]
[b]ADOCommand1[/b].CommandText:= "Insert into Promej (Prepod,Para,Gruppa,Aud,Tip,Smena) Values ("1","1","1","1","1","1")";
Видишь ???
My (2003-12-16 17:54:00) [20]
ADODataSet.Open;
ADODataSet.ExecSQL; - ошибка