vb连接SQL后,对记录集的操作总出有关问题
vb连接SQL后,对记录集的操作总出问题!
create database sky
go
use sky
create table studentinfo(学号 nchar(12) not null primary key,姓名 nchar(4) not null,性别 nchar(1),年龄 int not null,系别 nchar(6),民族 nchar(4) not null,电话 nchar(11))
create table adminfo(用户 nchar(8) not null,密码 nchar(20) not null)
insert into adminfo values( 'admin ', '666666 ') /*管理员账户,用户名和密码可自己修改*/
这是我连接所需的数据库和表
然后我在VB中,定义了一个模块用来连接SQL,代码如下:
Public conn As New ADODB.Connection
Public rs As New ADODB.Recordset
Sub main()
On Error GoTo ON_ERROR
'连接SQL数据库
myerr:
strServername = InputBox( "输入SQL SERVER服务器名: ", "学生信息管理系统 ", "CEEABA9546A14E3 ")
conn.ConnectionString = "Driver={sql server};server= " & strServername & ";uid=sa;pwd=;database=sky "
conn.ConnectionTimeout = 30
conn.Open
frmMain.Show
Err.Number = 0
ON_ERROR:
If Err.Number = -2147467259 Then
MsgBox "找不到此服务器,请重新配置或查看服务器是否已经启动. ", , "学生信息管理系统 "
GoTo myerr
End If
End Sub
在frmMain中我画了4个按扭,分别实现第一条,上一条,下一条,最后一条.
在Load事件中我想打记录集
strSql = "select * from studentinfo "
rs.CursorLocation = adUseClient
rs.Open strSql, conn, adOpenStatic, adLockReadOnly, adCmdText
可是我点4个按扭操作时,总是出现怪异的事,有时点下一条没反应,但根本还没指向结尾,请大家给出正确的打开记录集和4个按扭的代码.
保证点按扭时实现的结果要与按扭标题一样.
谢谢
------解决方案--------------------
给你上一个的代码:
Private Sub up_Click()
If Ado1.Recordset.RecordCount <> 0 Then
Ado1.Recordset.MovePrevious
If Ado1.Recordset.BOF Then
Ado1.Recordset.MoveLast
End If
Text1.Text = Ado1.Recordset.Fields(0).Value
Text2.Text = Ado1.Recordset.Fields(1).Value
Combo1.Text = Ado1.Recordset.Fields(2).Value
Text4.Text = Ado1.Recordset.Fields(3).Value
Combo2.Text = Ado1.Recordset.Fields(4).Value
Text6.Text = Ado1.Recordset.Fields(6).Value
DTP1.Value = Ado1.Recordset.Fields(5).Value
Else
MsgBox "没有学生信息 ", vbInformation + vbOKOnly, "系统提示 "
End If
End Sub
------解决方案--------------------
rs.movefrist
rs.moveNext
rs.move Number
------解决方案--------------------
If NOT ( Ado1.Recordset.Eof or Ado1.Recordset.Bof) Then
create database sky
go
use sky
create table studentinfo(学号 nchar(12) not null primary key,姓名 nchar(4) not null,性别 nchar(1),年龄 int not null,系别 nchar(6),民族 nchar(4) not null,电话 nchar(11))
create table adminfo(用户 nchar(8) not null,密码 nchar(20) not null)
insert into adminfo values( 'admin ', '666666 ') /*管理员账户,用户名和密码可自己修改*/
这是我连接所需的数据库和表
然后我在VB中,定义了一个模块用来连接SQL,代码如下:
Public conn As New ADODB.Connection
Public rs As New ADODB.Recordset
Sub main()
On Error GoTo ON_ERROR
'连接SQL数据库
myerr:
strServername = InputBox( "输入SQL SERVER服务器名: ", "学生信息管理系统 ", "CEEABA9546A14E3 ")
conn.ConnectionString = "Driver={sql server};server= " & strServername & ";uid=sa;pwd=;database=sky "
conn.ConnectionTimeout = 30
conn.Open
frmMain.Show
Err.Number = 0
ON_ERROR:
If Err.Number = -2147467259 Then
MsgBox "找不到此服务器,请重新配置或查看服务器是否已经启动. ", , "学生信息管理系统 "
GoTo myerr
End If
End Sub
在frmMain中我画了4个按扭,分别实现第一条,上一条,下一条,最后一条.
在Load事件中我想打记录集
strSql = "select * from studentinfo "
rs.CursorLocation = adUseClient
rs.Open strSql, conn, adOpenStatic, adLockReadOnly, adCmdText
可是我点4个按扭操作时,总是出现怪异的事,有时点下一条没反应,但根本还没指向结尾,请大家给出正确的打开记录集和4个按扭的代码.
保证点按扭时实现的结果要与按扭标题一样.
谢谢
------解决方案--------------------
给你上一个的代码:
Private Sub up_Click()
If Ado1.Recordset.RecordCount <> 0 Then
Ado1.Recordset.MovePrevious
If Ado1.Recordset.BOF Then
Ado1.Recordset.MoveLast
End If
Text1.Text = Ado1.Recordset.Fields(0).Value
Text2.Text = Ado1.Recordset.Fields(1).Value
Combo1.Text = Ado1.Recordset.Fields(2).Value
Text4.Text = Ado1.Recordset.Fields(3).Value
Combo2.Text = Ado1.Recordset.Fields(4).Value
Text6.Text = Ado1.Recordset.Fields(6).Value
DTP1.Value = Ado1.Recordset.Fields(5).Value
Else
MsgBox "没有学生信息 ", vbInformation + vbOKOnly, "系统提示 "
End If
End Sub
------解决方案--------------------
rs.movefrist
rs.moveNext
rs.move Number
------解决方案--------------------
If NOT ( Ado1.Recordset.Eof or Ado1.Recordset.Bof) Then