none
sql语句where 条件比较特别的写法,不知道如何写,而且还要在asp上使用,更加没头绪。 RRS feed

  • 问题

  •     ContractTable中有两列,MonthRentR01和MonthRentPaid01,分别表示1月份的应收和实收,现在我把where条件设置为如下

    select MonthRentR01,MonthRentPaid01
     from 
    ReceivableTable 
    where ISNULL (MonthRentR01,0)-ISNULL (MonthRentPaid01 ,0)<>0
      现在,我想设置一下条件。先在asp上添加了一个dropdownList,有“未选择”和“不为零”两个选项,如果选择“未选择”这个选项,则无视
    where ISNULL (MonthRentR01,0)-ISNULL (MonthRentPaid01 ,0)<>0

    如果选项为“不为零”,则where 起作用。

        似乎问题很简单,但我研究了一下午都没研究出来。。。请大家帮忙看看,3Q!

         


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2014年2月26日 8:51

答案

  •      如果你想直接通过Sql做文章, 我想你需要去写存储过程。除了使用存储过程 可以根据根据dropdownList1 不同选项相应变化以外,你没有别的办法。

         你能参考下面这个Demo, 希望可以帮到你:

    SQL Stored Procedure :

    create procedure SelectLastNames 
     @Title nvarchar(25)
    as
      SET NOCOUNT ON;
      if(@Title='未选择') 
      BEGIN
    SELECT LastName FROM Employees WHERE 1=0 and Title = @Title;
     end
      else
      BEGIN
      SELECT LastName FROM Employees WHERE 1=1 and Title = @Title;
      end 
    
    
    ASPX PAGE:
      <form id="form1" runat="server">
         <p><asp:dropdownlist
              id="DropDownList1"
              runat="server"
              autopostback="True">
              <asp:listitem selected="True">Sales Representative</asp:listitem>
              <asp:listitem>Sales Manager</asp:listitem>
              <asp:listitem>Vice President, Sales</asp:listitem>
          </asp:dropdownlist></p>
          <asp:sqldatasource
              id="SqlDataSource1"
              runat="server"
              connectionstring="<%$ ConnectionStrings:NorthwindConnectionString%>"           
              selectcommand="SelectLastNames" SelectCommandType="StoredProcedure">
              <selectparameters>
                  <asp:controlparameter name="Title" controlid="DropDownList1" propertyname="SelectedValue"/>
              </selectparameters>
          </asp:sqldatasource>
          <p><asp:listbox
              id="ListBox1"
              runat="server"
              datasourceid="SqlDataSource1"
              datatextfield="LastName">
          </asp:listbox></p>
        </form>


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place. &lt;br/&gt; Click &lt;a href=&quot;http://support.microsoft.com/common/survey.aspx?showpage=1&amp;scid=sw%3Ben%3B3559&amp;theme=tech&quot;&gt; HERE&lt;/a&gt; to participate the survey.


    2014年2月28日 2:56
    版主
  •     谢谢的解答。 抱歉,没有及时回复。

        

        我根据你的代码,对自己的代码进行了相应的调整,最后代码是下面这样的,再次感谢。

    create procedure SelectLastNames 
     @Choose nvarchar(25)
     @Title nvarchar(25)
    as
      SET NOCOUNT ON;
      if(@Choose='未选择') 
      BEGIN
    SELECT LastName FROM Employees WHERE 1=0 and Title = @Title;
     end
      else
      BEGIN
      SELECT LastName FROM Employees WHERE 1=1 and Title = @Title;
      end 


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2014年3月13日 8:51

全部回复

  • 你好,

         

         你需要使用拼接Sql语句的方式来实现你的需求,就好像下面这样的代码:

    protected void dropdownList1_SelectedIndexChanged(object sender, EventArgs e) { string strsql = "select MonthRentR01,MonthRentPaid01 from ReceivableTable "; if (dropdownList1.SelectedItem.Text == "未选择") { //选中 未选择 时的 条件 } else if (dropdownList1.SelectedItem.Text == "不为零") { strsql+= " where ISNULL (MonthRentR01,0)-ISNULL (MonthRentPaid01 ,0)<>0"; } else { //其他选项的 条件 } GridView1.DataSource = GetData(strsql);

    GridView1.DataBind(); }

          希望可以帮到你。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place. &lt;br/&gt; Click &lt;a href=&quot;http://support.microsoft.com/common/survey.aspx?showpage=1&amp;scid=sw%3Ben%3B3559&amp;theme=tech&quot;&gt; HERE&lt;/a&gt; to participate the survey.

    2014年2月27日 2:32
    版主
  •     感谢您的解答,这个方法可以,但不适合我现在的情况。

        因为我主要是利用前台的sql和gridview显示asp界面,在gridview中我还做了些修改,比如加入了 linkbutton之类的。

        所以,对于我目前的情况来讲,最好是直接在sql中做文章。我的这个想法可以实现么?


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!


    2014年2月28日 2:36
  •      如果你想直接通过Sql做文章, 我想你需要去写存储过程。除了使用存储过程 可以根据根据dropdownList1 不同选项相应变化以外,你没有别的办法。

         你能参考下面这个Demo, 希望可以帮到你:

    SQL Stored Procedure :

    create procedure SelectLastNames 
     @Title nvarchar(25)
    as
      SET NOCOUNT ON;
      if(@Title='未选择') 
      BEGIN
    SELECT LastName FROM Employees WHERE 1=0 and Title = @Title;
     end
      else
      BEGIN
      SELECT LastName FROM Employees WHERE 1=1 and Title = @Title;
      end 
    
    
    ASPX PAGE:
      <form id="form1" runat="server">
         <p><asp:dropdownlist
              id="DropDownList1"
              runat="server"
              autopostback="True">
              <asp:listitem selected="True">Sales Representative</asp:listitem>
              <asp:listitem>Sales Manager</asp:listitem>
              <asp:listitem>Vice President, Sales</asp:listitem>
          </asp:dropdownlist></p>
          <asp:sqldatasource
              id="SqlDataSource1"
              runat="server"
              connectionstring="<%$ ConnectionStrings:NorthwindConnectionString%>"           
              selectcommand="SelectLastNames" SelectCommandType="StoredProcedure">
              <selectparameters>
                  <asp:controlparameter name="Title" controlid="DropDownList1" propertyname="SelectedValue"/>
              </selectparameters>
          </asp:sqldatasource>
          <p><asp:listbox
              id="ListBox1"
              runat="server"
              datasourceid="SqlDataSource1"
              datatextfield="LastName">
          </asp:listbox></p>
        </form>


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place. &lt;br/&gt; Click &lt;a href=&quot;http://support.microsoft.com/common/survey.aspx?showpage=1&amp;scid=sw%3Ben%3B3559&amp;theme=tech&quot;&gt; HERE&lt;/a&gt; to participate the survey.


    2014年2月28日 2:56
    版主
  •     谢谢的解答。 抱歉,没有及时回复。

        

        我根据你的代码,对自己的代码进行了相应的调整,最后代码是下面这样的,再次感谢。

    create procedure SelectLastNames 
     @Choose nvarchar(25)
     @Title nvarchar(25)
    as
      SET NOCOUNT ON;
      if(@Choose='未选择') 
      BEGIN
    SELECT LastName FROM Employees WHERE 1=0 and Title = @Title;
     end
      else
      BEGIN
      SELECT LastName FROM Employees WHERE 1=1 and Title = @Title;
      end 


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2014年3月13日 8:51