VB的模糊查找问题
习题12.19:编写程序设计个人信息查询工具。要求使用菜单来控制数据的编织、查找,可完成按姓名查找、按工资查找、按工作证号查找的功能。查找时使用模糊查找,将满足条件的记录...
习题12.19:
编写程序设计个人信息查询工具。要求使用菜单来控制数据的编织、查找,可完成按姓名查找、按工资查找、按工作证号查找的功能。查找时使用模糊查找,将满足条件的记录显示在列表框中。对象属性如下图所示:
资料上编写的代码如下:
Private Sub Edt_Click(Index As Integer)
Select Case Index
Case 0
With da '这个da是哪里来的?是个什么?
.gh = Text1(0).Text
.xm = Text1(1).Text
.xb = Option1(0).Value
.gz = Val(Text1(2).Text)
.rq = Text1(3).Text
End With
List1.AddItem da.xb
Open "worker.dat" For Random As #1 Len = Len(da)
lastrec = LOF(1) / Len(da)
Put #1, lastrec + 1, da
Close #1
Call Form_Activate '这里有错误,不知道怎么改!
Text1(0).SetFocus
Case 1
recnum = n
Open "rec.tem" For Random As #1 Len = Len(da) '帮解释这一够话的语法及使用方法
Open "worker.dat" For Random As #2 Len = Len(da)
lastrec = LOF(2) / Len(da)
For i = 1 To lastrec
If i <> recnum Then
Get #2, i, da '这够也不懂,get是什么?#2是什么?
Put #1, , da
End If
Next
Close #1
Close #2
Kill "worker.dat" 'kill 是什么?
Name "rec.tem" As "worker.dat"
Call Form_Activate
Case 2
With da
.gh = Text1(0).Text
.xm = Text1(1).Text
.xb = Option1(0).Value
.gz = Text1(2).Text
.rq = Text1(3).Text
End With
Open "worker.dat" For Random As #1 Len = Len(da)
Put #1, n, da
Close #1
End Select
End Sub
Private Sub Fnd_Click(Index As Integer)
Dim d(4) As String
Open "worker.dat" For Random As #2 Len = Len(da)
lastrec = LOF(2) / Len(da)
Select Case Index
Case 0
a = Trim(InputBox("查找的姓名:", "请输入"))
If a <> "" Then
List1.Clear
For i = 1 To lastrec
Get #2, i, da
b = Trim(da.xm)
If b Like a & "*" Then
d(0) = da.xm
d(1) = da.gh
d(2) = da.gz
d(3) = da.xb
List1.AddItem d(i) & d(2) & " " & d(0)
End If
Next
If List1.ListCount < 1 Then
MsgBox "没有找到" & a
End If
End If
Case 1
Dim x As Integer, y As Integer
x = InputBox("请输入查找工资范围的下限:", "请输入")
y = InputBox("请输入查找工资范围的上限:", "请输入")
If x <= y Then
List1.Clear
For i = 1 To lastrec
Get #2, i, da
If da.gz >= x And da.gz <= y Then
d(0) = da.xm
d(1) = da.gh
d(2) = da.gz
d(3) = da.xb
List1.AddItem d(i) & d(2) & " " & d(0)
End If
Next
If List1.ListCount < 1 Then
MsgBox " 没有找到"
End If
End If
Case 2
a = Trim(InputBox("查找的工作证号:", "请输入"))
If a <> "" Then
List1.Clear
For i = 1 To lastrec
Get #2, i, da
b = Trim(da.gh)
If b Like a & "*" Then
d(0) = da.xm
d(1) = da.gh
d(2) = da.gz
d(3) = da.xb
List1.AddItem d(i) & d(2) & " " & d(0)
End If
Next
If List1.ListCount < 1 Then
MsgBox " 没有找到" & a
End If
End If
End Select
Close #2
End Sub
不知道错在哪里,帮忙修改一下,就给我要解释的地方加注释。拜托了,朋友。
可以到邮箱bdzdyx@163.com,密码:00000000下载源码。
还要忝加什么代码才可以用呢? 展开
编写程序设计个人信息查询工具。要求使用菜单来控制数据的编织、查找,可完成按姓名查找、按工资查找、按工作证号查找的功能。查找时使用模糊查找,将满足条件的记录显示在列表框中。对象属性如下图所示:
资料上编写的代码如下:
Private Sub Edt_Click(Index As Integer)
Select Case Index
Case 0
With da '这个da是哪里来的?是个什么?
.gh = Text1(0).Text
.xm = Text1(1).Text
.xb = Option1(0).Value
.gz = Val(Text1(2).Text)
.rq = Text1(3).Text
End With
List1.AddItem da.xb
Open "worker.dat" For Random As #1 Len = Len(da)
lastrec = LOF(1) / Len(da)
Put #1, lastrec + 1, da
Close #1
Call Form_Activate '这里有错误,不知道怎么改!
Text1(0).SetFocus
Case 1
recnum = n
Open "rec.tem" For Random As #1 Len = Len(da) '帮解释这一够话的语法及使用方法
Open "worker.dat" For Random As #2 Len = Len(da)
lastrec = LOF(2) / Len(da)
For i = 1 To lastrec
If i <> recnum Then
Get #2, i, da '这够也不懂,get是什么?#2是什么?
Put #1, , da
End If
Next
Close #1
Close #2
Kill "worker.dat" 'kill 是什么?
Name "rec.tem" As "worker.dat"
Call Form_Activate
Case 2
With da
.gh = Text1(0).Text
.xm = Text1(1).Text
.xb = Option1(0).Value
.gz = Text1(2).Text
.rq = Text1(3).Text
End With
Open "worker.dat" For Random As #1 Len = Len(da)
Put #1, n, da
Close #1
End Select
End Sub
Private Sub Fnd_Click(Index As Integer)
Dim d(4) As String
Open "worker.dat" For Random As #2 Len = Len(da)
lastrec = LOF(2) / Len(da)
Select Case Index
Case 0
a = Trim(InputBox("查找的姓名:", "请输入"))
If a <> "" Then
List1.Clear
For i = 1 To lastrec
Get #2, i, da
b = Trim(da.xm)
If b Like a & "*" Then
d(0) = da.xm
d(1) = da.gh
d(2) = da.gz
d(3) = da.xb
List1.AddItem d(i) & d(2) & " " & d(0)
End If
Next
If List1.ListCount < 1 Then
MsgBox "没有找到" & a
End If
End If
Case 1
Dim x As Integer, y As Integer
x = InputBox("请输入查找工资范围的下限:", "请输入")
y = InputBox("请输入查找工资范围的上限:", "请输入")
If x <= y Then
List1.Clear
For i = 1 To lastrec
Get #2, i, da
If da.gz >= x And da.gz <= y Then
d(0) = da.xm
d(1) = da.gh
d(2) = da.gz
d(3) = da.xb
List1.AddItem d(i) & d(2) & " " & d(0)
End If
Next
If List1.ListCount < 1 Then
MsgBox " 没有找到"
End If
End If
Case 2
a = Trim(InputBox("查找的工作证号:", "请输入"))
If a <> "" Then
List1.Clear
For i = 1 To lastrec
Get #2, i, da
b = Trim(da.gh)
If b Like a & "*" Then
d(0) = da.xm
d(1) = da.gh
d(2) = da.gz
d(3) = da.xb
List1.AddItem d(i) & d(2) & " " & d(0)
End If
Next
If List1.ListCount < 1 Then
MsgBox " 没有找到" & a
End If
End If
End Select
Close #2
End Sub
不知道错在哪里,帮忙修改一下,就给我要解释的地方加注释。拜托了,朋友。
可以到邮箱bdzdyx@163.com,密码:00000000下载源码。
还要忝加什么代码才可以用呢? 展开
6个回答
展开全部
第一个问题
Dim
SQLstr
As
String
SQLstr
=
Replace(Trim(Me.Text1.Text),
"
",
"%")
SQLstr
=
"select
name
from
account
where
name
like
%"
&
a
&
"%"
用这个sqlstr语句去数据库查询就可以,输入前后空格去掉了,中间如果有空格,相当于条件并立。
以上Trim()是为了去掉输入的前后空格,如果用户输入了"
mater
"则用trim("
mater")后变成"mater"
,Replace()是为了在用户输入时用%代替中间的空格符号,假设,用户输入"
李
里
"
经过上面的处理后结果是
"李%里"这样带入SQL语句就是Select
name
form
count
where
name
like
%李%里%
第二个问题
Dim
a,
b
As
Integer
a
=
MSFlexGrid1.RowSel
b
=
MSFlexGrid1.ColSel上面两行代码可以取得msflezGrid1的已选择行数的序号和列序号,好像是啊,你应该知道怎么取值了吧。
因为好久不用vb,环境也没有,无法测试谅解。你试试吧
Dim
SQLstr
As
String
SQLstr
=
Replace(Trim(Me.Text1.Text),
"
",
"%")
SQLstr
=
"select
name
from
account
where
name
like
%"
&
a
&
"%"
用这个sqlstr语句去数据库查询就可以,输入前后空格去掉了,中间如果有空格,相当于条件并立。
以上Trim()是为了去掉输入的前后空格,如果用户输入了"
mater
"则用trim("
mater")后变成"mater"
,Replace()是为了在用户输入时用%代替中间的空格符号,假设,用户输入"
李
里
"
经过上面的处理后结果是
"李%里"这样带入SQL语句就是Select
name
form
count
where
name
like
%李%里%
第二个问题
Dim
a,
b
As
Integer
a
=
MSFlexGrid1.RowSel
b
=
MSFlexGrid1.ColSel上面两行代码可以取得msflezGrid1的已选择行数的序号和列序号,好像是啊,你应该知道怎么取值了吧。
因为好久不用vb,环境也没有,无法测试谅解。你试试吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
代码已经发给你了,楼主给分.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
da应该不是控件 是类似这样的
Private Type qq
hm As String
xb As String
End Type
Private Type e
x As String
y As String
End Type
Private Sub Form_Load()
Dim a As qq, b As e
MsgBox a.hm
MsgBox b.x
End Sub
Private Type qq
hm As String
xb As String
End Type
Private Type e
x As String
y As String
End Type
Private Sub Form_Load()
Dim a As qq, b As e
MsgBox a.hm
MsgBox b.x
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该是你打开文件的时候就会报错,说是丢失了部分文件的,可能使用了非标准控件,所以,当移动了原来的vb代码的时候,该非标准控件就会丢失,就会造成错误。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已下载,正在调试中,等待,你没有添加数据控件,就是那个DA
我已经把注解过的原程序重新发到你的邮箱中
我已经把注解过的原程序重新发到你的邮箱中
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询