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

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

Как корректно получить список параметров запроса в ADO? [D7, MSSQL]


Denis ©   (2004-06-07 15:59:00) 

Пытаюсь сделать следующее: создать объект 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;


Denis   (2004-06-08 11:01:00) [1]

Сделал с вашец помощью, наконец :-)
Вот рабочий код:
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- лишняя операция...
Спасибо!


KSergey   (2004-06-08 10:01:00) [2]

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


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

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


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

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


NAlexey   (2004-06-08 08:58:00) [5]


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


KSergey   (2004-06-08 06:51:00) [6]

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


Наверх

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