读书人

为什么会提示溢出呢?解决方法

发布时间: 2012-03-02 14:40:28 作者: rapoo

为什么会提示溢出呢?
Dim Asc() As Integer
Dim db As Database

Dim Rec As Integer
Private Rs As New ADODB.Recordset
Private Conn As New ADODB.Connection


Private Sub Form_Load()

Dim strConn As String
Dim i As Integer

' 连接数据库的字符串
' 连接带密码的数据库,直接在连接符后面加上Jet OLEDB:DataBase Password= '您的密码 '
' 连接Access97数据库需要使用Jet.OLEDB.3.5,Access2K和以上数据库使用Jet.OLEDB.4.0
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & App.Path & "\data\fw_data.mdb;Persist Security Info=False "

' 使用客户端数据游标
Conn.CursorLocation = adUseClient
' 打开Access的连接
Conn.Open strConn

' 如果RecordSet的状态不是关闭状态,则关闭Recordset
If Rs.State <> adStateClosed Then Rs.Close

' Recordser打开表
Rs.Open "Select * from fw_users ", Conn, adOpenKeyset, adLockOptimistic


Rs.MoveLast
Rec = Rs.RecordCount
ReDim Asc(Rec - 1)
Rs.MoveFirst
For i = 1 To Rec
cmb_name.AddItem Rs.Fields( "fw_name ")
' Asc(i - 1) = Val(Rs.Fields( "fw_pwd ")) 为什么会溢出呢?
Rs.MoveNext
If Rs.EOF Then Exit For
Next
'cmb_name.Text = " "
txt_pass.Text = " "

End Sub

数据库:fw_data.mdb
表为:fw_users
有字段:FW_NAME和FW_PWD,且皆为文本类型,长度15
有两条数据


为什么一运行就提示溢出呢?

调试返回到这条:
Asc(i - 1) = Val(Rs.Fields( "fw_pwd "))


请问是什么原因啊? 怎么解决呢?


[解决办法]
Exception type ErrorNumber Condition
OverflowException 6 InputStr is too large.
InvalidCastException 13 Number is badly formed.
ArgumentException 438 Object type expression not convertible to String.

Print Err.Number

出来看就知道了嘛

[解决办法]
Dim Asc() As long试试看

读书人网 >VB

热点推荐