我在edit1里面输入的字符是10个,但运行时仍然会出现 '读者借书证号不正确' 的对话框,为什么啊?百思不得其解啊而且把判断edit1的那段代码屏蔽掉后,数据库中并没有被更新,高手帮忙啊if RadioButton2.Checked then
    begin
      if Length(Edit1.Text)<>10 then
      begin
        MessageDlg('读者借书证号不正确',mtError,[mbok],0);
        Exit;
      end;
      try
        with DataModuleADO.ADOQuery1 do
        begin
          SQL.Clear;
          SQL.Add('update Reader set Name=:ReaderName,Sex=:Sex,IDCardNo=:IDCardNo where ReaderID=:ReaderID');
          Parameters.ParamByName('ReaderID').Value:=Edit1.Text;
          Parameters.ParamByName('ReaderName').Value:=Edit2.Text;
          parameters.ParamByName('Sex').Value:=IntToStr(ComboBox1.ItemIndex);
          Parameters.ParamByName('IDCardNo').Value:=Edit3.Text;
          ExecSQL;
        end;
      except
        MessageDlg('修改<'+Edit1.Text+'>失败',mtError,[mbok],0);
        Exit;
      end;
      MessageDlg('修改成功',mtInformation,[mbok],0);
    end;

解决方案 »

  1.   

    Length(Edit1.Text)改为Length(Trim(Edit1.Text))试试
      

  2.   

    建议不要用 :号方式的参数传递,
    以前发现过BUG,建议改成直接的字符串组合。
      

  3.   

    ShowMessage(IntToStr(Length(Trim(Edit1.Text))));
    这样测试没有发现错误吧?然后单步运行看看它为什么要进去
      

  4.   

    cuteant这家伙真是精力充沛,这么晚了还在上面!
      

  5.   

    zhangl_cn这家伙真是精力充沛,这么晚了还在上面!
      

  6.   

    在edit1里面输入的字符是10个,但运行时仍然会出现'读者借书证号不正确'的对话框。
      这应该是你输入的问题,我刚才是将你的代码拷了试验了一下,没有问题的,不过最好写成 Length(Trim(Edit1.Text))<>10,这样可以防止不小心多输入了空格。 
      

  7.   

    好像那个是错误的吧,应该是update吧
      

  8.   

    首先我没有输入
    edit1里的字符是从旁边的ListView中获取的
    我一点ListView的一行,里面的内容自动加到edit里
    现在先不谈edit,重要的问题是我把判断代码屏蔽后,数据库里没有更新,为什么啊
      

  9.   

    建议先在Sqlserver的查询分析器里试验一下,随便举个例子:
      update Reader set Name=Haison,Sex=male,IDCardNo=12345 where ReaderID=1234567890
      如果没有错误的话,可能就是你的数据库连接有问题,或者你的ReaderID没有和你的数据库中的已存在的值匹配,也就是你的edit1.txt输入的有问题,导致没有更新。