2014-03-04 44 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

感謝肯,正是我需要解決別人的代碼,如果姓沒有找到和離開異常未處理的,只是拋出一個異常。 –