Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];

Вниз

Как корректно получить список параметров запроса в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.037 c
14-1087041779
juiceman
2004-06-12 16:02
2004.07.04
Как установить в 98ой сетевое окружение ?


3-1084022161
xoluay
2004-05-08 17:16
2004.07.04
сохранение базы


1-1087471661
Top100
2004-06-17 15:27
2004.07.04
Закрытие MDIChilde окна


14-1087278233
(AD)acid
2004-06-15 09:43
2004.07.04
Народ, а кто как относиться к творчеству Сергея Лукьяненко?


4-1085397065
IgorG
2004-05-24 15:11
2004.07.04
Pocket PC





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский