Visual Basic.NET - Saltar filas con error y seguir con la siguiente

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

Saltar filas con error y seguir con la siguiente

Publicado por Miguel (15 intervenciones) el 18/04/2020 23:46:17
Estimados,
Previos saludos, tengo una DataGridView como la siguiente:

x ! y ! z
20 ! 20 ! 20
a ! 20 ! 20
20 ! 20 ! 20
! 20 ! 20
20 ! 20 ! 20

El problema es que quiero realizar cálculos cuando la linea se valida (ver código de mas abajo) y dejar la linea igual cuando no se puedan realizar cálculos, como es el caso de las filas 2 y 4 del ejemplo anterior.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Dim Archivo As StreamWriter
Dim Linea As String = Nothing
Archivo = New StreamWriter(Label2.Text)
With DataGridView1
 
    For i = 0 To .RowCount - 1
        Dim x, y, z As String
 
        x = .Rows(i).Cells(0).Value
        y = .Rows(i).Cells(1).Value
        z = .Rows(i).Cells(2).Value
 
        Linea =
            Math.Round(x + 2, 3) & "," &
            Math.Round(y + 1, 3) & "," &
            Math.Round(z + 2, 3)
 
        Archivo.WriteLine(Linea)
 
    Next
 
End With
Archivo.Close()

De ante mano muchas gracias por su ayuda.

Saludos
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: 2.985
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Saltar filas con error y seguir con la siguiente

Publicado por Phil Rob (843 intervenciones) el 19/04/2020 17:02:12
Hola,

Quizá este puede te ayudar :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
For i = 0 To .RowCount - 1
    Dim x, y, z As Double     ' **********  Para calcular, Double es mejor que String
 
Try
    x = CType(.Rows(i).Cells(0).Value, Double)
    y = CType(.Rows(i).Cells(1).Value, Double)
    z = CType(.Rows(i).Cells(2).Value, Double)
Cach
   Continue For   ' *** Si error para una conversion, pasamos al cicla siguiente y calculamos y escribamos archivo solamente cuando x, y e z estan bien
end Try
    Linea =
        Math.Round(x + 2, 3) & "," &
        Math.Round(y + 1, 3) & "," &
        Math.Round(z + 2, 3)
 
    Archivo.WriteLine(Linea)
 
Next

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
sin imagen de perfil
Val: 46
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Saltar filas con error y seguir con la siguiente

Publicado por Miguel (15 intervenciones) el 19/04/2020 18:41:24
Primero que todo muchas gracias por darte el tiempo de responder, tus mejoras funcionan super bien para darle continuidad al proceso, lo cual ya me sirve un monton, sin embargo elimina las filas 2 y 4 del ejemplo, las cuales necesito que también se vean reflejadas en el resultado sin sufrir cambios.

Gracias nuevamente por tu tiempo y ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.985
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Saltar filas con error y seguir con la siguiente

Publicado por Phil Rob (843 intervenciones) el 19/04/2020 18:52:56
Comprendo que quieres escribir las lineas 2 y 4 pero no calcular con las.
He bien comprendido ?

No es la buena pregunta !

Solamente, no comprendo !
Dices "Saltar filas con error y seguir con la siguiente" : Puedes me escribir este quieres ver en el fichero con todas lineas de tu ejemplo ?

A menudo que :
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
For i = 0 To .RowCount - 1
    Dim x, y, z As Double     ' **********  Para calcular, Double es mejor que String
 
Try
    x = CType(.Rows(i).Cells(0).Value, Double)
    y = CType(.Rows(i).Cells(1).Value, Double)
    z = CType(.Rows(i).Cells(2).Value, Double)
Cach
    Linea =
        .Rows(i).Cells(0).Value & "," &
        .Rows(i).Cells(1).Value & "," &
        .Rows(i).Cells(2).Value
 
    Archivo.WriteLine(Linea)
 
   Continue For   ' *** Si error para una conversion, pasamos al cicla siguiente y calculamos y escribamos archivo solamente cuando x, y e z estan bien
end Try
    Linea =
        Math.Round(x + 2, 3) & "," &
        Math.Round(y + 1, 3) & "," &
        Math.Round(z + 2, 3)
 
    Archivo.WriteLine(Linea)
 
Next

????
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
sin imagen de perfil
Val: 46
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Saltar filas con error y seguir con la siguiente

Publicado por Miguel (15 intervenciones) el 19/04/2020 19:04:37
Exacto, como tu dices la idea es que en las lineas que cumplen con el formato se realicen los calculos y en las lineas que no se cumple el formato sean traspasadas al resultado sin modificaciones, como en el ejemplo siguiente:

Entrada
x ! y ! z
20 ! 20 ! 20
a ! 20 ! 20
20 ! 20 ! 20
! 20 ! 20
20 ! 20 ! 20

Salidas
x ! y ! z
22 ! 21 ! 22
a ! 20 ! 20
22 ! 21 ! 22
! 20 ! 20
22 ! 21 ! 22
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.985
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Saltar filas con error y seguir con la siguiente

Publicado por Phil Rob (843 intervenciones) el 19/04/2020 19:16:28
Bien. En este caso, el código de mi mensaje precedente debe hacer el trabajo. No ?
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
sin imagen de perfil
Val: 46
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Saltar filas con error y seguir con la siguiente

Publicado por Miguel (15 intervenciones) el 19/04/2020 19:22:15
La verdad es que solo una parte :( dado que elimina las filas a ! 20 ! 20 // ! 20 ! 20 y necesito que aparezcan igual en el resultado (sin cambios como en el ejemplo anterior).

De todas formas agradezco un monton tu ayuda ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.985
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Saltar filas con error y seguir con la siguiente

Publicado por Phil Rob (843 intervenciones) el 19/04/2020 19:38:31
Verificas este 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
27
28
29
30
31
For i = 0 To .RowCount - 1
    Dim x, y, z As Double     ' **********  Para calcular, Double es mejor que String
 
Try
    x = CType(.Rows(i).Cells(0).Value, Double)
    y = CType(.Rows(i).Cells(1).Value, Double)
    z = CType(.Rows(i).Cells(2).Value, Double)
 
Cach     ' !!!!!!!!!!!   Verificar aqui : escribamos una linea con error y pasamos al cicla siguiente
 
    Linea =
        .Rows(i).Cells(0).Value & "," &
        .Rows(i).Cells(1).Value & "," &
        .Rows(i).Cells(2).Value
 
    Archivo.WriteLine(Linea)
 
   Continue For   ' *** Si error para una conversion, pasamos al cicla siguiente
 
end Try
 
' !!!!!!!!!!!   Verificar aquí : si no error, escribamos la linea con cálculos
 
    Linea =
        Math.Round(x + 2, 3) & "," &
        Math.Round(y + 1, 3) & "," &
        Math.Round(z + 2, 3)
 
    Archivo.WriteLine(Linea)
 
Next

Dices me si no funciona. Miraré después las 9 en la tarde (ahora aquí, es las 7h30' en la tarde).
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
sin imagen de perfil
Val: 46
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Saltar filas con error y seguir con la siguiente

Publicado por Miguel (15 intervenciones) el 19/04/2020 19:53:08
Funciono super bien.

Te agradezco un montón por tu ayuda y que tengas una maravillosa tarde
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar