问题一: 一个Datagrid控件通过ADODC连接数据库,怎么让一个textbox 显示自己想显示的那一行呢,datagrid 它老是默认显示第一行,这样的话,我修改了某一行的内容后代码中有refresh,textbox又是默认显示第一行,我想让它显示修改那行~~问题二:
其中stukc是个combobox控件,我想实现的功能是控件stukc中选项变化,stucj.text和stuxf.text 都跟着改变,但是运行后显示实时错误3709,连接无法用于执行此操作,在此上下文中它可能已被关闭或无效~~
这个窗体里代码就是这些了,不会是牵扯到别的窗体了吧?
Private sqlcon As New ADODB.Connection
Private sqlres As New ADODB.Recordset
Private sqlcmd As New ADODB.Command'移动显示信息
Private Sub stuado_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
If Not pRecordset.EOF And Not pRecordset.BOF Then
stuxh.Text = pRecordset("学号")
stuxm.Text = pRecordset("姓名")
stukc.Text = pRecordset("课程名")
stucj.Text = pRecordset("成绩")
stuxf.Text = pRecordset("学分")
End If
End Sub
Private Sub Form_Load()
sqlcon.Provider = "SQLOLEDB"
sqlcon.Open "server=WJG;database=学籍管理;UID=sa;PWD=;"
End SubPrivate Sub chaxun_Click()
Dim xhstring As String
xhstring = InputBox("请输入要查询的学生学号:", 输入框, , 3500, 3500)
stuado.RecordSource = "select * from XSKC where 学号 like '%" + xhstring + "%'"
stuado.Refresh
End Sub
Private Sub gengxin_Click()
If Not stuado.Recordset.EOF Then
If IsNumeric(stucj.Text) = False Then
MsgBox "学生成绩格式应为数字型!", vbOKOnly + vbExclamation, "警告"
Exit Sub
ElseIf IsNumeric(stuxf.Text) = False Then
MsgBox "学生学分格式应为数字型!", vbOKOnly + vbExclamation, "警告"
Exit Sub
End If
stuado.Recordset("成绩") = stucj.Text
stuado.Recordset("学分") = stuxf.Text
End If
stuado.Recordset.Update
stuado.RecordSource = "select * from XSKC"
stuado.Refresh
End Sub
Private Sub stukc_Change()
Dim sqlstr As String
sqlstr = "select * from XSKC where XSKC.学号=" + stuxh.Text + "and XSKC.课程名=" + stukc.Text
sqlres.Open sqlstr, sqlcon, adOpenDynamic, adLockPessimistic
If Not sqlres.EOF Then
stucj.Text = sqlres("成绩")
stuxf.Text = sqlres("学号")
End If
End Sub其中stukc是个combobox控件,我想实现的功能是控件stukc中选项变化,stucj.text和stuxf.text 都跟着改变,但是运行后显示实时错误3709,连接无法用于执行此操作,在此上下文中它可能已被关闭或无效~~
这个窗体里代码就是这些了,不会是牵扯到别的窗体了吧?大哥们帮帮小弟吧,小弟感激不禁。过几天就要交作业了,我的系统做的还很垃圾,很崩溃呀~~
其中stukc是个combobox控件,我想实现的功能是控件stukc中选项变化,stucj.text和stuxf.text 都跟着改变,但是运行后显示实时错误3709,连接无法用于执行此操作,在此上下文中它可能已被关闭或无效~~
这个窗体里代码就是这些了,不会是牵扯到别的窗体了吧?
Private sqlcon As New ADODB.Connection
Private sqlres As New ADODB.Recordset
Private sqlcmd As New ADODB.Command'移动显示信息
Private Sub stuado_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
If Not pRecordset.EOF And Not pRecordset.BOF Then
stuxh.Text = pRecordset("学号")
stuxm.Text = pRecordset("姓名")
stukc.Text = pRecordset("课程名")
stucj.Text = pRecordset("成绩")
stuxf.Text = pRecordset("学分")
End If
End Sub
Private Sub Form_Load()
sqlcon.Provider = "SQLOLEDB"
sqlcon.Open "server=WJG;database=学籍管理;UID=sa;PWD=;"
End SubPrivate Sub chaxun_Click()
Dim xhstring As String
xhstring = InputBox("请输入要查询的学生学号:", 输入框, , 3500, 3500)
stuado.RecordSource = "select * from XSKC where 学号 like '%" + xhstring + "%'"
stuado.Refresh
End Sub
Private Sub gengxin_Click()
If Not stuado.Recordset.EOF Then
If IsNumeric(stucj.Text) = False Then
MsgBox "学生成绩格式应为数字型!", vbOKOnly + vbExclamation, "警告"
Exit Sub
ElseIf IsNumeric(stuxf.Text) = False Then
MsgBox "学生学分格式应为数字型!", vbOKOnly + vbExclamation, "警告"
Exit Sub
End If
stuado.Recordset("成绩") = stucj.Text
stuado.Recordset("学分") = stuxf.Text
End If
stuado.Recordset.Update
stuado.RecordSource = "select * from XSKC"
stuado.Refresh
End Sub
Private Sub stukc_Change()
Dim sqlstr As String
sqlstr = "select * from XSKC where XSKC.学号=" + stuxh.Text + "and XSKC.课程名=" + stukc.Text
sqlres.Open sqlstr, sqlcon, adOpenDynamic, adLockPessimistic
If Not sqlres.EOF Then
stucj.Text = sqlres("成绩")
stuxf.Text = sqlres("学号")
End If
End Sub其中stukc是个combobox控件,我想实现的功能是控件stukc中选项变化,stucj.text和stuxf.text 都跟着改变,但是运行后显示实时错误3709,连接无法用于执行此操作,在此上下文中它可能已被关闭或无效~~
这个窗体里代码就是这些了,不会是牵扯到别的窗体了吧?大哥们帮帮小弟吧,小弟感激不禁。过几天就要交作业了,我的系统做的还很垃圾,很崩溃呀~~
(2)使用ado访问数据库在msdn里面有标准的做法,和源代码,你可以参考下,你这个代码问题太多了。
修改行要设记录标签,保存后刷新时定位到标签即可,资料很多,想学习的话就去查一下,实在解决不了再找我
还有,你能帮我看一下,我在通用里 Private sqlres As New ADODB.Recordset,在最后stuck_change里
Dim sqlstr As String
sqlstr = "select * from XSKC where XSKC.学号=" + stuxh.Text + "and XSKC.课程名=" + stukc.Text
sqlres.Open sqlstr, sqlcon, adOpenDynamic, adLockPessimistic
这样语法没有错误吧?
BookMark: 设置/返回当前记录指针的书签,为字符串。如:
在当前记录处设置书签:lxn=Adodc1.Recordset.BookMark
当指针移动后回到指定书签位置:Adodc1.Recordset.BookMark=lxn.
sqlcon.Provider = "SQLOLEDB"
sqlcon.Open "server=WJG;database=学籍管理;UID=sa;PWD=;"
Dim sqlstr As String
sqlstr = "select * from XSKC where XSKC.学号=" + stuxh.Text + "and XSKC.课程名=" + stukc.Text
sqlres.Open sqlstr, sqlcon, adOpenDynamic, adLockPessimistic
If Not sqlres.EOF Then
stucj.Text = sqlres("成绩")
stuxf.Text = sqlres("学号")
End If
,加上连接关闭这句代码试试
sqlcon.close
问题2中不是有修改的where子句吗 你要想让一个文本框显示你修改的记录,在执行修改操作后写个查询过程以修改where子句作为查询条件 获取对应字段给文本框就行了嘛。