用TableAdapter可以方便地实现N个条件查询的功能,但他比较死板,不能缺少任何一个参数,有没可能在TableAdapter中实现动态的参数功能?例如SQL如下:
select * from t1 where p1=@p1 and  p2=@p2而我现在只输入一个@p1,目的是得到以下查询:
select * from t1 where p1=@p1而现有的TableAdapter实现成为:
select * from t1 where p1=@p1 and  p2='默认值'有没办法在TableAdapter中配置实现动态的组合查询?如不行,这样的动态组合查询应该怎么实现?请各位指教!

解决方案 »

  1.   

    你应该可以在TableAdapter设计器中添加自定义的方法的。
      

  2.   

    我觉得继承TableAdapter  可以实现
      

  3.   

    我是这样用的:
    select * from t1 where p1=ISNULL(@p1, p1) and p2 = ISNULL(@p2, p2)p1为空时,设为DBNull.Value, p2为空时,设为DBNull.Value前提是p1, p2必须定义为NOT NULL, 因为 p2 = NULL的结果是NULL而不是true/false
    如果p1, p2允许Null,则需要改为:
    select * from t1 where ISNULL(p1, 0) = ISNULL(ISNULL(@p1, p1), 0)
     and ISNULL(p2, '') = ISNULL(ISNULL(@p2, p2), '')
      

  4.   

    blogs.msdn.com/vbteam/archive/2005/05/04/ExtendingTableAdapters.aspx
      

  5.   

    zxkid(Born in heaven, die in hell: everybody has sins !) ( ) 信誉:100    Blog 这个方法不错。不过会不会有问题?
      

  6.   

    这个问题解决了,解决方法如下:http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=319884&SiteID=1谢谢各位的帮助!
      

  7.   

    http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=319884&SiteID=1
    这种情况只是重新定义了数据填装接口,原理与重组字符串是一样的啊。
      

  8.   

    TO:楼上
    他可以实现我的目标,就行了。呵呵。标题:How can I get tableadapter to process dynamic sql 'select' queries?
    解决了动态'select' 的问题。其它的问题,可以编程来解决了。