Главная страница
    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.031 c
14-1087460470
SergP
2004-06-17 12:21
2004.07.04
Фон рабочего стола...


1-1087559958
Экспериментатор
2004-06-18 15:59
2004.07.04
Правильное округление


3-1086611490
Smalik
2004-06-07 16:31
2004.07.04
Не сохраняется измененный набор данных


4-1085170957
Elysium
2004-05-22 00:22
2004.07.04
Как перехватывать данные на COM-порте


14-1086964065
Delphin
2004-06-11 18:27
2004.07.04
Красивый интерфейс





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский