Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема в удалении записи

7.3K
11 мая 2007 года
Mandel
21 / / 09.02.2005
Почему Delphi пишет ошибку, что параметр не найден,хотя он есть и на запрос select все срабатывает правильно:
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var code:integer;
begin
  try
    code:=StrToInt(Edit1.Text);
    Form2.Show;
    Form2.DBGrid1.DataSource:=DataSource1;
    Form2.DBGrid1.Columns[0].FieldName:='Директор';
    Form2.DBGrid1.Columns[1].FieldName:='Декларации';
    Form2.DBGrid1.Columns[2].FieldName:='Дебет';
    Form2.DBGrid1.Columns[3].FieldName:='Кредит';
    ADOQuery1.Active:=False;
    ADOQuery1.SQL.text:='select  директор,дебет,кредит,декларации from клиент where код_клиента=:p';
    ADOQuery1.Parameters.ParseSQL(ADOQuery1.SQL.text, true);
    ADOQuery1.Parameters.ParamByName('p').Value:=code;
    ADOQuery1.Active:=True;
  except
    Application.MessageBox('Вводите правильные данные','Ошибка ввода',0);
  end;
  Kod.Visible:=false;
end;

А похожий код пишут ошибку: ADOQuery1:CommandText does not return a result set.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var code:integer;
begin
    code:=StrToInt(Edit1.Text);
    ADOQuery1.Active:=False;
    //ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.text:='delete from клиент where код_клиента=:p';
    ADOQuery1.Parameters.ParseSQL(ADOQuery1.SQL.text, true);
    ADOQuery1.Parameters.ParamByName('p').value:=code;
    ADOQuery1.ExecSQL;
    ADOQuery1.Active:=True; //здесь пишет ошибку
end;
286
11 мая 2007 года
misha_turist
572 / / 28.11.2005
Цитата: Mandel
А похожий код пишут ошибку: ADOQuery1:CommandText does not return a result set.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var code:integer;
begin
    code:=StrToInt(Edit1.Text);
    ADOQuery1.Active:=False;
    //ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.text:='delete from клиент where код_клиента=:p';
    ADOQuery1.Parameters.ParseSQL(ADOQuery1.SQL.text, true);
    ADOQuery1.Parameters.ParamByName('p').value:=code;
    ADOQuery1.ExecSQL;
    ADOQuery1.Active:=True; //здесь пишет ошибку
end;



Сдесь запрос уже выполняется
ADOQuery1.ExecSQL;
А сдесь ты пытаешся сделать Open, хотя Open работает только для выборки.....
ADOQuery1.Active:=True; //здесь пишет ошибку

И к тому же запрос вызывается 2 раза.

286
11 мая 2007 года
misha_turist
572 / / 28.11.2005
Цитата: Mandel
Почему Delphi пишет ошибку, что параметр не найден,хотя он есть и на запрос select все срабатывает правильно:
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var code:integer;
begin
  try
    code:=StrToInt(Edit1.Text);
    Form2.Show;
    Form2.DBGrid1.DataSource:=DataSource1;
    Form2.DBGrid1.Columns[0].FieldName:='Директор';
    Form2.DBGrid1.Columns[1].FieldName:='Декларации';
    Form2.DBGrid1.Columns[2].FieldName:='Дебет';
    Form2.DBGrid1.Columns[3].FieldName:='Кредит';
    ADOQuery1.Active:=False;
    ADOQuery1.SQL.text:='select  директор,дебет,кредит,декларации from клиент where код_клиента=:p';
    ADOQuery1.Parameters.ParseSQL(ADOQuery1.SQL.text, true);
    ADOQuery1.Parameters.ParamByName('p').Value:=code;
    ADOQuery1.Active:=True;
  except
    Application.MessageBox('Вводите правильные данные','Ошибка ввода',0);
  end;
  Kod.Visible:=false;
end;



Попробуй вместо ADOQuery1.Parameters.ParseSQL(ADOQuery1.SQL.text, true) вызвать ADOQuery1.Prepared:=true;

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог