Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.04;
Скачать: CL | DM;

Вниз

Как корректно получить список параметров запроса в ADO?   Найти похожие ветки 

 
Denis ©   (2004-06-07 15:59) [0]

Пытаюсь сделать следующее: создать объект TADOQuery, его SQL заполнить текстом из БД, получить список параметров запроса и записать их в StringGrid. Этот код получает искомый список не из всех запросов, и если получает, то присваивает им не имена из запроса, а Param1 и т.д.
Как корректно получить этот список?

Table:=TADOQuery.Create(fmReportList);
Table.Name:=tbQuerysRepLib.FieldByName("QUERYSYSNAME").AsString;
Table.SQL.Assign(tbQuerysRepLibSQLTEXT);
Table.Connection:=fmMain.ADOConnection1;

Table.Parameters.Refresh;

if Table.Parameters.Count>0
then
 begin
   ParamGrid.RowCount:=GRowCount+Table.Parameters.Count+1;
   ParamGrid.Cells[0,GRowCount]:=Table.Name;
   ParamGrid.Cells[1,GRowCount]:="-------";

   for i:=0 to Table.Parameters.Count-1 do
   begin
     ParamGrid.Cells[0,GRowCount+i+1]:=Table.Parameters[i].Name;
     //ParamGrid.Cells[1,GRowCount+i+1]:=Table.Parameters[i].Value;
  end;
  GRowCount:=ParamGrid.RowCount;
end;


 
KSergey ©   (2004-06-08 06:51) [1]

Что скрывается под Table.SQL.Assign(tbQuerysRepLibSQLTEXT)?
А вообще лично я вопроса не понял.


 
NAlexey ©   (2004-06-08 08:58) [2]


Table.Parameters.ParseSQL(Table.SQL.Text, True);


 
Denis ©   (2004-06-08 09:06) [3]

tbQuerys - ADOQuery. В поле tbQuerysRepLibSQLTEXT хранится текст запроса. Свойство SQL созданного TADOQuery ассоциируется с этим запросом. Текст запроса содержит параметры. Нужно получить их список и вывести в ValueEditor чтобы можно было туда внести их значения и в дальнейшем использовать при выполнении запроса.
Код который я привел,получает список параметров, но не из всех запросов и если получает, то без имени, заданного прараметру в запросе. Т.е. если записано "...where a = :MyParam and b = :YourParam", то получаю имена Param1 и Param2.
Вот и хотелось бы знать, как это сделать правильно.


 
Denis ©   (2004-06-08 09:08) [4]

NAlexey ©   (08.06.04 08:58) [2]
Пробовал. Сначала эту строку,затем Parameters.Rafresh, затем цикл записи параметров в грид. Результат тот же.


 
KSergey ©   (2004-06-08 10:01) [5]

Кажися я понял
Table.Parameters[i].DisplayName


 
Denis ©   (2004-06-08 11:01) [6]

Сделал с вашец помощью, наконец :-)
Вот рабочий код:
Table.Parameters.ParseSQL(Table.SQL.Text,true);
if Table.Parameters.Count>0
then
 begin
   ParamGrid.InsertRow(Table.Name,"------",true);
   for i:=0 to Table.Parameters.Count-1 do
   ParamGrid.InsertRow(Table.Parameters[i].DisplayName,"",true);
 end;

Оказывается Refresh- лишняя операция...
Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2004.07.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.029 c
3-1086602298
inic
2004-06-07 13:58
2004.07.04
Отмена запроса, но как ???


1-1087481169
p_sA[11]
2004-06-17 18:06
2004.07.04
Реестр: Как прочитать все имена ключей в нужном мне разделе?


1-1087906257
Anton.
2004-06-22 16:10
2004.07.04
TComboBox


14-1087213952
Master
2004-06-14 15:52
2004.07.04
работа с dBase


6-1083741447
pirate
2004-05-05 11:17
2004.07.04
Сетевые соединения