现在要做一个图书的查询  有下列几种查询条件:书名,作者,出版社,日期(起始日期,截止日期)也可以联合查询也可以单独查询.别的都做出来了把SQL语句连接起来就可以.现在问题是比如 用户输入了起始日期 不输入截止日期的话SQL语句就会出错!想得到的效果是  输入了起始日期 就必须输入截止日期. 或者输入了截止日期就必须输入起始日期.这样的一个需求.就是不知道怎么验证了!我暂时是这么写的 但是这么写的话如果起始和截止日期都填写上了 就一直提示输入起始日期了!(是个笨办法)
---------------------
 if (!txtDate1.Text.Equals(""))
            {
                Label1.Text = "请输入截止日期!";
            }
            if (!txtDate2.Text.Equals(""))
            {
                Label1.Text = "请输起始止日期!";
            }
            if(txtDate2.Text.Equals("") && txtDate1.Text.Equals(""))
            {
                Response.Redirect("findbook.aspx?name=" + this.txtBname.Text + "&Author=" + this.txtAuthor.Text + "&cbs=" + this.txtCbs.Text + "&date1=" + this.txtDate1.Text + "&date2=" + this.txtDate2.Text + "");
            }
-------------------
都给我"绕"晕 了
没什么开发经验.
大家帮帮忙 谢谢了
本人有些菜.大家多多指教.当然 如果有更好的方法 希望大家告诉我.比如只输入起始日期的情况下 直接查询出来起始日期以后的 所有图书.

解决方案 »

  1.   

    起始日期可以输入。截止日期默认为当天啥 
    在TextBox中输入日期可以用控件。
    http://download.csdn.net/user/liuyun1987
    这里有我的资源下载
      

  2.   

    其實寫sql的時候,可以作個個判斷:
    if(txtDate1.Text!="" && txtDate2.Text=="")
    {
     string sql="select * from table where date>'"+txtDate1.Text+"'";
    }
    if(txtDate1.Text!="" && txtDate1.Text!="")
    {
     string sql="select * from table where date>'"+txtDate1.Text+"' and date<'"+txtDate1.Text+"'";
    }
    -------
    sql語句僅供參考~
      

  3.   

    if (txtDate1.Text.Trim().Equals(""))
    {
        Label1.Text = "请输入截止日期!";
    }
    else if (txtDate2.Text.Trim().Equals(""))
    {
        Label1.Text = "请输起始止日期!";
    }
    else
    {
        Response.Redirect("findbook.aspx?name=" + this.txtBname.Text + "&Author=" + this.txtAuthor.Text + "&cbs=" + this.txtCbs.Text + "&date1=" + this.txtDate1.Text + "&date2=" + this.txtDate2.Text + "");
    }
      

  4.   

    if (txtDate1.Text.Equals(""))
                {
                    Label1.Text = "请输入截止日期!";
                    return;
                }
                if (txtDate2.Text.Equals(""))
                {
                    Label1.Text = "请输起始止日期!";
                    return;
                }
                if(!(txtDate2.Text.Equals("") && txtDate1.Text.Equals("")))
                {
                    Response.Redirect("findbook.aspx?name=" + this.txtBname.Text + "&Author=" + this.txtAuthor.Text + "&cbs=" + this.txtCbs.Text + "&date1=" + this.txtDate1.Text + "&date2=" + this.txtDate2.Text + "");
                }
      

  5.   

    怎么会出错呢(endDate<@endDate or @endDate is null)
      

  6.   

    有个选择日期的JS写的控件 ,DatePicker,最新的2.1版本,很不错,其中有MINDATE,MAXDATE,指定控件可选择的最小日期和最大日期,在起始时间设定MAXDATE,截止时间设定MINDATE
    可以发我邮箱[email protected],我会把该控件发给你
      

  7.   

    问题可以这样解决:当输入起始日期而不输入截至日期时,查询的是起始日期之后的数据;当不输入起始日期只输入截至日期时,查询的是截至日期之前的数据.
    在sql里面的解决方法
    create proc sps_getdate
    @startdate datetime,
    @enddate datetime,
    ……--其他查询参数
    as
      select * from [table] where 
      (@startdate < bookdate or @startdate is null) and
      (@enddate > bookdate or @enddate is null) and
      ……  --其他参数判断在程序里面如果查询条件没有输入的话,那就将查询字段的值设置为空就可以一次实现多条件查询了。
      

  8.   

    谢谢大家E_wait给了我很大的启发 问题以解决.当然大家也都给了我很多的 提示.真的的就10分了 绝对不抓瞎  给E_wait了 各位壮士见谅!