2014-03-04 3 views
1

시나리오의 가능한 많은 변형을 사용하여 동적으로 작성된 IbQuery가 있습니다. 실행 후 특정 필드가 포함되어 있고 데이터가 있는지 테스트하려고합니다. 이와 비슷한 것 :Interbase IBQuery 동적 필드를 감지하는 방법

ibqry.fetchall(); 

while not ibqry.eof do 
begin 
if (ibqry.FieldByName(‘Lastname’) <> null) 
    lname := ibqry. FieldByName(‘Lastname’).tostring() 
else 
    lname := ‘’ 

ect.... 
end 

어떻게하면됩니까? 감사.

답변

1

TDataSet.FieldByName은 데이터 집합에없는 입력란에 액세스하려고하면 예외가 발생합니다.

대신 TDataSet.FindField을 사용할 수 있습니다. 필드가있는 경우 필드에 대한 참조를 반환하고 그렇지 않으면 nil을 반환합니다. 이 같은 것이 당신을 위해 일해야합니다 :

var 
    LastNameField: TField; 
begin 
    LastNameField := ibqry.FindField('LastName'); 

    ibqry.fetchall(); 

    while not ibqry.Eof do 
    begin 
    lName := ''; 
    if Assigned(LastNameField) then 
     if not LastNameField.IsNull then 
     lName := LastNameField.AsString; 

    // Do whatever with query content 

    ibqry.Next; 
    end; 
end; 
+0

켄, 정확히 성을 발견하지 못하고 예외를 처리하지 않은 상태로 남겨두면 다른 사람의 코드를 고쳐야 할 필요가 있습니다. –