RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:9:30-18:00
你可能遇到了下面的问题
关闭右侧工具栏
一种利用EXCEL快速写SQL语句的方法
  • 作者:zhaozj
  • 发表时间:2020-12-23 10:58
  • 来源:未知

复杂的SQL我从不手工写,都是在EXCEL中利用现有的表格直接粘贴到源程序中的,下面我详细介绍这种方法。下面这个插入过程有没有可读性?要知道每一行'+'号前面的内容都是从现成的EXCEL中直接粘贴过来的,工作量很小。pu_insert('fhd',[                   //写发货单到数据库中        '    Fid integer         工厂代号     '+  factid        '    FHDCode Varchar 20      单据编号     '+  cxbuttonedit1.text        '    OrderNo Varchar 20  必填 定单编号     '+  cxtextedit3.text        '    FHDDate datetime        必填 发货日期     '+  pu_today        '    Remark  Varchar 200     备注     '+  cxtextedit6.text        '    car Varchar 10      车队代号     '+  cxtextedit1.text        '    receiverman Varchar 10      收货人      '+  cxtextedit5.text        '    DeliverTo   Varchar 80      交货地点     '+  cxtextedit2.text        ]);                             

===========pu_insert过程的delphi源码如下====================procedure pu_insert(tablename:string;sarr:array of string);var rets,s,s1,s2:string;i,j,k,m,l:integer;c:char;beginrets:='(';l:=high(sarr);for i:=0 to l do begin    s:=sarr[i];k:=0; s1:='';    m:=length(s);    for j:=0 to m do     begin        if s[j]=#9 then inc(k) else           begin             if k=1 then s1:=s1+s[j];           end;     end;    if i=l then rets:=rets+s1+') values(' else rets:=rets+s1+','; end;           //以上取完了所有键名for i:=0 to l do begin    s:=sarr[i];k:=0; s1:='';s2:='';    m:=length(s);    for j:=0 to m do     begin        if s[j]=#9 then inc(k) else           begin             if k=2 then s1:=s1+s[j];             if k=11 then s2:=s2+s[j];           end;     end;    c:=upcase(s1[1]);    if i=l then begin                   if (c='D') and (s2='') then rets:=rets+' null) ' else  //日期为空时                   if (c='F') or (c='I') then rets:=rets+s2+') ' else     //数值类型                   rets:=rets+#39+s2+#39+') ';                            //#39是MSSQL字串分隔符                end                   else                begin                   if (c='D') and (s2='') then rets:=rets+' null,' else                   if (c='F') or (c='I') then rets:=rets+s2+',' else rets:=rets+#39+s2+#39+',';                end; end;if debug then tell('insert into '+tablename+' '+rets);pu_exec('insert into '+tablename+' '+rets);end;