Visual Basic.NET - Duda rápida

 
Vista:
sin imagen de perfil

Duda rápida

Publicado por Carlos (11 intervenciones) el 04/07/2014 10:41:59
hola, tengo un datagrid y haciendo doble click sobre una fila se me abre un cierto formulario con los textbox rellenos, lo que pasa que tengo varios formularios, y se abren dependiendo del valor de una columna tal que así
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
32
33
34
35
36
37
Private Sub Button3_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Dim row As DataGridViewRow = DataGridView1.CurrentRow
        If DataGridView1.SelectedRows(0).Cells("categoria_del_vehiculo").Value = "M1" Then
            Dim frm As New ficha(row)
            frm.Show()
            Me.Finalize()
        Else : If DataGridView1.SelectedRows(0).Cells("categoria_del_vehiculo").Value = "N1" Then
                Dim form As New fichaN(row)
                form.Show()
                Me.Finalize()
            Else : If DataGridView1.SelectedRows(0).Cells("categoria_del_vehiculo").Value = "O1" Then
                    Dim formu As New fichaO(row)
                    formu.Show()
                    Me.Finalize()
                Else : If DataGridView1.SelectedRows(0).Cells("categoria_del_vehiculo").Value = "O2" Then
                        Dim formu As New fichaO(row)
                        formu.Show()
                        Me.Finalize()
                    Else : If DataGridView1.SelectedRows(0).Cells("categoria_del_vehiculo").Value = "O3" Then
                            Dim formu As New fichaO(row)
                            formu.Show()
                            Me.Finalize()
                        Else : If DataGridView1.SelectedRows(0).Cells("categoria_del_vehiculo").Value = "O4" Then
                                Dim formu As New fichaO(row)
                                formu.Show()
                                Me.Finalize()
                            Else : Dim formul As New fichasl(row)
                                formul.Show()
                                Me.Finalize()
                            End If
                        End If
                    End If
                End If
            End If
        End If
        Me.Finalize()
    End Sub
Lo que me gustaria es que en vez de meter ,O1,O2;O3, y O4, se pudiese poner los valores que empiezan por O.
Alguien sabe como hacerlo?que tengo que cambiar?
Un saludo y gracias.
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
sin imagen de perfil

Duda rápida

Publicado por Pico (167 intervenciones) el 04/07/2014 11:14:13
If DataGridView1.SelectedRows(0).Cells("categoria_del_vehiculo").Value = "O1"

Eso suena mal. "O1" es un string y el value de una celda es un object. A mí, el propio compilador me dice que no compare un objeto con un string; tienes que comparar un string con otro.

Una vez pasado el Value a string, si quieres que haga algo con los que empiezan con "O" usa StartsWith
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
sin imagen de perfil

Duda rápida

Publicado por Carlos (11 intervenciones) el 04/07/2014 11:18:22
A mí me funciona bien así, comparando el value con el "O1", a parte de eso, probé a poner startswith y me dice que esta sin declarar, es decir que no existe ese método :s
Probando lo que tu dices ...
1
2
3
4
5
6
Dim filtro As String
        DataGridView1.SelectedRows(0).Cells("categoria_del_vehiculo").Value = filtro
        If filtro.StartsWith = "O" Then
            Dim frm As New ficha(row)
            frm.Show()
            Me.Finalize()
pero me da error con el startswith, como quedaría la linea para que funcione correctamente?
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
sin imagen de perfil

Duda rápida

Publicado por snti (29 intervenciones) el 04/07/2014 14:29:21
Al startswith tenes que pasarle como parametro los caracteres que desees comparar y no asignarle un valor.

Eemploj: IF filtro.StartsWith("O") Then

Siempre tenes que fijarte lo que dice el intellisense, si necesita parametros, lo que devuelve etc. De lo contrario buscar en el msdn como puso el usuario Pico.

Saludos!
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