2016-02-19 29 views
0

我在名爲Memo類型的完整地址的客戶端數據集中有一個計算字段。連接TFields值

我想連接地址字段,這樣的事情:

TField* f = customersCDS->FieldByName("full_address"); 
    if(f) 
    { 
     f->Value = customersCDS->FieldByName("address_line1")->Value; 
     f->Value += "\n"; 
     f->Value += customersCDS->FieldByName("address_line2")->Value; 
     .. 
    } 

然而,上述不工作。我收到編譯器錯誤:

E2015 Ambiguity between '_fastcall operator Variant::float() const' and '_fastcall operator Variant::double() const' 

最後,我想計算的字段綁定在TMemo,表現出對多條線路的詳細地址。

回答

1

TField::Value是屬性。您不能使用具有屬性的複合賦值運算符,如+=。你必須使用+=分開,如:

TField* f = customersCDS->FieldByName("full_address"); 
if (f) 
{ 
    f->Value = customersCDS->FieldByName("address_line1")->Value; 
    f->Value = f->Value + String("\n"); 
    f->Value = f->Value + customersCDS->FieldByName("address_line2")->Value; 
    .. 
} 

在這種情況下,你最好使用而不是一個變量:

TField* f = customersCDS->FieldByName("full_address"); 
if (f) 
{ 
    String s = customersCDS->FieldByName("address_line1")->Value; 
    s += "\n"; 
    s += customersCDS->FieldByName("address_line2")->Value; 
    //... 
    f->Value = s; 
}