我有一个Delphi 4应用程序,它从XLS 2003工作表(填充的表单)中提取数据并插入到SQL2005数据库中。
我在XSL和SQL2005中有一组字段被调用。在Delphi代码中它相应地称为133,167等。“smrBgm133GallonsGross,..”即“smrBgm”和“GrossGallons”周围的单词相应地在Delphi文件。
SQL/XLS Delphi
smrBgm133GallonsGross... 133
smrBgm167GallonsGross ... 167
对于上面的内容,我在XSL / SQL中添加了一个名为smrBgm167GallonsGrossDA的新字段
但PROBLEM在Delphi中它应该被命名为229,而不是'smrBgm167GallonsGrossDA'(根据某些商业规则;因为Delphi应用程序,处理EDI / XLS和EDI接受229)因此插入时出错并通过EXCEL表更新数据。“在数据库中找不到229”。 (Excel表格它被命名为'smrBgm167GallonsGrossDA',在Delphi中它被命名为'229'。)
如何告诉Delphi应用程序.... “如果是”smrBgm167GallonsGrossDA“则将其视为”229“?????????????
答案 0 :(得分:1)
不完全确定你需要什么,我不能从你特别要求的方面做出头脑或尾巴,但也许这会让你走上正确的道路。
function ExtractNumber(const Value: string): Integer;
begin
if Value = 'smrBgm167GallonsGrossDA' then
Result := 229
else
Result := YourNormalFunctionToExtractTheNumber(Value);
end;
答案 1 :(得分:0)
如果复制(fieldname,Length(fieldname) - 2,2)='DA'则 开始 delphiField = 229 端
???
答案 2 :(得分:0)
您可以创建查找表。可以用来查找名称。
例如:
const
cSize = 2;
cNames : array[0..cSize-1] of string = (
'Name1', 'Name2'
);
CNumbers : array[0..cSize-1] of Integer = (
99, 123
);
function Convert(const AName: string): Integer;
var
i : Integer;
begin
i := 0;
while (i<cSize) do begin
if cNames[i] = AName then begin
Result := cNumbers[i];
Exit;
end;
Inc(i);
end;
Result := NormalConvert(AName);
end;
请注意,您还可以使用一个记录数组:
type
TLookupRec = record
name : string;
number : Integer;
end;
const
cSize = 2;
cLookup : array[0..cSize-1] of TLookupRec = (
( name : 'Name1'; number : 99; ),
( name : 'Name2'; number : 123; )
);
function Convert(const AName: string): Integer;
var
i : Integer;
begin
i := 0;
while (i<cSize) do begin
if cLookUp[i].name = AName then begin
Result := cLookUp[i].number;
Exit;
end;
Inc(i);
end;
Result := NormalConvert(AName);
end;