2016-10-27 19 views
-6

나는 심각한 문제에 대한 해결책을 찾고 있습니다. dbGrid에서 레코드를 삭제하려고하지만 코드화 된 버튼을 클릭하고 '삭제'를 확인하면 즉시 결과가 없습니다. 삭제 된 레코드의 결과를 찾으려면 프로그램을 닫고 다시 실행해야합니다. 그래야만 그 기록이 삭제 된 것을 볼 수 있습니다. 내가 Access 데이터베이스에 연결 연결을 ADO에 연결된 ADO 테이블을 사용하고dbGrid에서 레코드 삭제하기 Delphi 2010

procedure TfrmPunte.btnDeleteClick(Sender: TObject); 
var 
sName, sLeerderNo : string; 
begin 
with dmPunte do 
    begin 
    sLeerderNo := tblLeerder['LeerderNr']; 
    sName := tblLeerder['NaamVan']; 
    if MessageDlg('Is jy seker dat jy ' + sName + ' met Leerder Nommer ' + sLeerderNo + ' wil wis van die rekords? Neem kennis dat al die rekords van sy/haar aktiwiteite ook uitgevee sal word!', mtWarning, [mbOk, mbCancel],0) = mrOK then 
     tblDeelname.Open; 
     tblDeelname.First; 
     while NOT tblDeelname.Eof do 
     begin 
      if tblDeelname['LeerderNr'] = sLeerderNo then 
      tblDeelname.Delete; 
      tblDeelname.Next; 
     end; 
     tblLeerder.Delete; 
     tblLeerder.Active := False; 
     tblLeerder.Active := True; 
    end; 
end; 

을 다음과 같이

내 코드는 기본적으로 보인다. 나는 사과한다. 몇몇 변수 이름은 아프리칸스어로되어있다. 어떻게해야합니까?

+0

삭제 될 것으로 예상되는 레코드는 여전히 DB 그리드에 표시됩니다. ADO 연결을 사용하는 ADO 테이블을 사용하고 있습니다. –

+2

빠른보기 : 삭제 후 다음은 레코드를 삭제 한 후 하나의 레코드를 건너 뜁니다. 다음에 다른 사람을 삽입해야합니다. –

+0

"tblLeerder"와 "tblDeelname"이 둘 다 TADODataSet이고 그리드에 "tblDeelname"의 내용이 표시되어 있습니다. tblDeelname.delete 뒤에 actice : = false 및 active : = true를 포함해야합니다. tblLeerder가 DBGrid에 연결되어있는 경우 질문은 무엇을보고 싶습니까? –

답변

0

Table.refresh이 모든 환경에서 작동하지 않습니다. 안전한 방법은

Table.Active := False; 
Table.Active := True; 

실제 데이터 집합이 손실되는 문제에 유의하십시오. 당신은 그것을 저장할 수 있고 다시 찾을 수 있습니다.

+0

Christine에게 조언 해 주셔서 감사합니다.하지만 불행히도 여전히 효과가 없습니다 .... –

+1

보다 구체적이어야합니다. 전체 코드를 표시하십시오 (어떤 유형이 표입니까?). dbgrid에서 삭제한다는 것은 무엇을 의미합니까? 나는 이해할 것이다 : 데이터 집합의 레코드를 삭제하고 새로 고침 dbgrid ??? –

+0

답변에 내 코드를 추가했습니다. Christine, 지금까지 모든 도움을 주셔서 대단히 감사합니다. –