Solved

Streamreader in vb.net

Posted on 2009-04-06
1
805 Views
Last Modified: 2013-11-27
Hi,
I am reading a file from richtextbox with streamreader.While reading the file if certain condition is met I am jumping out of the sub by exit sub.i need to again go back to the sub and begin reading the file from that line.Can anybody help me in that code attached.
Don't know how to declare streamreader
Public Sub Get_SQL_Line(ByRef SQL As String)

        Dim EOFile As Boolean

        Dim CreateStatement As Boolean

        Dim CommentBlock As Boolean

        Dim StoredProcedure As Boolean

        Dim strreader As New IO.StreamReader(TempSQLPath)

        Try
 

              If NextLine = String.Empty Then
 

                NextLine = strreader.ReadLine()
 

                LineNo += 1

            End If

            Do
 

                CurrLine = NextLine

                If strreader.EndOfStream Then

                      If NextLine = String.Empty Then Exit Sub

                    If NextLine = vbNewLine Then Exit Sub

                    If NumLines = LineNo Then EOFile = True

                    NextLine = String.Empty

                Else

                    NextLine = strreader.ReadLine

                    LineNo += 1
 
 

                End If
 
 

                'Create statement block

                If Trim(UCase(Left(CurrLine, 16))) = "CREATE PROCEDURE" OrElse Trim(UCase(Left(CurrLine, 14))) = "CREATE TRIGGER" OrElse Trim(UCase(Left(CurrLine, 11))) = "CREATE VIEW" Then

                    CreateStatement = True

                End If

                If Trim(UCase(Left(CurrLine, 15))) = "ALTER PROCEDURE" OrElse Trim(UCase(Left(CurrLine, 7))) = "DECLARE" Then

                    StoredProcedure = True

                End If

                If Trim(UCase(Left(CurrLine, 2))) = "GO" Then

                    StoredProcedure = False

                End If

                'Comment block

                ' added OrElse Right(Trim(CurrLine), 2) = "*/"

                If Left(Trim(CurrLine), 2) = "/*" OrElse Right(Trim(CurrLine), 2) = "*/" Then

                    If Not StoredProcedure Then

                        CommentBlock = True 'Note that SQL Server/Oracle scripts file may have comments formatted as /*  comment */

                    End If

                End If

                If CommentBlock Then

                    'If InStr(CurrLine, "*/") > 0 Then

                    If CurrLine.IndexOf("*/") > 0 Then
 

                        CurrLine = Trim(Right(CurrLine, Len(CurrLine) - (InStr(CurrLine, "*/") + 1)))

                        CommentBlock = False

                    End If

                End If

                If Not CommentBlock Then

                    If Right(CurrLine, 1) = ";" Then

                        SQL = CurrLine

                    ElseIf NextLine.Trim = ";" Then

                        SQL = CurrLine

                        NextLine = String.Empty

                    ElseIf (NextLine.Trim = "" AndAlso Not StoredProcedure) Then

                        SQL = CurrLine

                        NextLine = String.Empty

                    ElseIf (NextLine.Trim).ToUpper = "GO" Then

                        SQL = CurrLine

                        NextLine = String.Empty

                    ElseIf (Not CreateStatement AndAlso CheckNextLine(CurrLine, NextLine) AndAlso Not StoredProcedure) Then

                        SQL = CurrLine

                    ElseIf Not EOFile Then

                        If CurrLine <> "" Then

                            arrNextLine.Add(CurrLine)

                        End If

                        If NextLine <> "" Then

                            arrNextLine.Add(NextLine)

                        End If

                        NextLine = CurrLine & vbNewLine & NextLine

                        Get_SQL_Line(SQL)

                    Else

                        SQL = CurrLine

                    End If

                End If

                If (arrNextLine.Count = 0 AndAlso CurrLine <> "") Then

                    arrNextLine.Add(CurrLine)

                End If

                SQL = CleanSQL(SQL)

                If EOFile Then Exit Sub

                          Loop While SQL = String.Empty

        Catch ex As Exception

            MsgBox(ex.ToString)

        End Try

    End Sub

Open in new window

0
Comment
Question by:RIAS
1 Comment
 
LVL 15

Accepted Solution

by:
oobayly earned 500 total points
Comment Utility
You could open the streamreader before entering your subroutine, then when you leave it because the condition is met, you can call the subroutine with the same streamreader which will remain at the position when you left it.


Sub DoStuff()

  Dim filePath As String

  Dim reader As New StreamReader(filePath)
 

  While (DoRead(reader))

    ' Exited DoRead due to condition found

    ' More logic here

    ' DoRead will be called until the condition isn't met, and the

    ' file has been fully read

  End While
 

  reader.Close()
 

End Sub
 

Function DoRead(reader As StreamReader) As Boolean

  ' You reader logic goes here

  ' If the condition is met, return True to leave the function
 

  Return False

End Function

Open in new window

0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Suggested Solutions

A long time ago (May 2011), I have written an article showing you how to create a DLL using Visual Studio 2005 to be hosted in SQL Server 2005. That was valid at that time and it is still valid if you are still using these versions. You can still re…
Since upgrading to Office 2013 or higher installing the Smart Indenter addin will fail. This article will explain how to install it so it will work regardless of the Office version installed.
Viewers will learn how to properly install Eclipse with the necessary JDK, and will take a look at an introductory Java program. Download Eclipse installation zip file: Extract files from zip file: Download and install JDK 8: Open Eclipse and …
In this fourth video of the Xpdf series, we discuss and demonstrate the PDFinfo utility, which retrieves the contents of a PDF's Info Dictionary, as well as some other information, including the page count. We show how to isolate the page count in a…

763 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

7 Experts available now in Live!

Get 1:1 Help Now