各位大侠请指导下。我使用的是SQL写的存储过程如下:CREATE PROC sms_selectlinkman
(
@LinkmanName VARCHAR(50)=NULL,
@LinkmanBirthday VARCHAR(50)=NULL,
@LinkmanCatalog VARCHAR(50)=NULL,
@linkmanCompany VARCHAR(50)=NULL,
@LinkmanPhoneNumber VARCHAR(50)=NULL,
@LinkmanEmail VARCHAR(50)=NULL
)
AS
DECLARE @string VARCHAR(1000)

IF ( LEN(@LinkmanName)>0)--按照姓名模糊查询
BEGIN
IF @string IS NULL
SET @string='select * from linkman where lm_name like ''%'+@LinkmanName+ '%'''
ELSE
SET @string=@string+' and lm_name like ''%'+@LinkmanName+ '%'''
END
IF (LEN(@LinkmanBirthday)>0)--按照联系人生日查询
BEGIN
IF @string IS NULL
SET @string=' select * from linkman where lm_birthday='''+@LinkmanBirthday+''''
ELSE
SET @string=@string+' and lm_birthday='''+@LinkmanBirthday+''''
END
IF(@string is null)--无条件查询
BEGIN
SET @string='select * from linkman '
END print( @string)
EXEC(@string)GO
现在我不能使用SQL作为数据库来使用上面的存储过程,而是使用的是Access作为数据库,可我还是要实现上面的组合查询。请各位出谋划策帮我看看怎么才能在Access数据库里面实现上面的组合查询!万谢!

解决方案 »

  1.   


    public string getSQL(string  LinkmanName,string LinkmanBirthday)
    {
        StringBulider sb = new StringBuilder();
        sb.Append("select * from linkman where 1==1 ");
        if(string.IsNullOrEmpty(LinkmanName))
        {
             sb.Append(" and lm_name like '%"+LinkmanName+"%' ");
        }
       if(string.IsNullOrEmpty(LinkmanBirthday))
        {
             sb.Append(" and lm_birthday like '%"+LinkmanBirthday+"%' ");
        }    return sb.ToString();
    }
      

  2.   


    然后在你的查询按钮里调用该方法来获取SQL查询字符串获取数据就OK了
      

  3.   

    这样不好啊,这么大量的SQL语句,要是多几个这样的按钮岂不是很多SQL占用网络了
    有没办法可以在Access上改成上面的存储过程啊?
      

  4.   


    既然选择了A,那也只能传语句了,每次查询传输一条语句,也不至于LZ想的那么离谱
    如果真的访问量那么大,那干嘛还要用A?
      

  5.   

    我也不想的啊,可是老板让改成Access数据库