想把一个向数据库中添加数据作成一个函数,变量是STR_state:=‘修改’,请问该怎么写这个函数?(用SQL语句)。谢谢!

解决方案 »

  1.   

    //以前写的没用过
    g_tstrfields: TStrings;
    {  with g_tstrfields do
      begin
        Clear;
        Add('BOMID;' + mstrBomId);
        Add('WAREID;' + mstrId);
        Add('MATERIALID;' + mstrRId);
        Add('GTRATE;' + strk);
        Add('PRICE,' + g_fn_zero(mePrice.Text));
        Add('WSNAME;' + mstrSid);
        Add('ADVANCE;' + meAdvance.Text);
      end;}function g_fn_insert(strTableName: String): boolean;
    var
      I : integer;
      StrSql,StrField,StrValue : String;
      qry : Tquery;
    begin
      if strTableName='' then
      begin
        g_fn_MsgBox(ERROR_NIL,1);
        Result := FALSE;
        Exit;
      end;
      qry := g_dbplan.CreateQuery ;
      qry.Close ;
      For I := 0 to g_tstrfields.Count - 1 do
      begin
        StrField := StrField + getStrFirst(g_tstrfields.Strings[I]) + ',';
        if pos(';',g_tstrfields.Strings[I])>0 then
          StrValue := StrValue + '''' + getStrSecond(g_tstrfields.Strings[I])+ '''' + ','
        else
          StrValue := StrValue + getStrSecond(g_tstrfields.Strings[I])+ ',';
      end;
      StrField := copy(StrField,1,length(StrField) - 1);
      StrValue := copy(StrValue,1,length(StrValue) - 1);
      StrSql := 'insert into ' + strTableName + ' (' + StrField + ') values (' + StrValue + ')';
      qry.SQL.Text := StrSql;
      try
        qry.ExecSQL ;
      except
        g_fn_MsgBox(ERROR_DB_INSERT,1);
        Result := FALSE;
        Exit;
      end;
      Result := TRUE;
      qry.Free;
    end;