string sql2;
            string flag = "";
            if (radioButton3.Checked)//全部
            {
                flag = "1=1";
            }
            if (radioButton1.Checked)//未付款
            {
                flag = "flag='0'";
            }
            if (radioButton2.Checked)//已付款
            {
                flag="flag='1'";
            }
            sql2 = "select * from TY2010_XSFHPAR where SHRQ between #" + dateTimePicker1.Value.ToString("yyyy/MM/dd HH:mm:ss") + "# and #" + dateTimePicker2.Value.Date.ToString("yyyy/MM/dd HH:mm:ss") + "# and "+flag;
           

解决方案 »

  1.   


    修改一下:
      string sql2;
                string flag = "";
                string guest="";
                if (radioButton3.Checked)
                {
                    flag = "1=1";
                }
                else if (radioButton1.Checked)
                {
                    flag = "flag='0'";
                }
                else if (radioButton2.Checked)
                {
                    flag = "flag='1'";
                }
                else
                {
                    MessageBox.Show("请选择付款方式"); 
                }
              
               guest = comboBox1.SelectedItem.ToString().Trim();//客户名字
               sql2 = "select * from TY2010_XSFHPAR where 客户='"+guest+"' and SHRQ between #" + dateTimePicker1.Value.ToString("yyyy/MM/dd HH:mm:ss") + "# and #" + dateTimePicker2.Value.Date.ToString("yyyy/MM/dd HH:mm:ss") + "# and "+flag;
               
      

  2.   

    你无需判断 radioButton3.Checked。这个控件只是用来参与确保同一组RadioButton中只能有一个选中就够了,它用不着参与拼sql的工作。
      

  3.   

    注意,在你的UI设计中,要将三个RadioButton设置为一组(组名相同),保证只能有一个按钮选中。能不写代码的,就不要写代码。要擅用控件现成的特性来实现一部分业务逻辑控制。
      

  4.   

    sql怎么也好说,但是你把sql写在代码里面实在是没必要。
      

  5.   

    如果这样将变量填加至字符串中的话容量出错,且不安全,建议用
    select * from TY2010_XSFHPAR where SHRQ between ? and ? and flag = ?
    然后以参数的形式去填加值就可以了。
    cmd.parameters.add("@SHRQ",odbctype.date).values =  dateTimePicker1.Value.Date;
    cmd.parameters.add("@SHRQ",odbctype.date).values = dateTimePicker2.Value.Date;
    cmd.parameters.add("flag",odbctype.char).values = radioButton3;
    大概是这个意思,最后一个可以提前判断然后
      

  6.   

    写存储过程,定义三个变量:开始时间、结束时间和flag, 然后在代码里调用。养成习惯少把查询语句写到代码里。