数据库:(分别为英文表名称、中文表名称、英文字段、中文字段)
ENBMC  CNBMC   ENZD   CNZD
A001   人员表  C0001  年龄
A001   人员表  C0002  出生日期
请问怎么把 :  ~人员表.年龄~  := year(Getdate()) - year(~人员表.出生日期~)
翻译成:      A001.C0001 := year(Getdate()) - year(A001.C0002)然后怎么些个过程去执行上面的语句:
update A001 set A001.C0001=year(Getdate()) - year(A001.C0002)

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, StrUtils;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;type
            TSwitchInfo = record
                    ENBMC: string;
                    CNBMC: string;
                    ENZD: string;
                    CNZD: string;
            end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
            dz: array of TSwitchInfo;
            mStr: string;
            i: integer;
            mCount: integer;
    begin
            //初始化对照表,示例为固定初始化,局部变量
            //实际应用时改为全局变量,并根据数据库内的情况来初始化
            mCount := 2;
            SetLength(dz,mCount);        dz[0].ENBMC := 'A001';
            dz[0].CNBMC := '人员表';
            dz[0].ENZD := 'C0001';
            dz[0].CNZD := '年龄';        dz[1].ENBMC :='A001';
            dz[1].CNBMC :='人员表';
            dz[1].ENZD := 'C0002';
            dz[1].CNZD := '出生日期';        //要转换的表达式
            mStr := '~人员表.年龄~  := year(Getdate()) - year(~人员表.出生日期~)';
            mStr := StringReplace(mStr,'~','',[rfReplaceAll]);        //第一次转换,变为英文表达式
            for i:=0 to mCount-1 do
                    mStr := StringReplace(mStr,dz[i].CNBMC + '.' + dz[i].CNZD
                            ,dz[i].ENBMC + '.' + dz[i].ENZD,[rfReplaceAll]);        //第二次转换,变为sql语句
            mStr := StringReplace(mStr,':=','=',[rfReplaceAll]);
            mStr := 'UPDATE ' + LeftBStr(mStr,Pos('.',mStr)-1) + ' SET ' + mStr;
            showmessage(mStr);
    end;end.
      

  2.   

    用存储过程和Delphi代码实现原理相同
      

  3.   

    如果是本地操作,就用DELPHI编程处理。如果是服务器/客户机这些模式,就用存储过程。。