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

远程访问数据,其中存储过程的调用问题.

楼主fling_boy(昨日重现)2002-04-08 14:37:11 在 VB / 基础类 提问

总是提示--产生未知错误,错误号:-2147024809.  
  连接对象的设置:  
    With   DBConnect  
                            .Provider   =   "MS   Remote"  
                            .Properties("Remote   Server").Value   =   "http://"   &   mvarServerName   &   "/"  
                            .Properties("Data   Source").Value   =   mvarDatabaseName  
                            .Properties("User   ID")   =   mvarUserID  
                            .Properties("Password")   =   mvarPassword  
                    End   With  
  *************************************************  
  Command对象的调用:  
    Dim   DBCommand   As   New   ADODB.Command  
          With   DBCommand  
                  Set   .ActiveConnection   =   DBConnect.ActiveConnection  
                  .CommandType   =   adCmdStoredProc  
                  .CommandText   =   "CheckReturnNumbers"  
  '                 .Parameters.Refresh  
                  Set   tParameter   =   .CreateParameter("@ID",   adInteger,   adParamInput,   4,   ID)  
                  .Parameters.Append   tParameter  
                  Set   tParameter   =   .CreateParameter("@Bill",   adVarChar,   adParamInput,   30,   Trim(Bill))  
                  .Parameters.Append   tParameter  
                  Set   tParameter   =   .CreateParameter("@Numbers",   adInteger,   adParamInput,   4,   Numbers)  
                  .Parameters.Append   tParameter  
                  Set   tParameter   =   .CreateParameter("@Checked",   adInteger,   adParamInputOutput,   4,   ID)  
                  .Parameters.Append   tParameter  
                  .Execute  
                  CheckReturnNumbers   =   .Parameters("@Checked").Value  
          End   With  
          Exit   Function 问题点数:200、回复次数:23Top

1 楼zswang(伴水清清)(专家门诊清洁工)回复于 2002-04-08 15:25:32 得分 0

我的分都是在Delphi集的  
  VB从来没有玩过,就只能帮你up  
  希望玩VB的朋友多多关注这个问题Top

2 楼fling_boy(昨日重现)回复于 2002-04-08 15:33:03 得分 0

zswang:谢谢你的参与.Top

3 楼beyond_xiruo(CorruptionException)回复于 2002-04-08 15:38:11 得分 0

哪儿错???  
  也帮UP!Top

4 楼fling_boy(昨日重现)回复于 2002-04-08 15:40:11 得分 0

在执行时产生错误:.Execute.  
  产生未知错误,错误号:-2147024809.  
   
  Top

5 楼combread()回复于 2002-04-08 16:05:56 得分 0

男孩,你单步调试的时候发现在哪一行代码出错?Top

6 楼fling_boy(昨日重现)回复于 2002-04-08 16:12:36 得分 0

.Execute       --这一行.Top

7 楼wanglf1977(心灵之约)回复于 2002-04-08 16:52:24 得分 0

commandtext   =   CheckReturnNumbers    
  我觉得是不是把引号去掉?Top

8 楼inforum(诚实做人 勤奋做事)回复于 2002-04-08 17:10:31 得分 0

直接用DBConnect.open   "EXEC   存储过程名   参数"Top

9 楼wyarrant(ostrich)回复于 2002-04-08 17:40:03 得分 0

Command对象的调用好像没错  
  是不是连接的问题?  
  或者是  
  在别的地方试一下也许是vb本身出了问题呢Top

10 楼liuzhanwen(研究一下!)回复于 2002-04-08 17:59:54 得分 0

小弟在打开一个excel的文件时他提示是否要启用宏我选用启用(如果不启用就打不开。用kv3000杀过。没的病毒)然后就有VB的小窗口    
  提示为:实时错误‘1004’   类Module的copy方法无效   点击结束    
  有提示为系统错误&H80070057-2147024809   参数错误    
  然后就退不出这个提示   只有结束任务   希望那位大侠帮帮忙    
  我点击调试就出现VB的调试窗口   有check_file    
  错误为:workbookksc("NEGS.xls).sheets(foxz")  
   
   
   
  改成:    
  workbookksc("NEGS.xls").sheets("foxz")  
   
  Top

11 楼liuzhanwen(研究一下!)回复于 2002-04-08 18:00:43 得分 0

参考!Top

12 楼fling_boy(昨日重现)回复于 2002-04-09 11:36:45 得分 0

没有人知道吗?Top

13 楼ferrytang(欢迎你)回复于 2002-04-09 11:46:59 得分 0

排除法测试,先测试连接有没有问题  
  然后,是否能执行,然后看看存储过程和CMD   中的是否对应,一点一点来!  
  别急,你可以解决的  
  Top

14 楼fling_boy(昨日重现)回复于 2002-04-09 12:34:06 得分 0

如果不用远程连接,上面的代码正常,我是想问在远程访问数据数据库时,  
  存储过程该怎么样调用才正确.Top

15 楼fling_boy(昨日重现)回复于 2002-04-12 16:13:48 得分 0

没有人知道吗?Top

16 楼TNT1900(不顶事)回复于 2002-04-12 16:38:46 得分 0

真正的问题出在".Execute"上面,应改为:“Set   p_Rs   =   .Execute   ”(当然前面得有“Dim   p_RS   As   New   ADODB.Recordset”)  
  Top

17 楼TNT1900(不顶事)回复于 2002-04-12 16:41:05 得分 0

因为“.Execute”的返回结果是一个   Recordset   集合.Top

18 楼jamex(1 + 1 = 爱)回复于 2002-04-12 16:44:14 得分 0

With   DBConnect  
                            .Provider   =   "MS   Remote"  
                            .Properties("Remote   Server").Value   =   "http://"   &   mvarServerName   &   "/"  
                            .Properties("Data   Source").Value   =   mvarDatabaseName  
                            .Properties("User   ID")   =   mvarUserID  
                            .Properties("Password")   =   mvarPassword  
                    End   With  
   
   
  换成  
  Set   Conn   =   CreateObject("ADODB.Connection")  
  ConnString   =   "Provider=SQLOLEDB.1;Persist   Security   Info=False;Initial   Catalog=PosSystem;Data   Source=192.168.0.1;User   ID=sa;Password=sa"  
  conn.ConnectionTimeout   =60  
  Conn.Open     ConnString  
  Top

19 楼TNT1900(不顶事)回复于 2002-04-12 16:46:13 得分 0

例子程序如下:  
  1、数据库表:  
  if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[User_XXX].[T_Other]')   and   OBJECTPROPERTY(id,   N'IsUserTable')   =   1)  
  drop   table   [User_XXX].[T_Other]  
  GO  
   
  CREATE   TABLE   [User_XXX].[T_Other]   (  
  [ID]   [int]   NOT   NULL   ,  
  [Name]   [varchar]   (50)   COLLATE   Chinese_PRC_CI_AS   NOT   NULL   ,  
  [Type]   [int]   NOT   NULL   ,  
  [TypeDetail]   [varchar]   (100)   COLLATE   Chinese_PRC_CI_AS   NULL    
  )   ON   [PRIMARY]  
  GO  
   
  ALTER   TABLE   [User_XXX].[T_Other]   WITH   NOCHECK   ADD    
  CONSTRAINT   [PK_T_Other]   PRIMARY   KEY     CLUSTERED    
  (  
  [ID],  
  [Type]  
  )     ON   [PRIMARY]    
  GO  
   
  ALTER   TABLE   [User_XXX].[T_Other]   WITH   NOCHECK   ADD    
  CONSTRAINT   [DF_T_Other_ID]   DEFAULT   (1)   FOR   [ID],  
  CONSTRAINT   [DF_T_Other_Name]   DEFAULT   ('')   FOR   [Name],  
  CONSTRAINT   [DF_T_Other_Type]   DEFAULT   (1)   FOR   [Type],  
  CONSTRAINT   [DF_T_Other_TypeDetail]   DEFAULT   ('')   FOR   [TypeDetail]  
  GO  
   
    CREATE     INDEX   [IX_ID_T_Other]   ON   [User_XXX].[T_Other]([ID])   ON   [PRIMARY]  
  GO  
   
    CREATE     INDEX   [IX_Type_T_Other]   ON   [User_XXX].[T_Other]([Type])   ON   [PRIMARY]  
  GO  
   
    CREATE     INDEX   [IX_Name_T_Other]   ON   [User_XXX].[T_Other]([Name])   ON   [PRIMARY]  
  GO  
   
    CREATE     INDEX   [IX_TypeDetail_T_Other]   ON   [User_XXX].[T_Other]([TypeDetail])   ON   [PRIMARY]  
  GO  
   
    CREATE     INDEX   [IX_T_Other]   ON   [User_XXX].[T_Other]([ID],   [Type])   ON   [PRIMARY]  
  GO  
   
   
  2、存储过程:  
  /*  
    功           能:  
  根据条件查找   T_Other   记录;  
   
    输入参数(可选):  
  ID : 编码  
  Type : 类型  
   
    返回值(RecordSet):  
  1)     :   没有指定   ID,也没有指定   Type,此时返回所有记录集;  
  2) : 没有指定   ID,但指定了   Type,返回相应记录集;  
  3) : 指定了   ID,就认为是同时也指定了其他条件,返回与指定条件相对应的记录集;  
   
  */  
  CREATE   PROCEDURE   [User_XXX].[sp_GetOtherByOptn]    
          @ID   int   =   -1,  
          @Type   int   =   -1  
  AS  
   
  Set   Nocount   ON  
   
  If   @ID   =   -1 --如果没有指定   ID  
  Begin  
  If   @Type=-1 --1)   没有指定   ID,也没有指定   Type,此时返回所有记录集;  
  Begin  
  Select   *   From   T_Other     Order   BY   Type,[ID]  
  End  
  Else --   2)没有指定   ID,但指定了   Type,返回相应记录集;  
  Begin  
  Select   *   From   T_Other   Where   Type   =   @Type   Order   BY   Type,[ID]  
  End    
  End  
   
  Else   --   3)指定了   ID,就认为是同时也指定了其他条件,返回与指定条件相对应的记录集;  
  Begin  
  Select   *   From   T_Other   Where   [ID]=@ID   AND   Type   =   @Type   Order   BY   Type,[ID]  
  End  
  GO  
   
   
  3、VB程序:  
  '功能:  
  '       根据条件取得信息  
  '  
  '   输入参数(可选):  
  '     ID             :     编码  
  '  
  '   返回值(RecordSet):  
  '         1)   :     没有指定   ID,也没有指定   Type,此时返回所有记录集;  
  '         2)   :     没有指定   ID,但指定了   Type,返回相应记录集;  
  '         3)   :     指定了   ID,就认为是同时也指定了其他条件,返回与指定条件相对应的记录集;  
  '  
  Public   Function   GetOtherByOptn(   _  
          Optional   ID   As   Integer   =   -1,   _  
          Optional   iType   As   Integer   =   -1   _  
  )   As   ADODB.Recordset  
           
  On   Error   GoTo   ErrorProcess  
           
          Dim   p_RS   As   ADODB.Recordset  
          Dim   p_Cmd   As   Command  
           
          m_SuccessOrNot   =   False  
           
          ''   Initialize   ADO   Connection  
          Set   p_RS   =   New   ADODB.Recordset  
          Set   p_Cmd   =   New   Command  
           
          ''   Open   ADO   connection  
          p_Cmd.ActiveConnection   =   G_ADO_ConStr  
          p_Cmd.CommandText   =   "sp_GetOtherByOptn"  
          p_Cmd.CommandType   =   adCmdStoredProc  
          p_Cmd.Parameters.Refresh  
           
          ''   创建存储过程参数  
          p_Cmd.Parameters("@ID")   =   ID  
          p_Cmd.Parameters("@Type")   =   iType  
           
          ''   执行存储过程,并将结果集合返回  
          Set   p_RS   =   p_Cmd.Execute  
          'p_RS.Open   p_Cmd,   ,   adOpenStatic  
           
          ''   赋结果  
          Set   GetOtherByOptn   =   p_RS  
           
          ''   置函数执行成功标志  
          m_SuccessOrNot   =   True  
           
          Exit   Function  
           
  ''   出错处理程序段  
  ErrorProcess:  
          m_SuccessOrNot   =   False  
          Set   GetOtherByOptn   =   Nothing  
          Err.Raise   Err.Number,   Err.Source,   Err.Description  
  End   Function  
   
   
  Top

20 楼fling_boy(昨日重现)回复于 2002-04-12 18:28:22 得分 0

jamex(1   +   1   =   爱)   :你说得不是访问远程数据库了,而且出错.  
      提示:无效的sql   server.谢谢你的帮忙.  
   
    TNT1900(不顶事)   :非常感谢你的回复,我上面写的代码在访问本地数据库时  
    没有错误产生,但访问远程数据库时出错,谢谢你的帮忙.Top

21 楼nicon(鉨輱祢轁)回复于 2002-04-12 18:34:57 得分 0

可能你没有打开Connection连接.Top

22 楼fling_boy(昨日重现)回复于 2002-04-12 18:51:10 得分 0

除了在执行存储过程时出错外,其它的都正常.Top

23 楼ljren_t(千幻华舞)回复于 2002-07-01 08:23:23 得分 200

远程访问数据库时,不带参数的存储过程可以用command.  
  带参数的存储过程可以用connection,我就是这样用的。Top

相关问题

  • 如何远程调用存储过程?
  • 存储过程调用存储过程
  • 哪位能提供几个ASP远程调用存储过程的小例子?
  • 存储过程的调用!
  • vb 调用存储过程
  • asp调用存储过程
  • asp调用存储过程
  • ASP调用存储过程...
  • ASP调用存储过程??
  • [远程访问]在存储过程中同时访问本地和远程数据库的问题(急)

关键词

  • 存储过程
  • 远程
  • 数据库
  • 执行
  • 指定
  • tparamet
  • getotherbyoptn
  • 调用
  • 访问
  • 返回

得分解答快速导航

  • 帖主:fling_boy
  • ljren_t

相关链接

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

广告也精彩

反馈

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