2014-07-07 3 views
0

마스터 세부 관계에 두 개의 테이블이 있습니다. TFD 테이블 사용. 세부 테이블을 TDBGrid에 표시합니다.Delphi XE6 FireDac 마스터 세부 오류

마스터 테이블을 불러올 때 하나의 세부 레코드를 만들 수 있습니다. 잠시 추가하려고하면 문제가 시작됩니다.

시스템은 두 번째 레코드를 데이터베이스에 게시하지만 상세 그리드에서 thrid 레코드에 대한 새 라인을 추가 할 때 두 번째 레코드의 정보로 채 웁니다. 이 세 번째 기록을 생성 변경 오류 : 나는 두 번째 레코드를 변경 한 경우로

Project xyz.exe raised exception class EFDException with message '[FireDAC][DApt]-400. Update command updated [2] instead of [1] record. Possible reasons: update table does not have a PK or row identifier, record has been changed/deleted by another user'.

그러나 변경 사항이 데이터베이스에 저장합니까 : 나는납니다 델파이의 디버거에서 확인을 클릭 또한

Project xyz.exe raised exception class EFDDBEngineException with message '[FireDAC][Phys][FB]-312. Exact update affected [2] rows, while [1] was requested'.

그리드의 두 번째 레코드는 세 번째 레코드에 입력 된 내용도 반영합니다.) 존재하지 않는 세 번째 레코드를 업데이트하려고 시도하면서 생성 된 것으로 알고 있습니다.

프로그램을 종료하고 데이터베이스를 검사 할 때 오류가 발생하기 전에 마지막 게시물의 저장된 지점에있는 데이터베이스에는 두 개의 레코드 만 있습니다. 응용 프로그램을 다시 열면 두 번째와 세 번째가 동일한 세 개의 레코드가 표시됩니다.

어떤 도움이나 아이디어라도 높이 평가할 수 있습니다.

팔리 아마 UpdateOptions.KayFields 및 UpdateOptions.UpdateTableName은 당신을 도울 것입니다

+0

질문에 답을 얻지는 못했지만 자세한 내용은 TFDQuery로 전환하여 해결할 수있었습니다. Farley – farley

+0

테이블에 PK가 있습니까? – MartynA

+0

안녕하세요 MartynA - 그것은 생성 된 unigue 정수 PK있다. – farley

답변

0

. KeyFields의 PK 필드와 TFDTable의 UpdateTableName 속성의 테이블 이름을 가라 앉히십시오.