procedure TStudentForm.QuedingFlatSpeedButtonClick(Sender: TObject);
var
        Sqlstr,
        Boy,gril:string;
begin
        if      StudentQuery.Active=true        then
                StudentQuery.Active:=false;
        StudentQuery.SQL.Clear;
        boy:='男';
        gril:='女';
        if      (ClassFlatEdit.Text<>'')        And
                (ClassMannumFlatEdit.Text<>'')  And
                (XueyuanNameFlatComboBox.Text<>'')      And
                (EnterSchTimeMaskEdit.Text<>'')
        then
        begin
                Sqlstr:='Insert into 学校在籍学生情况表 values (';
                Sqlstr:=Sqlstr+EnterschtimeMaskEdit.Text+',';
                if      BoyFlatCheckBox.Checked         then
                        Sqlstr:=Sqlstr+'"'+boy+'"'+','
                else
                        Sqlstr:=Sqlstr+'"'+gril+'"'+',';
                Sqlstr:=Sqlstr+'"'+ClassFlatEdit.Text+'"'+','+'"'+ClassManNumFlatEdit.Text+'",'+'"'+XueyuanNameFlatComboBox.Text+'")';
        end ;
       StudentQuery.SQL.Add(Sqlstr);
       StudentQuery.ExecSQL;
       ShowMessage('添加数据成功!');end;
不知道怎么就是不能执行!
我以为是我动态加入sql时的错误!
但是有找不出!
劳驾帮我改!
如果能提供理论知道的也加分!
在双节期间,加分双倍!
特此声名!

解决方案 »

  1.   

    这里:
    Sqlstr+'"'+boy+'"'+','改成:
    Sqlstr+chr(39)+boy+chr(39)+','用chr(39)代替'"'用"号是不对的
      

  2.   

    你在调试的时候先用showmessage显示一下的的sqlstr,我感觉你的
    if      BoyFlatCheckBox.Checked         then
                            Sqlstr:=Sqlstr+'"'+boy+'"'+','
                    else
                            Sqlstr:=Sqlstr+'"'+gril+'"'+',';
    中“的地方有问题
      

  3.   

    同意 z33(第三使) 的话,用chr(39)代替'"'
      

  4.   

    不好意思,我错了
    Sqlstr:=Sqlstr+''''+boy+'''';
      

  5.   

    我发现在csdn上有很多这样的问题,
    代码写的老长,错误找不到.
    这个应该是调试方法的问题,有谁能写点调试方法,供大家参考那?
      

  6.   

    if application.MessageBox('Sqlstr','查看',1) =1 then
    begin
      StudentQuery.ExecSQL;
      ShowMessage('添加数据成功!');
    end;这样在执行前可以看下Sqlstr是不是有语法问题。
    我个很喜欢用 application.MessageBox 调试。
      

  7.   

    看起来代码没有问题
    很可能就是"出了问题
    sqlserver只支持单引号字符串的
    同意楼上的说法更换一下
      

  8.   

    这里:
    Sqlstr+'"'+boy+'"'+','
    改为
    sqlstr+''''+boy+''''+','
      

  9.   

    设置断点,在StudentQuery.ExecSQL前把sql取出来,到数据库中执行一下就知道了。
      

  10.   

    因为你打开帮助看看
    ''''代表{'}
    你只有要在'select .....from...where ..id='''+edit1.text+''''
    这时可以用到'''
    其实在DELPHI里边''代表{'}自己看帮助吧!
      

  11.   

    SQL里就有帮助关于连接的方式。
    还有SQL也可以这样写
    With adoquery1 do
    Begin
      Close;
      SQL.Clear;
      SQL.Add('');
      Open;
    End;
      

  12.   

    出现这种错误提示是怎么了!Query:  CommandText does not retuen a return result set!
      

  13.   

    1:用QuotedStr() ,可以解决你的问题,用CHR(39)或CHR(34)太麻烦,更不能写''''+string+'''',如果这样ASP中的输入内容来进行SQL语句的攻击的BUG又来了..(这在DELPHI中也一样存在)
    2对于执行这种没有返回结果的SQL语名,我建议用ADOCONNECTION的EXECUTE来执行,效益要高一点.
      

  14.   

    如何处理内连接,外连接,以及外联接中左外联接,右外联接:
    支持Access中 查询,sql生成器,关于各种连接的语法,left join ,right join ,inner join ,具体语法,你自己去看看吧!