안녕하세요..
초보가.. 간단한 DB 관련 프로그램을 짜려니 힘이 드네여;;
환경은.. delphi 2009 + DB2 + dbExpress 구요..
SQLConnection + SQLDataSet + DataSetProvider + ClientDataSet + DataSource
입니다.
procedure TForm_D.SpeedButton1Click(Sender: TObject);
begin
if (Edit3.Text='') or (Edit4.Text='') then
begin
ShowMessage('Port를 입력해 주세요!');
exit;
end;
With Clientdataset1 do
begin
last;
append;
fieldbyname('EAI_SYS').AsString := '대외';
fieldbyname('EAI_R_ADAPTERNAME').AsString := Edit1.Text;
fieldbyname('EAI_R_MEMO').AsString := Edit2.Text;
fieldbyname('EAI_R_TESTPORT').AsInteger := StrToInt(Edit3.Text);
fieldbyname('EAI_R_REALPORT').AsInteger := StrToInt(Edit4.Text);
fieldbyname('EAI_S_ADAPTERNAME').AsString := Edit1.Text;
fieldbyname('EAI_S_MEMO').AsString := Edit2.Text;
fieldbyname('EAI_S_TESTPORT').AsInteger := StrToInt(Edit5.Text);
fieldbyname('EAI_S_REALPORT').AsInteger := StrToInt(Edit6.Text);
post;
ApplyUpdates(-1)
end;
end;
//////////////// insert 부분인데... 이 부분은 이상없이 잘 됩니다. 실제 DB에 적용두 잘되구..
procedure TForm_D.SpeedButton2Click(Sender: TObject);
begin
Clientdataset1.Delete;
Clientdataset1.ApplyUpdates(0);
end;
///////////////// 여기가 문제인 Delete 부분입니다.
프로그램을 실행시켜서... 삭제버튼을 눌러보면
exception class EDatabaseError with message 'Update affected more than 1 record.
라고 뜹니다..
간단한 부분이라 생각했는데.. 왜 그런지.. ㅡㅜ
좀 살려주세요~
TADODataSet -> Fields Editor -> PK필드 선택 -> Provider Flags -> pfInUpdate, pfInWhere, pfInKey를 선택해주시고
TDataSetProvider -> UpdateMode -> upWhereKeyOnly 선택해주세요.