2009-09-22 47 views
0

我有一個EXCEL片witgh各種未說明的標識符

C:\ Documents和Settings \ DELFI \ MilkDataMgr \ FtsExcel.pas(2056):未聲明的標識符:smrBgm167GallonsGrosssDA'

procedure convertXSLToDelfi(fuel: TFtsFuelTypes; const prefix: string); 
var 
ColumnNameMap : TStrings; 
i    : Integer; 
other   : string; 
begin 

    { ColumnNameMap := TStrings; } 
    ColumnNameMap := TStringList.Create; 
    ColumnNameMap.Values['smrBgm229GallonsGross']:=' smrBgm167GallonsGrosssDA'; 
    i := ColumnNameMap.IndexOfName(smrBgm229GallonsGross); 
    if i >= 0 then 
    smrBgm229GallonsGross:= ColumnNameMap.Values[smrBgm229GallonsGross] 
    else 
    smrBgm229GallonsGross:= smrBgm229GallonsGross; 
end; 

詳細的問題是在這個鏈接,我folowed提供的解決方案 how to create Delphi 4 structure to map column names in XLS to column names in SQL

我只是撿線程好心幫我。

+0

一個Excel工作表與各種*什麼*?這個問題真的是關於一個未聲明的標識符嗎?如果是這樣,這裏的代碼與錯誤有什麼關係?請複製並粘貼顯示錯誤的代碼。 –

回答

1

the code I gave you中,請注意Values屬性在括號內的值爲,引用爲。這是一個字符串。也許你的意思是有「smrBgm229GallonsGross」引號,也就像這樣:

ColumnNameMap.Values['smrBgm229GallonsGross'] := 'smrBgm167GallonsGrosssDA'; 

在你的代碼,編譯器抱怨說,它無法識別的標識smrBgm229GallonsGross。看看你的代碼。你有宣佈這樣一個標識符?如果沒有,那麼你不能指望編譯器知道你在問什麼,並且錯誤信息是非常有意義的。如果你使用的是Perl,編譯器可能已經知道你想要什麼,在某些情況下,所謂的「空白字符」將被解釋爲字符串文字而不是標識符,但這是Perl,而不是Delphi )

到目前爲止,我一直只看第一行代碼,提到smrBgm229GallonsGross。但是,還有五行代碼,您可以在其中查找名稱索引,然後將值分配給變量,並且這些行將需要正確聲明變量。在我的示例中,我使用組成的變量名稱ColumnName來表示當時正在處理的任何輸入列的名稱。我認爲你會迭代循環中的一列列表,所以你會爲每一列做同樣的事情,從你的Excel電子表格中獲取一個值,並將它傳送到數據庫中相應的列中,這也代表了-made-up變量名稱RealColumnName

+0

你是對的Rob,它在我創建的過程中未定義。 – vas

+0

此外,我編碼爲 「ColumnNameMap.Values'smrBgm229GallonsGross']:='smrBgm167GallonsGrosssDA';我在此處輸入了一個類型。」 – vas

+0

我更正了Typo ....我也評論過 {ColumnNameMap:= TStrings; } 我得到一個錯誤 「[錯誤] smrXcel.pas(2251):不兼容的類型:'TStrings'和'Class reference'」在這個地方。 在你的代碼中,它包含在內。是嗎? – vas