안녕하세요.
오늘의 질문은 입력, 수정, 삭제를 하고자 함에 있어서
발생되는 에러를 도무지 알 수가 없는데 도움을 청합니다.
트랜잭션을 시작하면 발생하게 됩니다.
'Cannot perform this operation on a closed database'
procedure TForm3.Button1Click(Sender: TObject);
var
InsertSQL: String;
begin
if Edit3.Text = '' then
Edit3.SetFocus;
if Edit2.Text = '' then
Edit2.SetFocus;
if Edit1.Text = '' then
Edit1.SetFocus;
if not Database1.InTransaction then
Database1.StartTransaction;
with Query1 do begin
Close;
SQL.Clear;
InsertSQL := '';
InsertSQL := 'insert into animals.dbf(Name, Weight, Area)' +
' values(:prName, :prWeight, :prArea)';
SQL.Add(InsertSQL);
ParamByName('prName').AsString := Trim(Edit1.Text);
ParamByName('prWeight').AsString := Trim(Edit2.Text);
ParamByName('prArea').AsString := Trim(Edit3.Text);
end;
try
Query1.ExecSQL;
Database1.Commit;
Query1.Refresh;
except
Database1.Rollback;
Query1.Refresh;
end;
Edit1.Text := '';
Edit2.Text := '';
Edit3.Text := '';
end;
며칠째 풀지 못한 숙제로 남아 있습니다.
정말 도와주세요.
테스트 해보니 않되더군여...
제 기억으로는 트랜잭션을 지원해주지 않는 것 같습니다..
초보자 wrote:
> 안녕하세요.
> 오늘의 질문은 입력, 수정, 삭제를 하고자 함에 있어서
> 발생되는 에러를 도무지 알 수가 없는데 도움을 청합니다.
>
> 트랜잭션을 시작하면 발생하게 됩니다.
>
> 'Cannot perform this operation on a closed database'
>
>
> procedure TForm3.Button1Click(Sender: TObject);
> var
> InsertSQL: String;
> begin
> if Edit3.Text = '' then
> Edit3.SetFocus;
> if Edit2.Text = '' then
> Edit2.SetFocus;
> if Edit1.Text = '' then
> Edit1.SetFocus;
>
> if not Database1.InTransaction then
> Database1.StartTransaction;
>
> with Query1 do begin
> Close;
> SQL.Clear;
> InsertSQL := '';
> InsertSQL := 'insert into animals.dbf(Name, Weight, Area)' +
> ' values(:prName, :prWeight, :prArea)';
> SQL.Add(InsertSQL);
> ParamByName('prName').AsString := Trim(Edit1.Text);
> ParamByName('prWeight').AsString := Trim(Edit2.Text);
> ParamByName('prArea').AsString := Trim(Edit3.Text);
> end;
>
> try
> Query1.ExecSQL;
> Database1.Commit;
> Query1.Refresh;
> except
> Database1.Rollback;
> Query1.Refresh;
> end;
>
> Edit1.Text := '';
> Edit2.Text := '';
> Edit3.Text := '';
> end;
>
>
> 며칠째 풀지 못한 숙제로 남아 있습니다.
> 정말 도와주세요.
>