我在写了一个信息查询的小系统,通出输入姓名来查询,但是查询完了以后原有的数据也随之更改了,把数据都搞乱了!下面是我整个程序的代码,请大家指点一下!小弟多谢了!
Dim db As Database
Dim re As RecordsetPrivate Sub Command1_Click()
Data1.Recordset.AddNew
End SubPrivate Sub Command2_Click()Dim i
i = MsgBox("真的要删除当前记录吗?", vbYesNo + vbQuestion, "重要提示")
Select Case i
Case vbYes
Data1.Recordset.Delete
Data1.Recordset.MoveNext
 If Data1.Recordset.EOF Then
 Data1.Recordset.MovePrevious
 End If
Case vbNo
Data1.UpdateControls
End Select
End SubPrivate Sub Command3_Click()
Data1.UpdateControls
Data1.Recordset.MovePrevious
If Data1.Recordset.BOF Then
MsgBox "已经是第一个记录了!", vbInformation, "注意"
Data1.Recordset.MoveFirst
End If
End SubPrivate Sub Command4_Click()
Data1.UpdateControls
Data1.Recordset.MoveNext
If Data1.Recordset.EOF Then
MsgBox "已经是最后一个记录了!", vbInformation, "注意"
Data1.Recordset.MoveLast
End If
End SubPrivate Sub Command5_Click()
Dim s
s = MsgBox("真的要修改数据吗!", vbYesNo + vbQuestion, "重要提示")
Select Case s
Case vbYes
Data1.UpdateRecord
Case vbNo
Data1.UpdateControls
End Select
End SubPrivate Sub Command6_Click()
Dim o
o = MsgBox("真的要退出系统吗?", vbYesNo + vbQuestion, "重要提示")
If o = vbYes Then
Unload Me
End If
End SubPrivate Sub Command7_Click()
On Error GoTo OOPS
Dim p
p = Trim(Text1.Text)
Set db = DBEngine.Workspaces(0).OpenDatabase("D:\职工休养\name.mdb")
Set re = db.OpenRecordset("select * from 职工休养表 where 姓名='" + p + "'", dbOpenDynaset)
If re.RecordCount > 0 Then
re.MoveLast
Text2.Item(0) = re("姓名")
Text2.Item(1) = re("年龄")
Text2.Item(2) = re("性别")
Text2.Item(3) = re("职务")
Text2.Item(4) = re("政治面貌")
Text2.Item(5) = re("民族")
Text2.Item(6) = re("所在单位")
Text2.Item(7) = re("荣誉称号")
Text2.Item(8) = re("备注")
Text1.Text = ""
OOPS:
MsgBox "找到了一条记录!", vbInformation, "查询结果"
End If
If re.RecordCount = 0 Then
MsgBox "没有找到您要找的记录!", vbInformation, "查询结果"
Text1.Text = ""
End If
End SubPrivate Sub Form_Load()
'Text1.Text.SetFocus
Dim str As String '定义
str = App.Path
If Right(str, 1) <> "\" Then
str = str + "\"
End If
Data1.DatabaseName = str & "\name"
Data1.RecordSource = "职工休养表"
Data1.Refresh
End SubPrivate Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 ThenCommand7_cilck
End If
End Sub

解决方案 »

  1.   

    我想是你建立了text控件与数据控件的关联,然后在command7_click事件中有对text控件赋值,就造成数据被改变的后果.
    我想你还是改用ADO比较好一点.
      

  2.   

    您说得是这段代码出了问题,如果不用ADO那这估代码应该怎么改呀!能不能帮我写一下!小弟不胜感激!
    If re.RecordCount > 0 Then
    re.MoveLast
    Text2.Item(0) = re("姓名")
    Text2.Item(1) = re("年龄")
    Text2.Item(2) = re("性别")
    Text2.Item(3) = re("职务")
    Text2.Item(4) = re("政治面貌")
    Text2.Item(5) = re("民族")
    Text2.Item(6) = re("所在单位")
    Text2.Item(7) = re("荣誉称号")
    Text2.Item(8) = re("备注")
    Text1.Text = ""
      

  3.   

    还想请教您一个问题!如果用ADO怎么写查询代码!
    我主要不知道查到数据以后怎么把它显示在TEXT的控件上,因为VB没有指针,不知道怎么定位在找到的记录上,听别个说可以定义游标,但我不知道怎么定义,能不能帮小弟讲解一下!还有就是请问有没有通用的查询代码?谢谢了!