代码如下:
procedure TfrmSearchCheckAccount.btnSearchClick(Sender: TObject);
var SQLcmd:String;
begin
  If (edtCondition.Visible) and (edtCondition.Text = '') then
  begin
    Application.MessageBox('没有输入检索条件。','提示',0);
    edtCondition.SetFocus;
    Exit;
  end;
  With frmMain.qryMain do
  begin
    SQL.Clear;
    Case cboAn.ItemIndex Of   //查找条件是酒店名称
      0..2:begin                            //查找条件是酒店名、订单号、客人姓名
        Case cboAn.ItemIndex Of
          0:SQLcmd:='Select * From G_AccountCheck Where A_HotelName like ''%' + Trim(edtCondition.Text) + '%''';          //酒店名
          1:SQLcmd:='Select * From G_AccountCheck Where A_AccountNum like ''%' + Trim(edtCondition.Text) + '%''';         //订单号
          2:SQLcmd:='Select * From G_AccountCheck Where A_GuestName like ''%' + Trim(edtCondition.Text) + '%''';          //客人姓名
        end;
      3:SQLcmd:='Select * From G_AccountCheck Where A_IsInvoice = ''' + cboIs.Text + '''';
      4:SQLcmd:='Select * From G_AccountCheck Where A_IsYongJing = ''' + cboIs.Text + '''';
    end;
    SQL.Add(SQLcmd);
    Open;
    If SearchCheckAccount_IsNotFound then
    begin
      SearchCheckAccount_ShowTitle;     //显示标题
      SearchCheckAccount_AddData;       //显示数据
    end;
    Close;
  end;
  Close;
end;执行时提示
Undeclared identifier: '3'
Undeclared identifier: '4'
这是什么意思?

解决方案 »

  1.   

    嵌套的Case语句差一个end
    Case cboAn.ItemIndex Of   
          0..2:begin                            
            Case cboAn.ItemIndex Of
              0:SQLcmd:='Select * From G_AccountCheck Where A_HotelName like ''%' + Trim(edtCondition.Text) + '%''';          
              1:SQLcmd:='Select * From G_AccountCheck Where A_AccountNum like ''%' + Trim(edtCondition.Text) + '%''';         
              2:SQLcmd:='Select * From G_AccountCheck Where A_GuestName like ''%' + Trim(edtCondition.Text) + '%''';          
            end;//end of case 添加一个end
            end;//end of begin
      

  2.   

    这句 Case cboAn.ItemIndex Of  0..2 已指定了范围只能在0,1,2之间取值,
    当然你在case 3:...  case 4:... 时会出错
      

  3.   

    楼主的case不应该用嵌套,直接一层就行了!
      

  4.   

    不好意思看错了,不是我上面的说的情况,是小了end