Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. Visual Basic
  4. Iterate through Array

Iterate through Array

Scheduled Pinned Locked Moved Visual Basic
helpdatabasedata-structures
11 Posts 3 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • L Larry White

    I am having difficulty iterating through an array. I have found the following sample code and tried modifying it with my variables. ' Sample Array Read Code 'For i = 0 To arrList2.Count - 1 ' Console.WriteLine(CStr(arrList2.Item(i))) 'Next After modifying line 3 with x = CStr(arrList2.Item(i)) , I receive the following error: "Value of type 'String' cannot be converted to '1-dimensional array of String'." X is defined as: Dim x() As String I need to get each element (which is a name read from a textbox) into a variable strName. This is to allow my SQL statement to create a record for each name in the array. Any help would be greatly appreciated! Thank you in advance.:)

    LWhite

    D Offline
    D Offline
    Dave Kreskowiak
    wrote on last edited by
    #2

    Larry White wrote:

    After modifying line 3 with x = CStr(arrList2.Item(i)) , I receive the following error: "Value of type 'String' cannot be converted to '1-dimensional array of String'." X is defined as: Dim x() As String

    It's always best to copy and paste the actual code you're using. Don't post a sample and then tell use what you did to it. It makes it very difficult to see what you actually did. x doesn't have an Item property, so the code should look more like this:

    For i = 0 To x.GetUpperBound(0)
        Console.WriteLine(x(i))
    Next i
    

    Notice, you don't need CSTR. This is because your x array is an array of Strings. Why try to convert a String to a String?? Also, to get your code to show up in the nice beige box and retain some formatting, paste it between <pre> and </pre> tags.

    Dave Kreskowiak Microsoft MVP - Visual Basic

    L 1 Reply Last reply
    0
    • L Larry White

      I am having difficulty iterating through an array. I have found the following sample code and tried modifying it with my variables. ' Sample Array Read Code 'For i = 0 To arrList2.Count - 1 ' Console.WriteLine(CStr(arrList2.Item(i))) 'Next After modifying line 3 with x = CStr(arrList2.Item(i)) , I receive the following error: "Value of type 'String' cannot be converted to '1-dimensional array of String'." X is defined as: Dim x() As String I need to get each element (which is a name read from a textbox) into a variable strName. This is to allow my SQL statement to create a record for each name in the array. Any help would be greatly appreciated! Thank you in advance.:)

      LWhite

      G Offline
      G Offline
      Guffa
      wrote on last edited by
      #3

      Why do you declare the x variable as an array? As you are going to use it to reference a string, declare it as a string: Dim x As String

      --- single minded; short sighted; long gone;

      L 1 Reply Last reply
      0
      • D Dave Kreskowiak

        Larry White wrote:

        After modifying line 3 with x = CStr(arrList2.Item(i)) , I receive the following error: "Value of type 'String' cannot be converted to '1-dimensional array of String'." X is defined as: Dim x() As String

        It's always best to copy and paste the actual code you're using. Don't post a sample and then tell use what you did to it. It makes it very difficult to see what you actually did. x doesn't have an Item property, so the code should look more like this:

        For i = 0 To x.GetUpperBound(0)
            Console.WriteLine(x(i))
        Next i
        

        Notice, you don't need CSTR. This is because your x array is an array of Strings. Why try to convert a String to a String?? Also, to get your code to show up in the nice beige box and retain some formatting, paste it between <pre> and </pre> tags.

        Dave Kreskowiak Microsoft MVP - Visual Basic

        L Offline
        L Offline
        Larry White
        wrote on last edited by
        #4

        Thank you. The tags do make it alot easier to read.

        LWhite

        1 Reply Last reply
        0
        • G Guffa

          Why do you declare the x variable as an array? As you are going to use it to reference a string, declare it as a string: Dim x As String

          --- single minded; short sighted; long gone;

          L Offline
          L Offline
          Larry White
          wrote on last edited by
          #5

          I adjusted my code as follows:

          Dim x As String
          For i = 0 To arrList2.Count - 1
          x = arrList2.Item(i)
          strName = arrList2.Item(i)

          I now get the qty of data entries in my database equal to the number of names I select in the textbox, but the last entry is blank. If I select 3 names, I get the first 2 database entries with the names, but the last one is blank (name field). It appears the first iteration leaves strName blank. Thanks again for the assistance.

          LWhite

          G 1 Reply Last reply
          0
          • L Larry White

            I adjusted my code as follows:

            Dim x As String
            For i = 0 To arrList2.Count - 1
            x = arrList2.Item(i)
            strName = arrList2.Item(i)

            I now get the qty of data entries in my database equal to the number of names I select in the textbox, but the last entry is blank. If I select 3 names, I get the first 2 database entries with the names, but the last one is blank (name field). It appears the first iteration leaves strName blank. Thanks again for the assistance.

            LWhite

            G Offline
            G Offline
            Guffa
            wrote on last edited by
            #6

            The code that you have shown is correct, although reading the same value from the array twice into separate variables doesn't look like what you want to do. The problem that you talk about is in the part of the code that you haven't shown. Unless you show it, I can't tell you much more than that it's wrong...

            --- single minded; short sighted; long gone;

            L 1 Reply Last reply
            0
            • G Guffa

              The code that you have shown is correct, although reading the same value from the array twice into separate variables doesn't look like what you want to do. The problem that you talk about is in the part of the code that you haven't shown. Unless you show it, I can't tell you much more than that it's wrong...

              --- single minded; short sighted; long gone;

              L Offline
              L Offline
              Larry White
              wrote on last edited by
              #7

              Here are the other relevant parts of my code. I build the textbox entries with the following, which also drops the selected names into the array:

              Private Sub lbName_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lbName.SelectedIndexChanged
              editName.Text = Nothing
              For i = 0 To lbName.SelectedItems.Count - 1
              arrList2.Add(strName)
              With arrList2
              .ToArray()
              End With
              editName.Text = editName.Text & lbName.SelectedItems(i) & vbCrLf
              strName = lbName.SelectedItems(i) & vbCrLf
              Next
              End Sub

              Here is my complete code that is supposed to create a new database record with each iteration of the name array:

              For i = 0 To arrList2.Count - 1
              strName = arrList2.Item(i)
              x = arrList2.Item(i)

              Dim strCommandText As String = "INSERT INTO Orders(OrderDate, DeliverDate, DeliverLocation, Name, Special, Comments, Rate, EMPLID, LoggedIP)" _
              & "VALUES('" & strOrderDate & "','" & strDeliverDate & "','" & strDeliverLocation & "','" & strName & "','" & strSpecial & "','" & strComments & "','" & strRate & "','" & strEMPLID & "','" & strLoggedHost & "')"

              Dim cmd As New SqlClient.SqlCommand(strCommandText, SqlConnection1)
              cmd.ExecuteNonQuery()
              Next

              Thank you for your assistance.:)

              LWhite

              G 1 Reply Last reply
              0
              • L Larry White

                Here are the other relevant parts of my code. I build the textbox entries with the following, which also drops the selected names into the array:

                Private Sub lbName_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lbName.SelectedIndexChanged
                editName.Text = Nothing
                For i = 0 To lbName.SelectedItems.Count - 1
                arrList2.Add(strName)
                With arrList2
                .ToArray()
                End With
                editName.Text = editName.Text & lbName.SelectedItems(i) & vbCrLf
                strName = lbName.SelectedItems(i) & vbCrLf
                Next
                End Sub

                Here is my complete code that is supposed to create a new database record with each iteration of the name array:

                For i = 0 To arrList2.Count - 1
                strName = arrList2.Item(i)
                x = arrList2.Item(i)

                Dim strCommandText As String = "INSERT INTO Orders(OrderDate, DeliverDate, DeliverLocation, Name, Special, Comments, Rate, EMPLID, LoggedIP)" _
                & "VALUES('" & strOrderDate & "','" & strDeliverDate & "','" & strDeliverLocation & "','" & strName & "','" & strSpecial & "','" & strComments & "','" & strRate & "','" & strEMPLID & "','" & strLoggedHost & "')"

                Dim cmd As New SqlClient.SqlCommand(strCommandText, SqlConnection1)
                cmd.ExecuteNonQuery()
                Next

                Thank you for your assistance.:)

                LWhite

                G Offline
                G Offline
                Guffa
                wrote on last edited by
                #8

                The code look pretty strange... Where do you declare the strName variable? You use the strName variable, but you haven't given it any value before using it. You give it a value later in the loop, so it will have a value for the next iteration of the loop, but not for the first iteration. Also, the value that you assign to it in the last iteration will never be used. You create an array from the items in the list arrList2, but you just throw the array away without doing anything with it. Why?

                --- single minded; short sighted; long gone;

                L 1 Reply Last reply
                0
                • G Guffa

                  The code look pretty strange... Where do you declare the strName variable? You use the strName variable, but you haven't given it any value before using it. You give it a value later in the loop, so it will have a value for the next iteration of the loop, but not for the first iteration. Also, the value that you assign to it in the last iteration will never be used. You create an array from the items in the list arrList2, but you just throw the array away without doing anything with it. Why?

                  --- single minded; short sighted; long gone;

                  L Offline
                  L Offline
                  Larry White
                  wrote on last edited by
                  #9

                  When the form opens, I have a "Dim strName As String" along with other variables. Thank you, you got me thinking and I rearranged my code. It works now. Here is what it looks like now:

                  Private Sub lbName_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lbName.SelectedIndexChanged
                  editName.Text = Nothing
                  tbEmplid.Text = Nothing
                  For i = 0 To lbName.SelectedItems.Count - 1
                  strName = lbName.SelectedItems(i) & vbCrLf '.ToString & vbCrLf
                  arrList2.Add(strName)
                  With arrList2
                  .ToArray()
                  End With
                  editName.Text = editName.Text & lbName.SelectedItems(i) & vbCrLf
                  Next
                  End Sub

                  Note: I moved the "strName = lbName.SelectedItems(i) & vbCrLf" line above the "arrList2.Add(strName)" line, instead of being the last line. It sequences through nicely now. I trash the array, is it is only for the record creation and not needed after that. Thank you again! I hope posting this code will help someone else!:cool:

                  LWhite

                  G 1 Reply Last reply
                  0
                  • L Larry White

                    When the form opens, I have a "Dim strName As String" along with other variables. Thank you, you got me thinking and I rearranged my code. It works now. Here is what it looks like now:

                    Private Sub lbName_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lbName.SelectedIndexChanged
                    editName.Text = Nothing
                    tbEmplid.Text = Nothing
                    For i = 0 To lbName.SelectedItems.Count - 1
                    strName = lbName.SelectedItems(i) & vbCrLf '.ToString & vbCrLf
                    arrList2.Add(strName)
                    With arrList2
                    .ToArray()
                    End With
                    editName.Text = editName.Text & lbName.SelectedItems(i) & vbCrLf
                    Next
                    End Sub

                    Note: I moved the "strName = lbName.SelectedItems(i) & vbCrLf" line above the "arrList2.Add(strName)" line, instead of being the last line. It sequences through nicely now. I trash the array, is it is only for the record creation and not needed after that. Thank you again! I hope posting this code will help someone else!:cool:

                    LWhite

                    G Offline
                    G Offline
                    Guffa
                    wrote on last edited by
                    #10

                    That looks better. :) Any variables you can, you should declare locally inside the method, instead of declaring them in the class. Local variables are allocated on the stack, are very inexpensive, and only exist when they are needed. Class variables increases the size of your form object, and they take up memory even when they are not used. You still have some strange code...

                    With arrList2 .ToArray() End With

                    This does the same as:

                    Dim s() as String
                    With attList2
                    s = .ToArray()
                    End With
                    s = Nothing

                    In other words, the only thing that it does is wasting time and memory resources. You create one array each iteration of the loop, and not any of the arrays are ever used for anything.

                    --- single minded; short sighted; long gone;

                    L 1 Reply Last reply
                    0
                    • G Guffa

                      That looks better. :) Any variables you can, you should declare locally inside the method, instead of declaring them in the class. Local variables are allocated on the stack, are very inexpensive, and only exist when they are needed. Class variables increases the size of your form object, and they take up memory even when they are not used. You still have some strange code...

                      With arrList2 .ToArray() End With

                      This does the same as:

                      Dim s() as String
                      With attList2
                      s = .ToArray()
                      End With
                      s = Nothing

                      In other words, the only thing that it does is wasting time and memory resources. You create one array each iteration of the loop, and not any of the arrays are ever used for anything.

                      --- single minded; short sighted; long gone;

                      L Offline
                      L Offline
                      Larry White
                      wrote on last edited by
                      #11

                      Thank you for your suggestions. I rearranged most of my variables to be local. I have another issue you may be able to help me on. I'm using the following code to perform a SQL SELECT to combine the first & last name, and the employee ID number to be used in a listbox. The user selects multiple names that are transfered to a textbox. When they are selected, the array is created, which is used to create a record in a SQL table (one entry per name). The problem I have is, I need to update the Employee ID field but haven't found the right code to extract the "emplid" data. The name field works fine.

                      Dim sql1 As String = "Select (LastName + ', ' + FirstName) As Name, emplid FROM Users ORDER BY LastName"

                      Dim strCommandText As String = "INSERT INTO Orders(OrderDate, DeliverDate, DeliverLocation, Name, Special, Comments, Rate, EMPLID, LoggedIP)" & "VALUES('" & strOrderDate & "','" & strDeliverDate & "','" & strDeliverLocation & "','" & strName & "','" & strSpecial & "'" & ",'" & strComments & "','" & strRate & "','" & strEMPLID & "','" & strLoggedHost & "')"

                      Private Sub lbName_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lbName.SelectedIndexChanged
                      Dim i As Integer
                      editName.Text = Nothing
                      For i = 0 To lbName.SelectedItems.Count - 1
                      arrList2.Add(lbName.SelectedItems(i))
                      With arrList2
                      .ToArray()
                      End With
                      editName.Text = editName.Text & lbName.SelectedItems(i) & vbCrLf
                      Next
                      i = Nothing
                      End Sub

                      Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click

                          Dim i As Integer
                          Dim r As String
                          Dim x As String
                      
                          editComments.Clear()
                          strComments = editComments.Text
                      
                          Try
                              SqlConnection1.Close()
                              cnn1.Close()
                              SqlConnection1.Open()
                      
                              ' Create a name array from editName textbox; Used to create a new record for each name
                      
                              For i = 0 To arrList2.Count - 1
                                  strName = arrList2.Item(i)
                                  x = arrList2.Item(i)
                      
                                  Dim strCommandText As String = "INSERT INTO Orders(OrderDate, DeliverDate, DeliverLocation, Name, Special, Comments, Rate, EMPLID, LoggedIP)" & "VALUES('" & strOrderDate & "','" & strDeliverDate & "','" & strDeliverLocation & "','" & strName & "','" & strSpecial & "'" & ",'" & strComments & "','" & strRate & "','" & strEMPLID & "','" & strLogge
                      
                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • World
                      • Users
                      • Groups