| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1791 人关注过本帖
标题:求助,谁能帮我看一下下面的检索部分只能搜到第一个数据,不能真正实现检索 ...
只看楼主 加入收藏
陌上过客
Rank: 2
等 级:论坛游民
威 望:4
帖 子:36
专家分:25
注 册:2015-12-27
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:5 
求助,谁能帮我看一下下面的检索部分只能搜到第一个数据,不能真正实现检索功能?
Dim c() As Variant, d() As Variant, m As Integer, n As Integer
Private Sub enter_Click()
   m = InputBox("请输入录入的数据数量", "输入")
   Dim a(m), b(m)
   Open App.Path & "\data1.txt" For Append As #1
        For i = 1 To m
           a(i) = InputBox("请输入名称", "输入")
           If a(i) = "" Then a(i) = "未输入"
           Print #1, a(i)
           Open App.Path & "\data2.txt" For Append As #2
              b(i) = InputBox("请输入金额", "输入")
              If b(i) = "" Then b(i) = "未输入"
           Print #2, b(i)
           Close #2
        Next i
   Close #1
   MsgBox "数据录入完成"
End Sub
Private Sub read_Click()
   Open App.Path & "\data1.txt" For Input As #1
      n = 0
      Do While Not EOF(1)
        Line Input #1, Data1
        n = n + 1
      Loop
      a = n
       If Not EOF(1) Then
         For i = 1 To n
            Input #1, c(i)
         Next i
       End If
    Open App.Path & "\data2.txt" For Input As #2
       If Not EOF(1) Then
         For i = 1 To n
            Input #2, d(i)
         Next i
       End If
    Close #1
    Close #2
    MsgBox "数据读取完成,一共" & n & "条数据"
    Text1.Enabled = True
    Text1.SetFocus
End Sub
Private Sub Command2_Click()
    If Text1.Text = "" Then
       MsgBox "请输入要查找的内容"
       Text1.SetFocus
    End If
    For i = 1 To a
       If Text1.Text = c(i) Then
          MsgBox "姓名:" & c(i) & vbCrLf & "金额:" & d(i)
       Else
          MsgBox "未查到此人信息"
       End If
    Next i
End Sub

[此贴子已经被作者于2015-12-29 20:11编辑过]

2015-12-27 14:25
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4943
专家分:30067
注 册:2008-10-15
收藏
得分:10 
   m = InputBox("请输入录入的数据数量", "输入")
   Dim a(m), b(m)

这句错了。 dim 数组里,维数必须是固定数或常数。
可以改成
dim a(),b()
redm a(m),b(m)

------------------
   Open App.Path & "\data1.txt" For Append As #1
        For i = 1 To m
           a(i) = InputBox("请输入名称", "输入")
           If a(i) = "" Then a(i) = "未输入"
           Print #1, a(i)
           Open App.Path & "\data2.txt" For Append As #2
              b(i) = InputBox("请输入金额", "输入")
              If b(i) = "" Then b(i) = "未输入"
           Print #2, b(i)
           Close #2
        Next i
   Close #1

打开文件的不需要这种的嵌套。
直接
open .... #1
open .... #2
.....
? #1,a(i)
....
? #2,b(i)
...
close #2
close #1
打开文件没有冲突的,只要不同时打开超多的文件,造成系统出问题就没事。甚至可以一个过程中打开,另一个过程中使用,只要文件号没错就可以。
-------------------------
   Open App.Path & "\data1.txt" For Input As #1
      n = 0
      Do While Not EOF(1)
        Line Input #1, Data1
        n = n + 1
      Loop
      a = n
       If Not EOF(1) Then
         For i = 1 To n
            Input #1, c(i)
         Next i
       End If
顺序文件,只能向后读一遍。你读了一遍后,需要读第二遍前,需要关闭,然后重新打开。
其次,你取了行数后,c()没有重定义大小,这里肯定是下标越界的。
包括后面 d() 也是没有重定义大小。


===================
新手,绝对是新手,与我当年刚学习时一样。努力吧。

授人于鱼,不如授人于渔
早已停用QQ了
2015-12-27 16:52
陌上过客
Rank: 2
等 级:论坛游民
威 望:4
帖 子:36
专家分:25
注 册:2015-12-27
收藏
得分:0 
回复 2楼 风吹过b
我修改过后边界值是没问题了,但是最后的检索部分还是有问题,可以帮我看看吗,
Private Sub Command2_Click()
    If Text1.Text = "" Then
       MsgBox "请输入要查找的内容"
       Text1.SetFocus
    Else
       For i = 1 To n
          If c(i) = Text1.Text And Mid(c(i), 1, 1) = Text1.Text Then
             MsgBox "姓名:" & c(i) & vbCrLf & "金额:" & d(i)
          Else
             MsgBox "未查到此人信息"
             Exit For
          End If
      Next i
    End If
End Sub


[此贴子已经被作者于2015-12-28 13:15编辑过]


你成了我用尽一生去纪念的过客。。。。
2015-12-28 13:13
陌上过客
Rank: 2
等 级:论坛游民
威 望:4
帖 子:36
专家分:25
注 册:2015-12-27
收藏
得分:0 
回复 2楼 风吹过b
检索的部分只能检索到第一个,其他都查不到不知道是什么情况,大神能帮我看一下吗

你成了我用尽一生去纪念的过客。。。。
2015-12-28 13:25
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:938
专家分:5244
注 册:2015-8-10
收藏
得分:10 
    For i = 1 To a
这句没明白,a并不是全局变量,也没有赋值。 可能问题就在这里。试试这句
 For i = 1 To ubound(c)
2015-12-30 20:33
陌上过客
Rank: 2
等 级:论坛游民
威 望:4
帖 子:36
专家分:25
注 册:2015-12-27
收藏
得分:0 
回复 5楼 xiangyue0510
我找到原因了,你说的是原因的一部分,还有一部分很大的原因在于读取文件的过程出了问题,目前已解决,多谢回帖

你成了我用尽一生去纪念的过客。。。。
2015-12-31 21:41
快速回复:求助,谁能帮我看一下下面的检索部分只能搜到第一个数据,不能真正实现 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012734 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved