远程访问数据,其中存储过程的调用问题.
总是提示--产生未知错误,错误号:-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




