//表名,关键字段名,单条内容的SQL语句,产生新记录的值
function Tfrmdmmain.CopyTbale(const tablename, fileldname, swhere,
  newfileldstring: string): integer;
  var sql,sqlstring,sqlvalue,newsqlvalue:string;
   i:integer;

 begin
 sql := 'INSERT INTO [%s] (%s) VALUES(%s)';


  self.fykExecute.Close ;
  self.fykExecute.SQL.Text := swhere;
  self.fykExecute.Open ;
  //取得字段资料    ,注意这里进行字段类型的判断,及NULL的处理。针对SQLSERVER
  sqlstring:=StringReplace(Trim(fykExecute.FieldList.Text),   #13#10,   ',',   [rfReplaceAll]);
  for i := 0 to fykExecute.FieldCount -1 do
  begin
      if  fykExecute.Fields[i].FieldName =  fileldname then begin
           sqlvalue :=sqlvalue + newfileldstring +',';
      end else begin
        if  fykExecute.Fields[i].DataType in [ftString , ftDate, ftTime, ftDateTime, ftMemo, ftFmtMemo, ftWideString] then begin
         if  fykExecute.Fields[i].AsString <>'' then begin
             sqlvalue :=sqlvalue +''''+ fykExecute.Fields[i].AsString +''',';
          end else begin
             sqlvalue :=sqlvalue +'NULL'+',';
          end;
        end else begin

          if  fykExecute.Fields[i].AsString <>'' then begin
             sqlvalue :=sqlvalue + fykExecute.Fields[i].AsString +',';
          end else begin
             sqlvalue :=sqlvalue +'NULL'+',';
          end;

        end;

      end;

  end;

   newsqlvalue:= copy(sqlvalue,0,length(sqlvalue)-1)  ;
//  showessage(sqlvalue);

  self.fykExecute.Close ;
  self.fykExecute.SQL.Text := format(sql,[tablename,sqlstring,newsqlvalue]);
  fykExecute.SQL.SaveToFile('C:\1.TXT');
  Resuntl :=  self.fykExecute.ExecSQL ;

end;