다른 테이블에 데이터를 삽입하는 트리거가있는 SQL Server 2005 테이블에 레코드를 삽입하는 ADOQuery가 있습니다. 다음 코드를 사용하여 쿼리를 새로 고치고 Row cannot be located for updating
을 피하십시오 (각 테이블에 PK가 있고 UpdateCriteria 속성이 설정되어 있고 커서가 동적으로 설정되어 있지만 때때로 오류가 발생합니다.) 그러나 지금은 질문이 아닙니다.ADOQuery, trigger 및 requery bug
procedure Requery(T: TCustomADODataSet; IDField: string);
var
i: integer;
begin
if T.RecordCount > 0 then
i := T.FieldByName(IDField).AsInteger;
T.Requery();
if T.RecordCount > 0 then
T.Locate(IDField, i, []);
end;
재 입력하기 전에 ID 필드의 값을 가져올 수 있습니다. 그러나 재귀 후, ID 필드는 트리거에 의해 insterted 다른 테이블 레코드의 ID 필드 값을 반환합니다. 두 테이블 모두 같은 이름의 ID 필드가 있습니다. 또한 Too Many Rows Affected
오류를 피하기 위해 SET NOCOUNT ON .... OFF
을 추가했지만, 내 문제에 영향을 미치지는 않습니다. Delphi 6 - 7 및 SQL Server 2000에서 작업 할 때 이런 오류를 보지 못했습니다. 따라서 SDAC 또는 DAO을 시도해 볼 수 있습니다. SDAC 또는 DAO가 문제를 해결하거나 ADOQuery를 변경하지 않고도 해결책이 있습니까?
ID 필드 값을 얻기 위해 무엇을 사용합니까? – kristof
ADOQueryName.FieldByName ('ID'). AsInteger; –