那就干脆不传参数了,改成这样试试
CREATE PROCEDURE [ShipInfo_insert]
(@ST  [bit],
 @OP  [varchar](10))AS INSERT INTO [ZSData].[dbo].[ShipInfo] 
 ([StateTag], [Operator]) 
 
VALUES ( getdate(),@ST,@OP)
GO

解决方案 »

  1.   

    参数这样传:
    cmdInsert.Parameters.Add(New SqlParameter("@WD", SqlDbType.DateTime, 8))
    cmdInsert.Parameters("@WD").Value = System.DateTime.Now
    另外2个参数也是这么传的,没有问题:
    cmdInsert.Parameters.Add(New SqlParameter("@ST", SqlDbType.DateTime, 8))
    cmdInsert.Parameters("@ST").Value = "ABC"
      

  2.   

    CREATE PROCEDURE [ShipInfo_insert]  @ST  [bit],  @OP  [varchar](10)
    AS INSERT INTO [ZSData].[dbo].[ShipInfo] 
     ([WorkDate],
     [StateTag],
     [Operator]) 
    select  getdate(), @ST,  @OP
    传2个参数就可以啦
      

  3.   

    TO:yujohny(踏网无痕)
      你的办法可行,但我想弄明白,为什么用参数传递日期就不行?别的数据都对呀,传递方法也一样。
      

  4.   

    你存储过程里面参数@ST是[bit]类型的你穿过来的参数类型不对你检查一下你的程序
    cmdInsert.Parameters.Add(New SqlParameter("@ST", SqlDbType.DateTime, 8))
      

  5.   

    难道是vb.net的BUG,换用C#试试
      

  6.   

    对不起,@ST里面类型是我打错了(用了ctronl+v,没改!)但是传送日期是用@WD呀,请看:
    cmdInsert.Parameters.Add(New SqlParameter("@WD", SqlDbType.DateTime, 8))
    cmdInsert.Parameters("@WD").Value = System.DateTime.Now
    这个日期不一定是当天的,所以没法用getdate!一定要传送。
    因为现在是测试,用了=System.DateTime.Now,实际上这个值来自页面的textbox的输入。
      

  7.   

    应该是你从TextBox取的值本身就不对,把TextBox的输入值和转换成DateTime的语句贴出来看看
      

  8.   

    cmdInsert.Parameters.Add(New SqlParameter("@WD", SqlDbType.DateTime, 8))
    cmdInsert.Parameters("@WD").Value = System.DateTime.Now
    看看你的时间格式,是不是8位,要是大于8位的话,你传入的时间可能回被截断
      

  9.   

    TO:ronaldor(牙神幻十郎)
      我已经说明白了,现在是测试,所以没有用页面输入的值,而是用了系统时间:System.DateTime.NowTO:aierong(皑婀瑢-数据库XML.NET联盟会处长)
      表中WD是Datetime格式,系统默认8位;在存储过程中,@WD也是Datetime,8位;System.DateTime.Now产生的时间是:2003-9-30 12:00:10,传送时只传送了前8位--2003-9-3,后面的估计被截断了。但是,Datetime格式的长度不能自己定义啊。
    不用存储过程,把SQL语句写在页面中,就没有问题,真怪。
    愁死了
      

  10.   

    将其中的("@WD", SqlDbType.DateTime, 8),长度8去除
      

  11.   

    TO:shaken(shaken) 
      没有用的。直接用SQL语句我也是这么写的,日期在表中能正确存储。