我有各种各样的EXCEL表格
C:\ Documents and 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;
详细问题在此链接中,我在那里提供了解决方案 how to create Delphi 4 structure to map column names in XLS to column names in SQL
我只是接受线索,请帮助我。
答案 0 :(得分:1)
在the code I gave you中,请注意Values
属性括号内的值为引用。这是一个字符串。也许你打算在引号中加上“smrBgm229GallonsGross”,就像这样:
ColumnNameMap.Values['smrBgm229GallonsGross'] := 'smrBgm167GallonsGrosssDA';
在您的代码中,编译器抱怨它无法识别标识符smrBgm229GallonsGross
。看看你的代码。 你声明了这样的标识符?如果没有,那么你不能指望编译器知道你对它的要求,并且错误信息非常有意义。
(如果您使用的是Perl,编译器可能已经知道您想要的内容。在某些情况下,所谓的“裸字”将被解释为字符串文字而不是标识符。但这是Perl,而不是Delphi。 )
到目前为止,我只关注提到smrBgm229GallonsGross
的第一行代码。但是,还有五行代码,您可以在其中查找名称的索引,然后将值赋给变量,这些代码需要适当的变量声明。在我的示例中,我使用伪造的变量名ColumnName
来表示您当时正在处理的任何输入列的名称。我假设您将循环遍历列的列表,因此您将对每个列执行相同的操作,从Excel电子表格中获取值并将其传输到数据库中的相应列,该列也由 - 变身名称RealColumnName
。