您的位置:程序门 -> delphi -> 数据库相关



谁能帮帮我啊,一个adocommand执行的时候遇到的问题!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


谁能帮帮我啊,一个adocommand执行的时候遇到的问题![已结贴,结贴人:silvering]
发表于:2007-01-24 17:30:14 楼主
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里面有不能对的单引或者双引号就报语法错误,但是那些引号是必须的。
谁知道怎么解决啊!谢谢了!
发表于:2007-01-24 17:46:371楼 得分:1
sql:= 'insert   into   tbl_talkcontent_log(caller,calltime,slicid,talkcontent)   values( ' ' '+phonenum.text+ ' ' ', ' ' '+calltime+ ' ' ', ' ' '+loginform.slicid+ ' ' ', ' ' '+talkcontent+ ' ' ') ';

数据表tbl_talkcontent_log中的字段是不是都是字符型的啊?如果是的话,在value字句中,就不要加上引号了,因为你的phonenum.text本身就是字符型的啦
发表于:2007-01-24 17:47:462楼 得分:0
哦,都是varchar类型的。。。
发表于:2007-01-24 17:56:123楼 得分:0
去掉了引号也不管用啊,比如我的内容是 "dfsadf ' 'dd "d ' ' 'dsfa '这些乱东西

程序就报错了,
显示“在此上下文中不允许使用 "dfsadf ' 'dd,此处只能只用常量或表达式之类的话”
发表于:2007-01-25 08:59:244楼 得分:1
是不是你数据库字段不是字符型的
如果只能输入数字的话,可以
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;
发表于:2007-01-25 09:46:305楼 得分:1
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;
发表于:2007-01-25 09:47:426楼 得分:1
用这个
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;
发表于:2007-01-25 12:46:197楼 得分:0
我用了,但是还是不行啊,我的文本内容必须有没有闭合的单引或者双引号啊
怎么办呢?
发表于:2007-01-25 13:09:018楼 得分:15
' ' '+phonenum.text+ ' ' '改成
'+quotedstr(phonenum.text)+ ',下面的都这样该。或者用参数。
发表于:2007-01-25 13:22:339楼 得分:1
把   talkcontent   里的单引号   用   两个单引号替换   试试看
发表于:2007-01-25 13:30:1410楼 得分:0
谢谢,可以了
用quotedstr(phonenum.text)


快速检索

最新资讯
热门点击