Форум: "Базы";
Текущий архив: 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