如何在Delphi4中映射名称

时间:2009-09-25 11:47:14

标签: delphi

我有一个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“?????????????

3 个答案:

答案 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;