TalkContent:=Memo_content.Text;sql:='insert into TBL_TalkContent_log(Caller,CallTime,SlicID,TalkContent) values('''+PhoneNum.text+''','''+CallTime+''','''+LoginForm.SlicID+''','''+TalkContent+''')';DM.ADOCommand.CommandText:=sql;DM.ADOCommand.Execute;代码如上,但是如果TalkContent里面有不能对的单引或者双引号就报语法错误,但是那些引号是必须的。
谁知道怎么解决啊!谢谢了!

解决方案 »

  1.   

    sql:='insert into TBL_TalkContent_log(Caller,CallTime,SlicID,TalkContent) values('''+PhoneNum.text+''','''+CallTime+''','''+LoginForm.SlicID+''','''+TalkContent+''')';数据表TBL_TalkContent_log中的字段是不是都是字符型的啊?如果是的话,在VALUE字句中,就不要加上引号了,因为你的PhoneNum.text本身就是字符型的啦
      

  2.   

    去掉了引号也不管用啊,比如我的内容是"dfsadf''dd"d'''dsfa'这些乱东西程序就报错了,
    显示“在此上下文中不允许使用"dfsadf''dd,此处只能只用常量或表达式之类的话”
      

  3.   

    是不是你数据库字段不是字符型的
    如果只能输入数字的话,可以
    if not (Key in ['0'..'9', Char(VK_BACK)]) then
          begin
            if not  (key   in   ['0'..'9','.',#13,#8])   then
          begin
              key:=#0;
              showmessage('只能输入小数点和数字!');
          end;
        end;
      

  4.   

    uses
      SysUtils;
    .....TalkContent:=StringReplace(Memo_content.Text,''','''',[rfReplaceAll]);sql:='insert into TBL_TalkContent_log(Caller,CallTime,SlicID,TalkContent) values('''+PhoneNum.text+''','''+CallTime+''','''+LoginForm.SlicID+''','''+TalkContent+''')';DM.ADOCommand.CommandText:=sql;DM.ADOCommand.Execute;
      

  5.   

    用这个
    uses
      SysUtils;
    .....TalkContent:=StringReplace(Memo_content.Text,'''','''''',[rfReplaceAll]);sql:='insert into TBL_TalkContent_log(Caller,CallTime,SlicID,TalkContent) values('''+PhoneNum.text+''','''+CallTime+''','''+LoginForm.SlicID+''','''+TalkContent+''')';DM.ADOCommand.CommandText:=sql;DM.ADOCommand.Execute;
      

  6.   

    '''+PhoneNum.text+'''改成
    '+quotedstr(phonenum.text)+',下面的都这样该。或者用参数。
      

  7.   

    把 TalkContent 里的单引号 用 两个单引号替换 试试看
      

  8.   

    谢谢,可以了
    用quotedstr(phonenum.text)