Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ADOQuery Подсчет кол-ва значений [D5, Access]


Страницы:   1 2 3

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; - ошибка


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо