Access 2010 ADP:执行SQL 2000 sproc时出现溢出错误 [英] Access 2010 ADP: Overflow error executing SQL 2000 sproc

查看:117
本文介绍了Access 2010 ADP:执行SQL 2000 sproc时出现溢出错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我收到"溢出错误"并将其追溯到以下代码。它在最终的执行语句中出错。我查看了所有变量,参数(2)是37606,并想知道这是否是问题。我不知道adInteger的定义是什么,Access
帮助没有给出任何线索。该值完全在SQL 2000整数下但超过SQL 2000 smallint。我的机器上没有SQL 2000,因此无法查看sproc。



Dim cmd As New ADODB。命令

Dim param As ADODB.Parameter


设置cmd.ActiveConnection = CurrentProject.Connection


cmd.CommandType = adCmdStoredProc


cmd.CommandText =" sFindRecLetter"


设置param = cmd.CreateParameter(" @ WHERE",adVarChar,adParamInput,250,gstrCriteria )


cmd.Parameters.Append param


设置param = cmd.CreateParameter(" @ Page",adInteger,adParamInput,Me!txtPage )


cmd.Parameters.Append param


设置param = cmd.CreateParameter(" @ RecordCount",adInteger,adParamOutput ,, 0)


cmd.Parameters.Append param


设置param = cmd.CreateParameter(" @ FirstRecord",adInteger,adParamOutput ,, 0)


cmd.Parameters.Append param


设置param = cmd.CreateParameter(" @ LastRecord",adIntege r,adParamOutput ,, 0)


cmd.Parameters.Append param


设置param = cmd.CreateParameter(" @ Pages",adInteger, adParamOutput ,, 0)


cmd.Parameters.Append param


cmd.Execute


解决方案

根据ADO帮助文件,定义的常量adInteger指定一个4字节的有符号二进制整数,因此值37606应该不是问题。  但是,人们不得不想知道如何在sproc中定义参数。 


如果用32767以下的值调用它是否有效,这是2字节有符号整数的最大值?



I am getting "Overflow error" and traced it to the following code. It errors on the final execute statement. I looked at all the variables and parameter(2) is 37606 and was wondering if this is the problem. I dont know what adInteger is defined as, Access Help gives no clue. That value is well under SQL 2000 integer but exceeds SQL 2000 smallint. I don't have SQL 2000 on my machine so cannot look at the sproc.

Dim cmd As New ADODB.Command
Dim param As ADODB.Parameter

Set cmd.ActiveConnection = CurrentProject.Connection

cmd.CommandType = adCmdStoredProc

cmd.CommandText = "sFindRecLetter"

Set param = cmd.CreateParameter("@WHERE", adVarChar, adParamInput, 250, gstrCriteria)

cmd.Parameters.Append param

Set param = cmd.CreateParameter("@Page", adInteger, adParamInput, , Me!txtPage)

cmd.Parameters.Append param

Set param = cmd.CreateParameter("@RecordCount", adInteger, adParamOutput, , 0)

cmd.Parameters.Append param

Set param = cmd.CreateParameter("@FirstRecord", adInteger, adParamOutput, , 0)

cmd.Parameters.Append param

Set param = cmd.CreateParameter("@LastRecord", adInteger, adParamOutput, , 0)

cmd.Parameters.Append param

Set param = cmd.CreateParameter("@Pages", adInteger, adParamOutput, , 0)

cmd.Parameters.Append param

cmd.Execute

解决方案

Accoding to the ADO help file, the defined constant adInteger specifies a 4-byte signed binary integer, so a value of 37606 shouldn't be a problem.  However, one does have to wonder how the parameter is defined in the sproc. 

Does it work if you call it with a value under 32767, the maximum value of a 2-byte signed integer?


这篇关于Access 2010 ADP:执行SQL 2000 sproc时出现溢出错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆