Visual Basic.NET - Realizar doble bucle for each

 
Vista:
sin imagen de perfil
Val: 3
Ha aumentado su posición en 16 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Realizar doble bucle for each

Publicado por Miguel Alvarado (1 intervención) el 26/11/2020 22:03:39
Buenas tardes, actualmente estoy desarrolando una aplicacion de escritorio en vb.net que se conecta a una base de datos en sql server.

El problema consiste en que nencesito 2 variables las cuales tienen que ser dinamicas por ese motivo cree 2 dataset que alimentan las variables las cuales serian temp y temp 2 y estas a su ves estan en un comando de sql.


El problema es que uso un for each para que sean dinamicas, cuando realizo el primer for each como pueden ver funciona correctamente actualizandome temp pero cuando trato de implementar el segunda for each no encuentro la manera de hacerlo, porque debido al primer for each siempre termina un bucle y comienza el otro, y yo lo que necesito es que las 2 variables cambien cada ves que pasen en el comando de sql y no que solo una a la vez este cambiando.

Este seria mi codigo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
For Each row As DataRow In ds3.Tables(0).Rows
 
    Dim values() As Object = row.ItemArray
    Dim temp As String = String.Empty
 
    For Each value As Object In values
        If Not value Is DBNull.Value Then
            temp &= CStr(value) & Environment.NewLine
        End If
 
    Next
 
#Region "Actualizar el historial con la tarea"
 
    Dim actualizarRealizado As New SqlCommand("update Hist_Startup set Codigo=" & temp & " where Conteo=" & temp2 & "", cn)
    'TextBox1.Text = actualizarnombre.CommandText
    conectar()
    actualizarRealizado.ExecuteNonQuery()
    desconectar()
#End Region
 
Next
 
Catch ex As Exception
    MessageBox.Show(ex.Message)
End Try

Les agradeceria mucho si me pueden ayudar, de verdad que llevo pensando muchas horas y tambien buscando por todo internet pero no logro encontrar solucion a este problema.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Realizar doble bucle for each

Publicado por Phil Rob (1548 intervenciones) el 27/11/2020 13:04:57
Hola,

No tengo solución para tu problema pero tengo pistas.

Primero, no obligas utilizar For Each, también utilizar
1
For row As Integer = 0 To ds3.Tables(0).Rows.Count – 1

Segundo, no comprendo para que copiar row.ItemArray en tabla values : ds3.Tables(0) es un tabla y tu código:

1
2
3
4
5
For Each value As Object In values
    If Not value Is DBNull.Value Then
        temp &= CStr(value) & Environment.NewLine
    End If
Next

Puede ser reemplazado por:

1
2
3
4
5
For value As Integer = 0 To ds3.Tables(0).Columns.Count - 1
    If Not ds3.Tables(0).Rows.Item(row)(value) Is DBNull.Value Then
        temp &= CStr(ds3.Tables(0).Rows.Item(row)(value)) & Environment.NewLine
    End If
Next


Y quizá este es suficiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
' ... ... ...
Dim temp As String
For row As Integer = 0 To ds3.Tables(0).Rows.Count – 1
' ... ... ...
    temp = String.Empty
' ... ... ...
    For value As Integer = 0 To ds3.Tables(0).Columns.Count - 1
        If Not ds3.Tables(0).Rows.Item(row)(value) Is DBNull.Value Then
            temp &= ds3.Tables(0).Rows.Item(row)(value)) & Environment.NewLine
        End If
    Next
' ... ... ...
' ... ... ...
Next
' ... ... ...

Espero te dar buenas ideas …
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar