把edit控件中的内容写入sql数据库的时候这个'''分号如何加啊>
'insert into buypricetable (id,localno,djno,traxdate,qcno,innum,traxtype,buyprice,outnum,storeid,placeid,sl)' values(''+maxid+'',''+trim(edtlocalno.Text)+'',strtoint(trim(edtdjno.Text)),dtptraxdate.date,'''+trim(edtqcno.Text)+''',strtoint(trim(edtinnum.Text)),'''+trim(traxtype.Text)+''',strtoint(trim(edtprice.Text)),strtoint(trim(edtoutnum.Text)),'''+trim(edtstore.Text)+''','''+trim(edtplace.Text)+''',sl';这里面localno是字符型字段,id是integer型的.maxid, 是变量,traxdate是日期型的.这三种类型写的时候怎么样加分号啊>
比如整型的是这样加吗?''+maxid+''
字符型的是这样加吗?'''+edtlocalno.text+'''
日期型的怎么样加啊我这样写老报错.

解决方案 »

  1.   

    变量 maxid 是字符串类型的吗?比如整型的是这样加吗? ' '+maxid+ ' ' 如果maxid 是字符串类型的是正确的,如果是整型的就错了。字符型的是这样加吗? ' ' '+edtlocalno.text+ ' ' ' 是正确的。日期型的'''+dtptraxdate.date+'''是可以的。我的建议是这种新增数据的sql语句最好用参数形式的sql,这样会减少很多可能的错误,比如如果你的数据里面有'等这样的特殊字符就会出错了。
      

  2.   

    建议你看一下delphi的help里的说明,很清楚地,不行的话你干脆用quotedstr()函数
      

  3.   

    这里仅为说明,只写出关键的代码段供参考var
      SQL: String;
    begin
      SQL := 'Insert Into Table(StringField, IntField, FloatField, DateField)';
      SQL := FormatString('%s Values(%s, %d, %f, %s)', [SQL, QuotedStr(StringValue), IntValue, FloatValue, QuotedStr(DateToStr(DateValue))]);
    end;
      

  4.   

    to yztyzt 
    把edit控件中的内容写入sql数据库的时候这个 ' ' '分号如何加啊> 
    'insert   into   buypricetable   (id,localno,djno,traxdate,qcno,innum,traxtype,buyprice,outnum,storeid,placeid,sl) '   values( ' '+maxid+ ' ', ' '+trim(edtlocalno.Text)+ ' ',strtoint(trim(edtdjno.Text)),dtptraxdate.date, ' ' '+trim(edtqcno.Text)+ ' ' ',strtoint(trim(edtinnum.Text)), ' ' '+trim(traxtype.Text)+ ' ' ',strtoint(trim(edtprice.Text)),strtoint(trim(edtoutnum.Text)), ' ' '+trim(edtstore.Text)+ ' ' ', ' ' '+trim(edtplace.Text)+ ' ' ',sl '; 
    这里面localno是字符型字段,id是integer型的.maxid,   是变量,traxdate是日期型的.这三种类型写的时候怎么样加分号啊> 
    比如整型的是这样加吗? ' '+maxid+ ' ' 
    字符型的是这样加吗? ' ' '+edtlocalno.text+ ' ' ' 
    日期型的怎么样加啊 1:不管什么类型,都需要转化为字符型 例如:'''+adoQuery1.fieldbyname('column').Asstring+'''//adoQuery1.fieldbyname('column').Asstring都需要为字符型
    '''+inttostr(adoQuery1.fieldbyname('column').Asinteger)+'''
    或者datetimetostr(adoquery1.fieldbyname('appdate').AsDateTime