读书人

求救~该如何解决

发布时间: 2012-02-12 17:16:33 作者: rapoo

求救~~~
编程新手.正在用VB+Access做一个小的练习.我在第一个页面做条件查询.将查询结果在第二个页面用DataGrid显示出来.请问该怎么办?如何用DataGrid显示ADODB.Recordset?请问第二个页面代码该怎么写?

这是我第一个页面写的代码:
Private Sub Command1_Click()
Dim sql As String
Dim Rs As ADODB.Recordset

sql = "select * from Student where "
If Trim(Text1.Text) = " " And Trim(Text2.Text) = " " And Trim(Text3.Text) = " " And Trim(Text4.Text) = " " And Trim(Text4.Text) = " " And Trim(Text5.Text) = " " And Trim(Text6.Text) = " " And Trim(Text7.Text) = " " And Trim(Text8.Text) = " " Then
MsgBox "请选择查询条件并输入查询内容. ", vbOKOnly + vbExclamation, "警告 "

Else
If Trim(Text1.Text) <> " " Then
sql = sql & "Sno= ' " & Trim(Text1.Text) & " ' "

ElseIf Trim(Text2.Text) <> " " Then
If Trim(Text1.Text) = " " Then
sql = sql & "Sname= ' " & Trim(Text2.Text) & " ' "
Else
sql = sql & "and Sname= ' " & Trim(Text2.Text) & " ' "
End If

ElseIf Trim(Text3.Text) <> " " Then
If Trim(Text1.Text) = " " And Trim(Text2.Text) = " " Then
sql = sql & "Ssex= ' " & Trim(Text3.Text) & " ' "
Else
sql = sql & "and Ssex= ' " & Trim(Text3.Text) & " ' "
End If

ElseIf Trim(Text4.Text) <> " " Then
If Trim(Text1.Text) = " " And Trim(Text2.Text) = " " And Trim(Text3.Text) = " " Then
sql = sql & "Sage= " & Trim(Text4.Text) & " "
Else
sql = sql & "and Sage= " & Trim(Text4.Text) & " "
End If

ElseIf Trim(Text5.Text) <> " " Then
If Trim(Text1.Text) = " " And Trim(Text2.Text) = " " And Trim(Text3.Text) = " " And Trim(Text4.Text) = " " Then


sql = sql & "Splace= ' " & Trim(Text5.Text) & " ' "
Else
sql = sql & "and Splace= ' " & Trim(Text5.Text) & " ' "
End If

ElseIf Trim(Text6.Text) <> " " Then
If Trim(Text1.Text) = " " And Trim(Text2.Text) = " " And Trim(Text3.Text) = " " And Trim(Text4.Text) = " " And Trim(Text5.Text) = " " Then
sql = sql & "Spolity= ' " & Trim(Text6.Text) & " ' "
Else
sql = sql & "and Spolity= ' " & Trim(Text6.Text) & " ' "
End If

ElseIf Trim(Text7.Text) <> " " Then
If Trim(Text1.Text) = " " And Trim(Text2.Text) = " " And Trim(Text3.Text) = " " And Trim(Text4.Text) = " " And Trim(Text5.Text) = " " And Trim(Text6.Text) = " " Then
sql = sql & "Stime= ' " & Trim(Text7.Text) & " ' "
Else
sql = sql & "and Stime= ' " & Trim(Text7.Text) & " ' "
End If

ElseIf Trim(Text8.Text) <> " " Then
If Trim(Text1.Text) = " " And Trim(Text2.Text) = " " And Trim(Text3.Text) = " " And Trim(Text4.Text) = " " And Trim(Text5.Text) = " " And Trim(Text6.Text) = " " And Trim(Text7.Text) = " " Then
sql = sql & "Steleph= ' " & Trim(Text8.Text) & " ' "
Else
sql = sql & "and Steleph= ' " & Trim(Text8.Text) & " ' "
End If

End If

Set Rs = TransactSQL(sql)
If Rs.EOF Then
MsgBox "Sorry.不存在符合条件的信息. ", vbOKOnly + vbInformation, "查询失败. "
Else
FormAddStuDetResult.Show //不知道该如何写下去了.
End If
End If
End Sub

------解决方案--------------------


建议你定义一个全局变量,数据类型为String,名称为sql
将第一窗体组成的SQL查询语句赋值给该全局变量
在FormAddStuDetResult窗体的Form_Load事件代码中使用全局变量sql,请将下列代码中db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & App.Path & "\hxrkgl.mdb;Persist Security Info=False "
的数据库名和路径改为你的数据库名和路径:

Private Sub Form_Load()
Set db = New adodb.Connection
Set rs = New adodb.Recordset
db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & App.Path & "\hxrkgl.mdb;Persist Security Info=False "
db.Open
rs.CursorLocation = adUseClient
rs.Open sql, db, adOpenStatic, adLockReadOnly
Set DataGrid1.DataSource = rs
End Sub

读书人网 >VB

热点推荐