存储过程:
CREATE proc poreceiptsave
  @t_po varchar(10),
  @t_item varchar(18),
  @t_qty int,
  @t_rdate datetime,
  @t_inv varchar(50)
as
  insert po_receipt(t_po,t_item,t_qty,t_rdate,t_inv) values (@t_po,@t_item,@t_qty,@t_rdate,@t_inv)
GO
VB中代码为:
   Set CmdPoReceipt = New Command
   With CmdPoReceipt
      .ActiveConnection = DataConnect
      .CommandType = adCmdStoredProc
      .CommandText = "poreceiptsave"
      .Parameters.Append .CreateParameter("@t_po", adVarChar,  adParamInput, 10, Text1.Text)
      .Parameters.Append .CreateParameter("@t_item", adVarChar, adParamInput, 18, Text2.Text)
      .Parameters.Append .CreateParameter("@t_qty", adInteger, adParamInput, , Text3.Text)
      .Parameters.Append .CreateParameter("@t_rdate", adDBTime, adParamInput, , Text4.Text)
      .Parameters.Append .CreateParameter("@t_inv", adVarChar, adParamInput, 50, Text5.Text)
      .Execute
   End With
但是出现错误:“[Microsoft][ODBC SQL Server Driver]没有执行可选特性”。  后来我发现跟t_rdate字段有关,我以前用的是ACCESS2000,现把数据全部导入到SQL中去,我发现只要不写数据进t_rdate字段,就没有问题,我现在不知该怎么办?请问我错在哪里?
    另,再问一个问题,如果是多用户系统,如何保证多人在使用系统时,数据的正确性:如,我有一表1,里有PO,ITEM,QTY,QTY1栏位,在另一表2中有PO,ITEM,QTY栏位,表1和表2为一对多对应,现想在表2中每加入一笔对应表1的PO及ITEM的数据时,就加总表2中的QTY,然后把此QTY数量写入到表1的QTY1栏位中,如果多人使用此系统时,如何保证数据的正确性。
    谢谢!

解决方案 »

  1.   

    改一下:.Parameters.Append .CreateParameter("@t_rdate", adDBTime, adParamInput, , Cdate(Text4.Text))
      

  2.   

    Text4.Text 中的数据符合adDBTime的规范?
      

  3.   

    我不太明白adDBTime的规范,能讲明白点吗?谢谢!
      

  4.   

    adDate 日期值 (DBTYPE_DATE)。日期按双精度型数值来保存,数字全部表示从 1899 年 12 月 30 开始的日期数。小数部分是一天当中的片段时间。 
    adDBDate 日期值 (yyyymmdd) (DBTYPE_DBDATE)。 
    adDBTime 时间值 (hhmmss) (DBTYPE_DBTIME)。 
    adDBTimeStamp 时间戳(yyyymmddhhmmss 加 10 亿分之一的小数)(DBTYPE_DBTIMESTAMP). 
      

  5.   

    与我遇到的问题惊人的相似,强烈关注。
    我在查询跟踪器中看到执行的效果,显示参数后面都有乱码。
    exec yt_sp_addnewrecord '鲁青岛字第200000号record', '姓名LL', '男', ....
    后面的record不知道是怎么加上的。
      

  6.   

    我在text4中输入为"2003-08-12",但是我用以下方法没有问题:
       DataConnect.Execute "poreceiptsave '" & Text1.Text & "','" & Text2.Text & "','" & Text3.Text & "','" & Text4.Text & "','" & Text5.Text & "'"
       请大家继续关注此问题。谢谢!
      

  7.   

    我在text4中输入为"2003-08-12",但是我用以下方法没有问题:
       DataConnect.Execute "poreceiptsave '" & Text1.Text & "','" & Text2.Text & "','" & Text3.Text & "','" & Text4.Text & "','" & Text5.Text & "'"
       请大家继续关注此问题,并请回答我的第二个问题,谢谢!
      

  8.   

    .Parameters.Append .CreateParameter("@t_rdate", 135, adParamInput,,“1996-07-10)你把第二个参数改为135
      

  9.   

    .Parameters.Append .CreateParameter("@t_rdate", 135,
     adParamInput, , "1996-07-10")
      

  10.   

    谢谢suntt,楼上的朋友,问题已经得到解决,但我还想问一下,第二个参数改用135,是什么意思?
      

  11.   

    adDBTimeStamp 它的值为135,表示:
    时间戳(yyyymmddhhmmss 加 10 亿分之一的小数)(DBTYPE_DBTIMESTAMP).
      

  12.   

    是不是前面应该写insert into?