VB6程序查询数据库
本人VB菜鸟,制作一简单VB数据库管理程序,现需要实现查询功能。初步设想,点击查询后弹出一窗口(有text1~text5,有确定键,取消键,有分类选择),可以选择查询分类...
本人VB菜鸟,制作一简单VB数据库管理程序,现需要实现查询功能。
初步设想,点击查询后弹出一窗口(有text1~text5,有确定键,取消键,有分类选择),可以选择查询分类,在text1~text5中其分别对应数据库A1~A5字段(最好是模糊查询,不用完全符合字段内容,部分符合即可),在text1~text5中输入数据后,弹出一个列表框,将数据库中查询到的内容以表的形式列出(该条数据所有内容均列出),最好附带打印功能。
不好意思,补充一下,access数据库 设计容量不大,千条左右,都是汉字文本。
本人菜鸟 请逐句详细说明,谢谢! 展开
初步设想,点击查询后弹出一窗口(有text1~text5,有确定键,取消键,有分类选择),可以选择查询分类,在text1~text5中其分别对应数据库A1~A5字段(最好是模糊查询,不用完全符合字段内容,部分符合即可),在text1~text5中输入数据后,弹出一个列表框,将数据库中查询到的内容以表的形式列出(该条数据所有内容均列出),最好附带打印功能。
不好意思,补充一下,access数据库 设计容量不大,千条左右,都是汉字文本。
本人菜鸟 请逐句详细说明,谢谢! 展开
3个回答
展开全部
既然是多方式模糊查询,那么必须具备几个条件:
1、首先有查询方式的选择框,还有查询需要的关键字的输入框;
2、模糊查询结果不是一条记录,那么必须将查询出的所有结果在列表框控件中显示出来;
3、点击列表框中的一条记录,在文本框中显示这条记录的详细内容。
我比较喜欢用MSFlexGrid控件显示查询结果,下面给你一个比较实用的范例:
Private Sub Command1_Click() '查询
If Combo1.Text = "" Then
MsgBox "你没有选择查询方式,请选择!", 16, "错误!"
Exit Sub
End If
If Text1.Text = "" Then
MsgBox "你没有填写关键字,请填写!", 16, "错误!"
Exit Sub
End If
If Combo1.Text = "查询条件1" Then
strSQL = "Select * From 数据表名 字段名1 Like '%" & Text1.Text & "%'"
ElseIf Combo1.Text = "查询条件2" Then
strSQL = "Select * From 数据表名 Where 字段名2 Like '%" & Text1.Text & "%'"
ElseIf Combo1.Text = "查询条件3" Then
strSQL = "Select * From 数据表名 Where 字段名3 Like '%" & Text1.Text & "%'"
End If
Call SJK(db) '数据库连接函数
RS.Open strSQL, db, 2, 2
Do While Not RS.EOF
SST = SST + 1
RS.MoveNext
Loop
RS.Close
Set RS = Nothing
If SST = 0 Then
MsgBox "你没有你查询的记录!", 16, "无记录!"
With MSFlexGrid1
.Cols = 3
.Rows = 1
.TextMatrix(0, 0) = " 序号"
.TextMatrix(0, 1) = " 姓名"
.ColWidth(0) = 1000
.ColWidth(1) = 1000
.ColWidth(2) = 0
End With
db.Close
Set db = Nothing
Exit Sub
End If
With MSFlexGrid1
.Cols = 3
.Rows = SST + 1
.TextMatrix(0, 0) = " 序号"
.TextMatrix(0, 1) = " 姓名"
.ColWidth(0) = 1000
.ColWidth(1) = 1000
.ColWidth(2) = 0
RS.Open strSQL, db, 2, 2
For I = 1 To SST
.TextMatrix(I, 0) = I
.TextMatrix(I, 1) = RS!姓名
If Option1(0).Value = True Then
.TextMatrix(I, 2) = RS!SID
ElseIf Option1(1).Value = True Then
.TextMatrix(I, 2) = RS!SID
ElseIf Option1(2).Value = True Then
.TextMatrix(I, 2) = RS!SID
ElseIf Option1(3).Value = True Then
.TextMatrix(I, 2) = RS!ZID
ElseIf Option1(4).Value = True Then
.TextMatrix(I, 2) = RS!SID
End If
RS.MoveNext
Next I
RS.Close
Set RS = Nothing
End With
db.Close
Set db = Nothing
Label1(2).Caption = "本次查询结果" & SST & "条"
End Sub
Private Sub MSFlexGrid1_Click()
If Not Val(Trim(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 2))) = 0 Then
PKID = Val(Trim(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 2)))
Call SJK(db)
strSQL = "select * from 数据表名 Where ID=" & PKID & " Order By ID"
RS.Open strSQL, db, 3, 3
Text2(0).Text = RS!字段1
Text2(1).Text = RS!字段2
Text2(2).Text = RS!字段3
Text2(3).Text = RS!字段4
Text2(4).Text = RS!字段5
Text2(5).Text = RS!字段6
Text2(6).Text = RS!字段7
Text2(7).Text = RS!字段8
RS.Close
Set RS = Nothing
db.Close
Set db = Nothing
End If
End Sub
1、首先有查询方式的选择框,还有查询需要的关键字的输入框;
2、模糊查询结果不是一条记录,那么必须将查询出的所有结果在列表框控件中显示出来;
3、点击列表框中的一条记录,在文本框中显示这条记录的详细内容。
我比较喜欢用MSFlexGrid控件显示查询结果,下面给你一个比较实用的范例:
Private Sub Command1_Click() '查询
If Combo1.Text = "" Then
MsgBox "你没有选择查询方式,请选择!", 16, "错误!"
Exit Sub
End If
If Text1.Text = "" Then
MsgBox "你没有填写关键字,请填写!", 16, "错误!"
Exit Sub
End If
If Combo1.Text = "查询条件1" Then
strSQL = "Select * From 数据表名 字段名1 Like '%" & Text1.Text & "%'"
ElseIf Combo1.Text = "查询条件2" Then
strSQL = "Select * From 数据表名 Where 字段名2 Like '%" & Text1.Text & "%'"
ElseIf Combo1.Text = "查询条件3" Then
strSQL = "Select * From 数据表名 Where 字段名3 Like '%" & Text1.Text & "%'"
End If
Call SJK(db) '数据库连接函数
RS.Open strSQL, db, 2, 2
Do While Not RS.EOF
SST = SST + 1
RS.MoveNext
Loop
RS.Close
Set RS = Nothing
If SST = 0 Then
MsgBox "你没有你查询的记录!", 16, "无记录!"
With MSFlexGrid1
.Cols = 3
.Rows = 1
.TextMatrix(0, 0) = " 序号"
.TextMatrix(0, 1) = " 姓名"
.ColWidth(0) = 1000
.ColWidth(1) = 1000
.ColWidth(2) = 0
End With
db.Close
Set db = Nothing
Exit Sub
End If
With MSFlexGrid1
.Cols = 3
.Rows = SST + 1
.TextMatrix(0, 0) = " 序号"
.TextMatrix(0, 1) = " 姓名"
.ColWidth(0) = 1000
.ColWidth(1) = 1000
.ColWidth(2) = 0
RS.Open strSQL, db, 2, 2
For I = 1 To SST
.TextMatrix(I, 0) = I
.TextMatrix(I, 1) = RS!姓名
If Option1(0).Value = True Then
.TextMatrix(I, 2) = RS!SID
ElseIf Option1(1).Value = True Then
.TextMatrix(I, 2) = RS!SID
ElseIf Option1(2).Value = True Then
.TextMatrix(I, 2) = RS!SID
ElseIf Option1(3).Value = True Then
.TextMatrix(I, 2) = RS!ZID
ElseIf Option1(4).Value = True Then
.TextMatrix(I, 2) = RS!SID
End If
RS.MoveNext
Next I
RS.Close
Set RS = Nothing
End With
db.Close
Set db = Nothing
Label1(2).Caption = "本次查询结果" & SST & "条"
End Sub
Private Sub MSFlexGrid1_Click()
If Not Val(Trim(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 2))) = 0 Then
PKID = Val(Trim(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 2)))
Call SJK(db)
strSQL = "select * from 数据表名 Where ID=" & PKID & " Order By ID"
RS.Open strSQL, db, 3, 3
Text2(0).Text = RS!字段1
Text2(1).Text = RS!字段2
Text2(2).Text = RS!字段3
Text2(3).Text = RS!字段4
Text2(4).Text = RS!字段5
Text2(5).Text = RS!字段6
Text2(6).Text = RS!字段7
Text2(7).Text = RS!字段8
RS.Close
Set RS = Nothing
db.Close
Set db = Nothing
End If
End Sub
展开全部
要查询,自然要用SQL语句,既然用SQL语句了,
要模糊查询很简单,有个textbox来输入关键字
使用 sql select * from 表 where 关键字段 like textbox.text
如果是模糊查询,那么返回的结果肯定不是一条,表现形式最好是用listview 选lvvreport
Private Sub txtCZ_Change()
SQL = "select * from 基础档案"
SQL = SQL & " where 姓名 like '%" & Me.txtCZ.Text & "%' or PY like '%" & Me.txtCZ.Text & "%' ORDER BY zybid ASC"
Call addLIST
End Sub
Private Sub TXTZTC_Change()
SQL = "select * from 基础档案"
SQL = SQL & " where 原单位 like '%" & Me.Txtztc.Text & "%' ORDER BY zybid ASC"
Call addLIST
End Sub
Private Sub addLIST()
Me.ListView1.ListItems.Clear
Call OpenConn
rs.Open SQL, cn, 1, 1
Do While Not rs.EOF
Set addLVW = Me.ListView1.ListItems.Add(, , rs!zybid, , 1)
addLVW.SubItems(1) = rs!PY
addLVW.SubItems(2) = rs!主管部门
addLVW.SubItems(3) = rs!姓名
addLVW.SubItems(4) = rs!身份证号
addLVW.SubItems(5) = rs!年龄
addLVW.SubItems(6) = rs!性别
addLVW.SubItems(7) = rs!类别
addLVW.SubItems(8) = rs!原单位
addLVW.SubItems(9) = rs!家庭住址
addLVW.SubItems(10) = rs!家庭电话
addLVW.SubItems(11) = rs!手机号码
rs.MoveNext
Loop
Call CloseConn
End Sub
要模糊查询很简单,有个textbox来输入关键字
使用 sql select * from 表 where 关键字段 like textbox.text
如果是模糊查询,那么返回的结果肯定不是一条,表现形式最好是用listview 选lvvreport
Private Sub txtCZ_Change()
SQL = "select * from 基础档案"
SQL = SQL & " where 姓名 like '%" & Me.txtCZ.Text & "%' or PY like '%" & Me.txtCZ.Text & "%' ORDER BY zybid ASC"
Call addLIST
End Sub
Private Sub TXTZTC_Change()
SQL = "select * from 基础档案"
SQL = SQL & " where 原单位 like '%" & Me.Txtztc.Text & "%' ORDER BY zybid ASC"
Call addLIST
End Sub
Private Sub addLIST()
Me.ListView1.ListItems.Clear
Call OpenConn
rs.Open SQL, cn, 1, 1
Do While Not rs.EOF
Set addLVW = Me.ListView1.ListItems.Add(, , rs!zybid, , 1)
addLVW.SubItems(1) = rs!PY
addLVW.SubItems(2) = rs!主管部门
addLVW.SubItems(3) = rs!姓名
addLVW.SubItems(4) = rs!身份证号
addLVW.SubItems(5) = rs!年龄
addLVW.SubItems(6) = rs!性别
addLVW.SubItems(7) = rs!类别
addLVW.SubItems(8) = rs!原单位
addLVW.SubItems(9) = rs!家庭住址
addLVW.SubItems(10) = rs!家庭电话
addLVW.SubItems(11) = rs!手机号码
rs.MoveNext
Loop
Call CloseConn
End Sub
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这个问题问的模糊,比如没说数据库是什么种类,不同的数据有不同的连接方式,如果数据库内容小,还可以全部直接读取到内存中,任你使用
我擅长使用EXCEL,其他数据库不喜欢用,工作中用不到
数据量不大,又是ACCESS,推荐使用VB6+ACCESS VBA 组合,很好用,还不容易出错
先引用 MC ACCESS 11.O 库,
然后打开该数据库
把数据库中数据全部读入到MSFLEXGRID 控件,然后任你查询。
我擅长使用EXCEL,其他数据库不喜欢用,工作中用不到
数据量不大,又是ACCESS,推荐使用VB6+ACCESS VBA 组合,很好用,还不容易出错
先引用 MC ACCESS 11.O 库,
然后打开该数据库
把数据库中数据全部读入到MSFLEXGRID 控件,然后任你查询。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询