DB에 있는 내용을 업데이트하려면 먼저 상태값이 edit 상태이어야 합니다.
DBGrid1->State != dsEdit || DBGrid1->State != dsInsert 이면
DBGrid1->Edit(); -> 이상태로 바꾸고 나서 업데이트 하셔야 합니다.
State , Edit() 값을 찾아 보시면 알수 있습니다.
고고싱TV 님이 쓰신 글 :
: 안녕하세요! C++ 빌더 초보 고고싱입니다!
: 제가 DBGrid에다가 필드를 선택해 항목을 추가 시키는 프로그램을 짜려고 하는데요~
: 선생님께서 DBGrid1->Fields[필드번호]->Text라는 것으로 추가를 할수있다고 하십니다~
: Query에서 SQL에서 INSERT를 하는것보다 쉽다고 하셔서요~
: 그래서 제가 이렇게 프로그램을 짜보았습니다!
: AnsiString r=Socket->ReceiveText(),c;
: int a=r.Pos('#'),t=0;
: c=r.SubString(1,a-1);
: DBGrid1->Fields[0]->Text=c;
: r=r.Delete(1,a);
: a=r.Pos('#');
: c=r.SubString(1,a-1);
: DBGrid1->Fields[1]->Text=c;
: r=r.Delete(1,a);
: a=r.Pos('#');
: c=r.SubString(1,a-1);
: DBGrid1->Fields[2]->Text=c;
: r=r.Delete(1,a);
: a=r.Pos('#');
: c=r.SubString(1,a-1);
: DBGrid1->Fields[3]->Text=c;
: r=r.Delete(1,a);
: 원래 좀 짧게 할수있는데 사실은 에러가 나서 바꾸었어요.
: 그 에러가 뭐냐면은
: Project Project1.exe raised exception class EDatabaseError with message 'ADOQuery1: Dataset not in edit or insert mode'.
: 이에요... 대충 해석해 보니까 Query가 에딧 또는 인서트 모드가 아니라서 데이터를 저장할수 없습니다 라고 해석했어요.
: 어떡하면 될까요? 도와주시면 감사하겠습니다!
|