我现在有3个文本文件要实现两个文本文件的查询,查询完成后得到生成第三个文件.
文本1的格式是这样的:
*班次*时间*始发站*终点站*票价*里程*线路类型*车型*准售*余票*状态*途经站点*
*1050*05:30*和吉*化州*130*625*非直达*大型卧铺高级*35*35*在售*化州*
*1006*05:30*和吉*电白* 100*570*非直达*大型席座高级*45*45*发班*阳江,阳西,沙琅,电白*文本2的格式是这样:
*班次*配客站点*
*1050*和吉汽车客货运站*
*1006* 无*这是要得到的文本格式:
*班次*时间*始发站*终点站*配客站点*票价*里程*线路类型*车型*准售*余票*状态*途经站点*
*1050*05:30*和吉*化州*和吉汽车客货运站*130*625*非直达*大型卧铺高级*35*35*在售*化州*
*1006*05:30*和吉*电白* 无*100*570*非直达*大型席座高级*45*45*发班*阳江,阳西,沙琅,电白*其实就是查询第一个文件的班次跟第二个文件班次对应的配客点对应,然后生成到第三个文件里面去.

解决方案 »

  1.   

    把数据导入Access,一个查询就搞定了
      

  2.   

    是啊,我认为可以实现TXT对比的因为VB是可以读取TXT记录的.
      

  3.   

    可以参考一下:Private Sub Command1_Click()
    f1 = App.Path & "\文本一.txt"
    f2 = App.Path & "\文本二.txt"
    Dim dataArr1()
    Dim dataArr2()'文件内不允许有非法数据,否则报错
    ReadFileToArray f1, dataArr1()   '读文本一数据到数组
    ReadFileToArray f2, dataArr2()   '读文本二数据到数组Open App.Path & "\文本三.txt" For Output As #1Dim wStr As String
    '写头
    wStr = "*"
    For col = 1 To 4
        wStr = wStr & dataArr1(col, 1) & "*"
    Next
    wStr = wStr & dataArr2(2, 1) & "*"   '插入文本二头
    For col = 5 To UBound(dataArr1, 1)
        wStr = wStr & dataArr1(col, 1) & "*"
    Next
    Print #1, wStr'查找并写数据
    For row = 2 To UBound(dataArr1, 2)
        Index = FindKey(dataArr1(1, row), dataArr2())
        If Index <> -1 Then
            wStr = "*"
            For col = 1 To 4
            wStr = wStr & dataArr1(col, row) & "*"
            Next
            wStr = wStr & dataArr2(2, Index) & "*"   '插入文本二数据
            For col = 5 To UBound(dataArr1, 1)
            wStr = wStr & dataArr1(col, row) & "*"
            Next
            Print #1, wStr
        Else
            Debug.Print "没找到匹配项"
        End If
    Next
    Close #1
    End Sub'读文本数据到数组
    Private Sub ReadFileToArray(fileName, DataArr())
    Open fileName For Input As #1
    Dim tmps As String
    Dim tmpa
    Dim rows As Long, cols As IntegerLine Input #1, tmps
    tmpa = Split(tmps, "*")
    rows = 1: cols = UBound(tmpa) - 1
    ReDim DataArr(1 To cols, 1 To rows)
    For col = 1 To cols
        DataArr(col, rows) = tmpa(col)
    Next
    While Not EOF(1)
        Line Input #1, tmps
        tmpa = Split(tmps, "*")
        rows = rows + 1
        ReDim Preserve DataArr(1 To cols, 1 To rows)
        For col = 1 To cols
            DataArr(col, rows) = tmpa(col)
        Next
    Wend
    Close #1
    End Sub
    '查找匹配项
    Private Function FindKey(key, DataArr()) As Long
    Dim row As Long
    For row = 1 To UBound(DataArr, 2)
        If DataArr(1, row) = key Then Exit For
    Next
    If row > UBound(DataArr, 2) Then
        FindKey = -1
    Else
        FindKey = row
    End If
    End Function