程序指导 - DO WHILE循环

时间:2015-07-21 13:21:51

标签: .net vb.net loops while-loop

我需要一些结构性的帮助!我知道如何得到我需要做的但我无法通过循环解读如何做到这一点。

所以我在文本文件中有一个ID数据库。它们由线分开以便于阅读。我需要读取ID,根据该ID下载文件和日期范围的日期。我理解如何使用streamreader读取该行,并且可以使用1个ID和日期对1个文件做得很好,我的代码工作正常。

我想到了使用Do While循环,但很快意识到我可以下载每个日期的单个ID,我无法循环回到下一个ID并执行相同的操作(或者我可以和我只是不知道怎么样... ...

下载基于DateTimePicker2值。所以基本上这需要从ftp://ftp.address.net/UserID/yyyyMMdd.txt下载文件。

很抱歉收回解决方案,但此代码读取第1行,尝试下载文件然后停止。

For Each strUserID As String In System.IO.File.ReadAllLines("database.txt")
Dim myDate As DateTime = DateTimePicker2.Value 
Do While myDate < DateTimePicker3.Value
    Dim ftpAddr As String = "ftp://ftp.address.net/" & strUserID & myDate.ToString("yyyyMMdd") & ".txt"
    Dim myPath As String = "MyFolder'" & strUserID & myDate.ToString("yyyyMMdd") & ".txt" 'or whatever the path should be
    Try
        My.Computer.Network.Download(ftpAddr, myPath)
    Catch nullDownload as IO.IOException
    Continue For
    End Try

    If My.Computer.FileSystem.Exists(myPath)
        For Each line as String In System.IO.File.ReadAllLines(myPath)
            DataGridView1.Rows.Add(line.Split(","))
            Next
        End If                  

        myDate.AddDays(1)
    Loop
Next

我基本上需要使用database.txt中的下一行重新循环。

编辑:我正在尝试做的快速摘要:

  1. 从database.txt中的第1行开始读取ID   1A。根据DateTimePicker2值(ftp://ftp.address.net/userID/yyyyMMdd.txt)下载文件   1B。将其写入DataGridView
      1C。将1添加到日期并从步骤1a重复,重复直到DateTimePicker2&gt; DateTimePicker3

  2. 读取database.txt中的下一个ID并循环执行步骤1a-1c,但是从初始选择的日期开始。

1 个答案:

答案 0 :(得分:2)

你需要两个循环。一个用于处理每个UserID的外部循环,以及一个内部循环,该进程都与该UserID一起约会。

如果每个UserID是文本文件中的单独行,则可以使用File.ReadAllLines将它们读入数组并使用For Each循环来处理每个UserID。然后确保每次选择新的UserID时,将日期设置回初始日期。

For Each strUserID As String In System.IO.File.ReadAllLines("database.txt")
    Dim myDate As DateTime = DateTimePicker2.Value 
    Do While myDate < DateTimePicker3.Value
        Dim ftpAddr As String = "ftp://ftp.address.net/" & strUserID & myDate.ToString("yyyyMMdd") & ".txt"
        Dim myPath As String = "MyFolder'" & strUserID & myDate.ToString("yyyyMMdd") & ".txt" 'or whatever the path should be
        Try
            My.Computer.Network.Download(ftpAddr, myPath)
        Catch nullDownload as exception
        End Try

        If My.Computer.FileSystem.Exists(myPath)
            For Each line as String In System.IO.File.ReadAllLines(myPath)
                DataGridView1.Rows.Add(line.Split(","))
            Next
        End If                  

        myDate.AddDays(1)
    Loop
Next

[编辑] 我编辑了代码以匹配问题的编辑版本。要下载的文件的名称基于UserID和日期。

相关问题