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

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

ADO.Parameters [D5, D6, Win2k, WinXP]


FireWorks ©   (2002-10-25 11:14:00) 

Вообще ничего не пойму, привожу код процедуры:
procedure TfrmReport.cmdRudReportClick(Sender: TObject);
var lStr : WideString; //переменная для параметра запроса
s1 : String; // запрос к БД№2 для вытаскивания sql запоса
sqlstring : WideString; // текст sql запроса
begin
txtSQL.Clear;
lStr := InputBox(frmReport.cbReportName.Text,frmReport.cbReportParameter.Text,"");
s1 := "select * from intruder_rb_sql where irs_handle = " +
mdata.adoq.fieldbyname("irh_id").AsString + " and irs_param = " + mdata.adoqSQL.fieldbyname("irp_id").AsString;;
mdata.adoqRez.Close;
mdata.adoqRez.SQL.Clear;
mdata.adoqRez.SQL.Add(s1);
mdata.adoqRez.Active := true;

sqlstring := mdata.adoqRez.fieldbyname("irs_sql").AsString;
mdata.adoqR.Close;
mdata.adoqR.SQL.Clear;
MData.adoqR.Parameters.Items[0].Value := lStr; // вот после второго подряд запроса бывает ошибку запроса index list out of bounds(0), что делать?
mdata.adoqR.SQL.Add(sqlstring);
frmReport.Update;
mdata.adoqR.Active := true;

mdata.adoqR.Parameters.Items[0].Value := null;

frmReport.gView.Visible := true;
frmReport.gView.DataSource := mdata.dsR;
frmReport.cmdPrint.Enabled := true;
frmReport.cmdQuickReport.Enabled := true;

end;


jonik pegas   (2002-10-25 11:45:00) [1]

после mdata.adoqR.SQL.Add(sqlstring) параметры все равно обнулятся. Параметры лучше создавать вручную, через AddParametr.


stone   (2002-10-25 11:36:00) [2]

> mdata.adoqR.Close;
> mdata.adoqR.SQL.Clear;

здесь после очистки текста запроса исчезают и параметры, поэтому следующая строка приводит к ошибке, поэтому следует поставить mdata.adoqR.SQL.Add(sqlstring) перед ней, а не после

> MData.adoqR.Parameters.Items[0].Value := lStr; // вот после >второго подряд запроса бывает ошибку запроса index list out of >bounds(0), что делать?
> mdata.adoqR.SQL.Add(sqlstring);
> frmReport.Update;
> mdata.adoqR.Active := true;


Наверх

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