Главная страница
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.03 c
6-1083350751
zol
2004-04-30 22:45
2004.07.04
как создать программу для динамического изменения ип?


14-1087463770
skiFF
2004-06-17 13:16
2004.07.04
мне просто интересно...


3-1086599014
S@shka
2004-06-07 13:03
2004.07.04
Триггер создание архивной копии данных


6-1084079050
Ozone
2004-05-09 09:04
2004.07.04
Две сетевые карты


1-1087802374
zep
2004-06-21 11:19
2004.07.04
TStrings