注册 登录
编程论坛 VB6论坛

vb新手 求各位帮忙看看代码

Mithril 发布于 2016-05-17 21:30, 1918 次点击
代码如下:
Private Sub Command2_Click(Index As Integer)
Dim i As Integer, r As Integer
Dim colList As New Collection
Dim strSQL As String
Dim conn As New ADODB.Connection
Dim RS As New ADODB.Recordset
Dim db As String
db = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & App.Path & "\tuimag.mdb"
conn.Open db
On Error Resume Next 'Collection 添加重复的关键字(Key)会触发457错误,下面利用该错误避免重复数字

n = InputBox("输入n值")
If n > 45 Then Exit Sub

Randomize (Time)

Do Until n < 0
r = Int(Rnd * 45) + 1
colList.Add r, "a" & r '关键字只能是字符开头,所以加了个"a"
If Err.Number = 457 Then
Err.Clear '清空错误,本次获取数字失效
Else
n = n - 1 '没有错误,说明添加成功,这里要避免其他错误
End If
Loop
'构造查询字符串,将生成的数字组成列表
strSQL = "("
For i = 1 To colList.Count
strSQL = strSQL & colList(i) & ","
Next
Mid(strSQL, Len(strSQL), 1) = ")"
Text2.Text = strSQL
strSQL = "select * from stukq_math where StuNum in" & strSQL
'从数据库获取数据,只获取指定 stuNum 的记录,Conn 是 connection 对象,已经打开对应的数据库
RS.CursorLocation = adUseClient
RS.Open strSQL, conn, adOpenForwardOnly, adLockReadOnly, adCmdText
Set DataGrid1.DataSource = RS
DataGrid1.Refresh
End Sub
大致就是先产生n个1-45间的随机不重复随机整数,然后利用datagrid控件输出所有stu表中stuNum等于那些随机数的数据。
随机数产生是没有问题的,但datagrid始终显示不了数据。。。各位帮忙改下。感激不尽
5 回复
#2
焚心劫2016-05-18 09:18
给datagrid加一个自动检测数据
#3
xiangyue05102016-05-18 11:02
代码有点多,粗看下来没有发现问题。怀疑是查询出问题了。因为On Error Resume Next,不会报错
建议做如下调试:
给conn、RS、strSQL……添加监视
给Set DataGrid1.DataSource = RS加一个断点,执行到这一句停下的时候依次看一下conn、RS(这个点它前面的+,可以展开能看到不少信息)、strSQL。
如果conn正常、RS的记录数也有,那就是strSQL有问题了,把这个语句的值拷贝到数据库中执行
#4
Mithril2016-05-18 11:48
回复 3楼 xiangyue0510
注释掉on error resume next 后提示标准表达式数据类型不匹配

后来发现原来在建表的时候stunum列数据类型设置错误了,改过来就能正常显示了。
非常感谢你们的解答。。
#5
xiangyue05102016-05-18 13:50
回复 4楼 Mithril
恭喜你。以后遇到问题也是可以这么去调试,虽然VB大部分情况会弹窗错误原因,但是不能很准
#6
hjxlj2016-05-22 11:29
楼主,既然问题解决了,还请结帖。
1