1。 你的sp_Products_SEL_byCategoryID 需要传入一个参数@chrCategoryID,你必须提供,你没有设置默认值就会有问题,如果你的建立sp为:
ALTER PROCEDURE sp_Products_SEL_byCategoryID
@chrCategoryID char(38)=''
AS
sp_Products_SEL_byCategoryID
....
那么你不设置,就不会问你,不会报错2。说如果主键数据类型为int,我可以把主键的标识选项改为“是”,那么该主键可以自动编号。但该主键是uniqueidentifier类型,---uniqueidentifier可以自己输入,但是你能保证绝对不重复吗?所以你要用newid()

解决方案 »

  1.   

    MorningTea(一勺抹茶) ,你的意思是说
    1、我在存储过程ALTER PROCEDURE sp_Products_SEL_byCategoryID应该给一个初值?
        改为@chrCategoryID char(38)=''这样就可以了是吗?
    2、我应该在主键中选择newid()?但是具体怎么设置?只要选择了newid()就可以了吗?
       呵呵,不好意思,因为newid()我不知道是什么个东东。
      

  2.   

    ---可以,但是你传入''会不会达不到你要的效果,你这个参数是什么,总有个具体值传入,否则查到的结果是ProductCategories.CategoryID=‘’的纪录---NEWID()?这里不罗索,你看看这篇文章
    CSDN技术中心 Sql Server:理解uniqueidentifier类型和NEWID()
     url:http://dev.csdn.net/article/43/43255.shtm
     
      

  3.   

    1、这个categoryid是主键,为空的话不行吧?而且我在:(  4、页面调用代码)中已经有程序去获取由newid生成的序列号了。
         Dim strCategoryID As String = Request.Params("CategoryID")2、WHERE Products.ProductID=ProductCategories.ProductID
    该存储过程中的条件语句是不是得两个表都建立关联?我在数据关系图中建立了关联,但是,
    由于Products,ProductCategories的属性都是uniqueidentifier,如果我都用NEWID()
    ,那不是两个表中的productID都是自动随机生成的?那么当然
    (WHERE Products.ProductID=ProductCategories.ProductID)不能相等
        可不可能是由于这个的原因而导致我的出错呢?3、上文 ( 3、存储过程:)中的return 1具体是怎么个用法?我不知道我用对了没有?
      

  4.   

    categoryid为空当然不行,你前面的错误就是没有赋值,所以报错?我只是告诉你错误的原因我看错了,以为你要维护表,你的SP只是SELECT而已,那你先不要调用SP,你先看看到底抓取出来的 strCategoryID 是否是空的,也就是没有Request.Params("CategoryID"),否则不会出问题啊
      

  5.   

    唉,我把sp取消了,Request.Params("CategoryID")中传的是空值。
       但我更加糊涂了,不知道到底是存储过程没写好,或者是数据库的数据属性没设置好,还是
    我的代码问题
      

  6.   

    Request.Params("CategoryID")中传的是空值。问题就是出在这里,传入参数不能传入null值要在页面里面查找
      

  7.   

    我觉得不一定是页面问题吧,以前我用int设置主键的时候也出现过null值的错误,我也一直以为是代码问题,结果后面发现是我的sql server表中int的标志应该改为是,这样主键就可以自动编号增长.并非
    是代码出错获取不到值,而是表设计出错导致代码获取不到值
      

  8.   

    不是,我意思是说是因为你传入变量没有实际传入,实际传入是null值你不是说Request.Params("CategoryID")中传的是空值。--那么你要找到为什么是null值
      

  9.   

    谢谢MorningTea(一勺抹茶) ,你还真是有耐心,我在其他版面也发了这个问题,人家都不愿意看(嫌太长了)
       我已经把这个问题按照你的提示解决了。
    你要有时间你来这个页面随便说句话吧,我把该页面的分全给你
    http://community.csdn.net/Expert/topic/4233/4233592.xml?temp=.7544214
      

  10.   

    呵呵,谢谢MorningTea(一勺抹茶) 的耐心,我已经把这个问题按照你的提示给解决了:)
       要是你有时间,请到http://community.csdn.net/Expert/topic/4233/4233592.xml?temp=.7544214
    随便说句话,我把这个页面的分数全给你