VB应用程序运行时,提示:[Microsoft][ODBC SQL Server Driver][SQL Server]对象名'dbo.date'无效同样的代码,在昨天前还可以正常运行。估计是不是数据库方面出了什么状况,却苦于不知道问题出在哪里?
还请各位高手指教啊!急!非常感谢!

解决方案 »

  1.   

    我都查代码一整天了,也试过用前几个版本的源码进行测试(这几个版本的代码都没有对出状况的模块进行过更新),问题依旧。调试时发现代码在调用一个存储过程时出错,我把这个存储过程的代码贴上,请各位帮忙看看问题出在哪?'--------------CREATE  PROCEDURE dbo.SP_IMPORT_RMA_DETAILAS
    /*
    更新RMA DETAIL
    */
        BEGIN SET NOCOUNT ON --开始事务
    BEGIN TRAN --更新CONTROL号相同的记录 --插入CONTROL号不存在的记录
    INSERT INTO RMADETAIL 
    (
    CONTROL,RMA,REFNO,NRIFIRDOAWUR,DSPRETURNTO,
    SO,ST,SN,PN,FAULTYPN,DSPDESC,DESCRIPTION,
    failurereason,dspawb,dsptag,lob,rmareceiptdate,
    dsprequestdate,rmainputdate,dspshipmentdate,ppid,receiptdate,HOLDINTPRDEPT) 
    SELECT A.CONTROL,
    A.RMA,A.REFNO,
    A.NRIFIRDOAWUR,
    A.DSPRETURNTO,
    A.SO,
    A.ST,
    A.SN,
    A.PN,
    A.FAULTYPN,
    A.DSPDESC,
    A.[DESCRIPTION],
    A.failurereason,
    A.dspawb,
    A.dsptag,
    A.lob,
    A.rmareceiptdate,
    A.dsprequestdate,
    A.rmainputdate,
    A.dspshipmentdate ,
                             A.ppid,
                              a.receiptdate,
                             A.HOLDINTPRDEPT
    FROM rmaimport A
    LEFT JOIN RMADETAIL B ON A.CONTROL = B.CONTROL
    WHERE B.CONTROL IS NULL and b.exshipmentdate is null --删除更新表记录
    DELETE FROM rmaimport

      IF (@@error!=0)
         BEGIN
    -- 若执行过程中发生错误,回滚
            RAISERROR  20002 'SP_IMPORT_RMA_DETAIL: Import failed'
            ROLLBACK TRAN
            RETURN(1)
        
         END

    --提交事务
         COMMIT TRAN --完成,退出SP
         RETURN(0) SET NOCOUNT OFF    END
    GO
    '-----------------另外,不知道系统中与DATE相关的系统函数是哪些?VB运行中会如何调用?谢谢了!
      

  2.   

    以下是系统中与DATE相关的系统函数,详细请查看SQL的联机帮助。DATEADD
    在向指定日期加上一段时间的基础上,返回新的 datetime 值。
    DATEDIFF
    返回跨两个指定日期的日期和时间边界数。
    DATENAME
    返回代表指定日期的指定日期部分的字符串。
    DATEPART
    返回代表指定日期的指定日期部分的整数。
    DAY
    返回代表指定日期的天的日期部分的整数。
    GETDATE
    按 datetime 值的 Microsoft® SQL Server™ 标准内部格式返回当前系统日期和时间。
    GETUTCDATE
    返回表示当前 UTC 时间(世界时间坐标或格林尼治标准时间)的 datetime 值。当前的 UTC 时间得自当前的本地时间和运行 SQL Server 的计算机操作系统中的时区设置。
    MONTH
    返回代表指定日期月份的整数。
    YEAR
    返回表示指定日期中的年份的整数。另外问一句,楼主的dbo.date是什么东西,自定义函数?
      

  3.   

    在T-SQL中调用函数时,参数列表必须用括号包起来,即使没有参数,也要加上()。
      

  4.   

    OK,已解决!
    是因为两个操作表对应的字段长度不一样导致程序错误。(哎,改程序真是件麻烦事)不过奇怪的是,本例中现象为非日期型字段导致,为什么系统报'dbo.date'错呢?不知道此系统函数是如何运作……总之谢谢各位!