各位大哥哥好,小弟在校学生,初学Delphi,遇到很多问题,请各位不吝赐教。
我建立了一个窗口,想用一个条件判断的语句来实现,如果edit1和edit2及radiobutton1和2都没有值的话,就弹出信息“输入不能为空”,如果输入都正确,就执行SQL语句,然后弹出操作成功。
我的代码如下,运行的结果是 :只有当edit2.text=''时,才弹出“输入不能为空”,而且SQL的代码还是执行了。像edit1.text=''时和radiobutton=false,不会弹出“输入不能为空的消息”且SQL也执行了。请帮忙看看要如何修改啊~~
if (trim(edit2.Text)<>'')and(trim(edit1.Text)<>'')and ((radiobutton1.Checked=false) or (radiobutton2.Checked=false))  then
  begin  
  with Dingshishezhi do
  begin  
  close;
  sql.Clear;
  sql.Add('update 机器信息 set 上机时间=:a,下机时间=:b,费用=:c,人数=:d,状态=:e where 机器号码=:s');
  parameters.ParamByName('s').Value:=strtoInt(form1.listview1.Selected.Caption);
  parameters.ParamByName('a').Value:=datetimetostr(now());
  parameters.ParamByName('b').Value:=datetimetostr(IncMinute(now(),m));//计算下机时间
  parameters.ParamByName('c').Value:=trim(edit2.Text);  if   radiobutton1.Checked   then  parameters.ParamByName('d').Value:=1
  else parameters.ParamByName('d').Value:=2;
  if   radiobutton1.Checked   then  parameters.ParamByName('e').Value:='单人'
  else parameters.ParamByName('e').Value:='双人';
    execsql;
  end;
  Application.MessageBox('操作成功','提示',64);
  end 
  else application.MessageBox('输入信息不能为空!','提示',64);

解决方案 »

  1.   


    if trim(edit2.Text) <>''then 
      begin  
         //......
       end 
      else application.MessageBox('输入信息不能为空!','提示',64);
      

  2.   

    if (trim(edit2.Text) <>'')or (trim(edit1.Text) <>'')or((radiobutton1.Checked=false) or (radiobutton2.Checked=false))  then 
      

  3.   

    在开始加判断:
    if trim(edit1.text)='' then 
    begin
      MessageBox(handle,'不能为空','提示',MB_ICONINFORMATION);
      edit1.setfocus;
      Exit;
    end;
    ......
    以此进行验证,保证都输入再执行你的SQL
      

  4.   

    你的要求是都没有值才弹出“输入值不能为空”,反过来说只要一个有值就是可以的,你的判断语句不对,应改为:
    if (trim(edit2.Text) <>'') or (trim(edit1.Text) <>'') or radiobutton1.Checked or  radiobutton2.Checked then 
    ...
      

  5.   


     if (trim(edit2.Text) <>'') then
      begin
         
           if(trim(edit1.Text) <>'')and ((radiobutton1.Checked=false) or(radiobutton2.Checked=false))    then 
           begin  
           with Dingshishezhi do 
             begin  
             close; 
             sql.Clear; 
             sql.Add('update 机器信息 set 上机时间=:a,下机时间=:b,费用=:c,人数=:d,状态=:e where 机器号码=:s'); 
             parameters.ParamByName('s').Value:=strtoInt(form1.listview1.Selected.Caption); 
             parameters.ParamByName('a').Value:=datetimetostr(now()); 
             parameters.ParamByName('b').Value:=datetimetostr(IncMinute(now(),m));//计算下机时间 
             parameters.ParamByName('c').Value:=trim(edit2.Text);          if  radiobutton1.Checked  then  parameters.ParamByName('d').Value:=1 
             else parameters.ParamByName('d').Value:=2; 
             if  radiobutton1.Checked  then  parameters.ParamByName('e').Value:='单人' 
             else parameters.ParamByName('e').Value:='双人'; 
             execsql; 
             end; 
          Application.MessageBox('操作成功','提示',64);       end ;
      end
      else application.MessageBox('输入信息不能为空!','提示',64);注意格式一个begin对一个end  外层与内层空一行 一个if对应一个else 这样逻辑才清晰