根据条件搜索文本文件和文件列表视图

时间:2015-05-27 14:54:54

标签: vb.net

每个人,

我一直致力于管理家庭财务的计划。这是我正在编写的一个程序,用于进一步了解VB.NET。到目前为止,一切都很顺利,但我一度陷入困境。我的主窗体中有一个选项卡式视图设置。标签为BillsIncomeSummary。我在最后一个标签上(summary)。现在我将账单写入文本文件,以下项目由|分隔。放在文件中的项目是:

Paid To | Date | Amount | Paid By | Confirmation Number | Notes

我的摘要标签上有一个ListView设置。第一列是列出我们支付的账单。剩下的几个月是最后一个月的总数(不用担心那些)。我遇到的问题是在文本文件中搜索当前年份的记录,并列出ListView第一列中的Pay To

这是在函数中运行的代码。我调用第二个函数来填充ListView列。

    Try
        sr = New StreamReader(MainBillsFile, True)
        Dim ListBills As New List(Of String)
        While (sr.Peek() > -1)
           BillitmsSum = sr.ReadLine().Split("|")
           Dim dateValue As Date = Date.Parse(BillitmsSum(1))
           Dim DateYear As String = dateValue.Year

           If DateYear = CurrentYear Then
            BillitmPayTo = BillitmsSum(0)
           End If
           Output_On_Launch_BillSum()
       End While
       sr.Close()
       sr.Dispose()
    Catch ex As Exception
        MessageBox.Show("Error Reading From File." & ex.Message)
    End Try

当程序加载时运行时如下:

假设我在文件2中有4个项目有2015年日期,2个有2014年日期。根据我想要展示的内容(2015年),我得到以下内容

2015 item 1
2015 item 2
2015 item 2
2015 item 2

我认为正在发生的是代码正在查看所有项目(总共4项)并拉动2015年的项目,但填充所有内容都是复制最后一项以匹配文件中的总项目4。

我希望这一切都有道理。这是我在这里的第一篇文章,到目前为止,搜索对我有很大的帮助,但我尝试了很多不同的代码,他们都给出了同样的结果。

这是另一种方法:

Sub Output_On_Launch_BillSum()
    Dim LVItem3 As ListViewItem = LVBillSum.Items.Add(BillitmPayTo)
End Sub

1 个答案:

答案 0 :(得分:0)

乍一看,只有当账单年份是当前日期时,您才需要调用Output_On_Launch_BillSum()。我需要确定这种方法。

       If DateYear = CurrentYear Then
        BillitmPayTo = BillitmsSum(0)
        Output_On_Launch_BillSum()    
       End If