CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

大侠,救命!!调用存储过程

楼主hhbll_2001(浪人情歌)2001-11-28 11:27:28 在 VB / 基础类 提问

存储过程中定义了一个Smalldatetime的参数,在VB中调用此存储过程,怎样设置  
  该参数的属性。盼各位帮忙 问题点数:30、回复次数:21Top

1 楼hhbll_2001(浪人情歌)回复于 2001-11-28 12:30:21 得分 0

请各位帮帮忙啊!!!!Top

2 楼hhbll_2001(浪人情歌)回复于 2001-11-28 12:38:53 得分 0

帮忙啊!!!Top

3 楼yuminggang(独行侠)回复于 2001-11-28 12:45:00 得分 0

用ADO执行存储过程可以直接带参数。Top

4 楼kxcc_sx(开心虫虫)回复于 2001-11-28 13:14:52 得分 0

呵呵!具体说明你的存储过程的参数定义才对呀!  
  这样我就可以告诉你呀Top

5 楼hhbll_2001(浪人情歌)回复于 2001-11-28 13:32:28 得分 0

比如,存储过程如下  
  CREATE   PROCEDURE   a  
  @code     varchar(20),  
  @Wdate   smalldate  
  as    
      insert   into   Stocks(code,wdate)  
      values(@code,@wdate)    
   
  在vb中  
  Dim   a   As   New   ADODB.Parameter  
      Dim   b   As   New   ADODB.Parameter  
      Dim   cmd1   As   New   ADODB.Command  
       
      cmd1.ActiveConnection   =   cn  
      cmd1.CommandType   =   adCmdStoredProc  
      cmd1.CommandText   =   "stock_a"  
       
      a.Type   =   adVarChar  
      a.Size   =   10  
      cmd1.Parameters.Append   a  
       
      b.Type   =   adDate     ?????  
      cmd1.Parameters.Append   b  
       
      a.Value   =   "aaa"  
      b.Value   =   Date  
      cmd1.Execute  
  执行时总是出错,为什么??Top

6 楼kxcc_sx(开心虫虫)回复于 2001-11-28 13:33:44 得分 0

呵呵!只要使用相应的语句;  
  例如:  
  将id做为一个参数;进行搜索期间调用的存储过程为search_name  
  并返回ques_teacher字段的值的代码:  
  set   comm=server.createobject("adodb.command")  
  comm.activeconnection="dsn=test;uid=sa;pwd=;"  
  comm.commandtext="search_name"  
  comm.commandtype=4  
  //传送参数id  
  set   p1=comm.createparameter("in",129,1,10,id)  
  comm.parameters.append   p1  
  //输出结果  
  set   p1=comm.createparameter("out",129,2,128,0)  
  comm.parameters.append   p1  
  comm.execute  
  ques_teacher=comm(1)  
  set   comm=nothing  
  下面是  
  search_name的   存储过程的定义,环境win2000/sql2000/vb6.0  
   
  CREATE   PROCEDURE   search_id  
  @title   char(100),  
  @outname   int   output  
    AS  
  select   @outname=ques_id   from   reading   where   title=@title  
  GO  
  希望对你有所帮助,呵呵:-)  
   
  Top

7 楼kxcc_sx(开心虫虫)回复于 2001-11-28 13:37:42 得分 0

你的sql语句验证了吗Top

8 楼kxcc_sx(开心虫虫)回复于 2001-11-28 13:39:17 得分 0

你的数据类型,比如smalltime对应吗Top

9 楼hhbll_2001(浪人情歌)回复于 2001-11-28 13:46:25 得分 0

我还没有验证,正在看command.CreateParameter函数。  
  不管怎样,先谢谢你了!!!Top

10 楼renxuangigi(企企)回复于 2001-11-28 13:51:20 得分 0

我也同意kxcc_sx的说法。Top

11 楼hhbll_2001(浪人情歌)回复于 2001-11-28 13:56:51 得分 0

不过我弄不清的是SQL中的Smalldatetime对应VB中的类型,是不是Addate?Top

12 楼kxcc_sx(开心虫虫)回复于 2001-11-28 14:03:30 得分 0

呵呵!  
  我觉得你应该验证以下你的sql语句,其他应该不成问题,特别是类型要对应,特别有关时间,日期的字段最容易出问题Top

13 楼kxcc_sx(开心虫虫)回复于 2001-11-28 14:08:44 得分 0

有问题直接email:gaojun512@sina.comTop

14 楼hhbll_2001(浪人情歌)回复于 2001-11-28 14:11:49 得分 0

存储过程里的参数类型为Smalldatetime,VB中我把参数的Type设为Addate,Addbdate都不行  
  急死我了Top

15 楼hhbll_2001(浪人情歌)回复于 2001-11-28 14:47:42 得分 0

小弟我这个问题还没解决,还请各位继续帮忙!Top

16 楼csdncb(iter)回复于 2001-11-28 22:19:36 得分 0

'''定义不需要传入参数,只有一个传出参数的过程  
  Public   Function   Execute_PLSQL_NoInput(ByVal   strProName   As   String)   As   Boolean  
            On   Error   GoTo   ErrHandle:  
            Dim   strErr   As   String  
            If   strProName   =   ""   Then  
                  Exit   Function  
            End   If  
            With   CObj  
                      .ActiveConnection   =   Con  
                      .CommandType   =   adCmdStoredProc  
                      .CommandText   =   strProName   '   "stock_package.update_check_input"  
            End   With  
             
            With   CObj.Parameters  
                                '.Append   CObj.CreateParameter("p1",   adVariant,   adParamInput,   12)  
                                .Append   CObj.CreateParameter("p2",   adChar,   adParamOutput,   12)  
            End   With  
            'CObj.Parameters(0)   =   strKey  
           
            Set   Recrs   =   CObj.Execute()  
            strErr   =   UCase(Trim(CObj.Parameters.Item("p2")))  
             
            'CObj.Parameters.Delete   (1)  
            CObj.Parameters.Delete   (0)  
             
            If   strErr   =   "OK"   Then  
                  Execute_PLSQL_NoInput   =   True  
              Else  
                  Execute_PLSQL_NoInput   =   False  
            End   If  
             
            Exit   Function  
  ErrHandle:  
          Execute_PLSQL_NoInput   =   False  
  End   Function  
   
   
  上面是一具调用oracle存储过程的方法。Top

17 楼kxcc_sx(开心虫虫)回复于 2001-11-29 13:38:18 得分 30

hhbll_2001    
  呵呵,既然是添加和更新记录,你的/*入库时间*/workdate获得是输入还是从系统获得,若使用系统获得,  
  就不会出问题,若是进行录入的话,肯定要进行日期时间转换的,否则类型不一样,当然会出错,现在的  
  错误很明显是传递的参数的类型不对导致实时错误:  
  ‘-2147217887(80040e21)’  
    [mircrosoft][odbc   sql   server   driver]没有执行可选特性    
  假如你是字符串的话“2001-11-27   00:00:00”可以将它转换一下成smalltime的类型就可以了,所以不必  
  强调vb中它的类型,  
  smalldatetime   数据类型存储日期和每天的时间,但精确度低于   datetime。  
  SQL   Server   将   smalldatetime   的值存储为两个   2   字节的整数。  
  第一个   2   字节存储   1900   年   1   月   1   日后的天数。另外一个   2   字节存储午夜后的分钟数。  
  日期范围从1900   年   1   月   1   日到   2079   年   6   月   6   日,精确到分钟。  
  如果你觉得麻烦的话,我这里有一个办法,那就是将workdate的类型该成长整形来记录日期  
  如果精度要求不高,直接使用8位数字来表示日期,例如:2001-01-01可表示为20010101  
  如果需要精确到时间   23:15:11则231511,你可以设两个字段,workdate   和worktime  
  也可以采用14位数字表示日期时间,这样不会出错,而且日期的加减都比较方便!  
  我这里有几个我写的函数你可以看看:具体在你的邮件里!  
  Top

18 楼hhbll_2001(浪人情歌)回复于 2001-11-29 13:57:25 得分 0

kxcc_sx(开心虫虫)  
        十分感谢!!!   这个问题困了我两天了,听了你的介绍,我终于明白了,十分感谢!  
  能否告诉我你的QQ,方便小弟碰到问题再找你解决。小弟的QQ是:55202734。Top

19 楼kxcc_sx(开心虫虫)回复于 2001-11-29 15:56:20 得分 0

呵呵   好啊,又多了一个朋友!希望多多交流!互相长进!QQ:30092225Top

20 楼command_zhang(Session)回复于 2001-12-01 11:45:53 得分 0

找书  
  Top

21 楼chickenzzz(打呼噜的小鸡)回复于 2001-12-02 00:17:53 得分 0

Dim   Conn   as   ADODB.Connection  
  ............  
  .........  
  theSQL="Exec   Storeprocedure   '"   &   smalldatetime   &   "'"  
  Set   Rs=Conn.Execute(theSQL)  
   
  生成SQL语句比较好吧,方便用SQL   Server   Query   Analyzer调试,我一直都是这样做的:)Top

相关问题

  • 存储过程调用存储过程
  • 存储过程的调用!
  • vb 调用存储过程
  • asp调用存储过程
  • asp调用存储过程
  • ASP调用存储过程...
  • ASP调用存储过程??
  • 关于调用存储过程调用?
  • 如何在存储过程中调用存储过程?
  • 如何在存储过程中调用存储过程?2

关键词

  • 存储过程
  • 字段
  • 语句
  • cobj
  • 参数
  • 调用
  • noinput
  • comm
  • smalldatetime
  • 类型

得分解答快速导航

  • 帖主:hhbll_2001
  • kxcc_sx

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo