求教哥哥们一个简单的SQL的insert语句(100)

  • 主题发起人 主题发起人 huamulan
  • 开始时间 开始时间
H

huamulan

Unregistered / Unconfirmed
GUEST, unregistred user!
sql2000建表XBMZ_QC,字段:BID : varchar 20 INDT: Datetime 8 PP: int inpress:decimal 5(精度4,小数点2)使用INSERT INTO命令加入数据。格式如下AQ.Close;AQ.SQL.Clear;AQ.SQL.Add('INSERT INTO XBMZ_QC[BID,INDT,PP,inpress] ');AQ.SQL.Add('values(:AA,:BB,:CC,:DD) ');AQ.parameters.ParamByName('AA').value:=edit1.text; AQ.parameters.ParamByName('BB').value:=strtodatetime(Datetimetostr(datetimepicker1.date)+' '+Datetimetostr(datetimepicker2.time)); AQ.parameters.ParamByName('CC').value:=0; AQ.parameters.ParamByName('DD').value:=strtofloat(edit2.text); AQ.EXECSQL;AQ.OPEN;编译后出错,请问应该怎么对不同数据类型的字段做赋值呢??我用的是SQL2000建的表哦。AQ.Parameters.ParamByName('AAA').Value :=DDP.DateTime;
 
你这个地方,如果采用存储过场编写你的操作,然后调用这个存储过场,那就很好弄了。何必对sql的操作放到程序界面内来弄啊,在SQL2000存储过场内弄就好弄了。存储过程:创建个存储过程 4个参数,@BID varchar(20),@INDT Datetime,@PP int,@inpress decimal insert into XBMZ_QC (BID,INDT,PP,inpress)select @BID ,@INDT ,@PP,@inpress 就可以了,需要参数类型变化的话,在存储过程内也好转换点。注意中英文字符的处理
 
你的這句:AQ.SQL.Add('INSERT INTO XBMZ_QC[BID,INDT,PP,inpress] ');有問題,不能用方括號,而是用括號。一般來說直接賦值不會報錯的。除非一種情況,就是賦的值是空的。就是說,假如這個字段是數值或是日期(只要不是字符型),執行這一句:AQ.Parameters.ParamByName('AAA').Value :='';就會報錯。所以,只要對不是字符型的進行一下判斷,如果是'',就是這句:AQ.Parameters.ParamByName('AAA').Value :=null;就可以了。
 
think you .very much.
 
后退
顶部