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;
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;
Цитата: 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;
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 раза.
Цитата: 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;
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;