Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

primer valor ausente en una columna

Estas en el tema de primer valor ausente en una columna en el foro de Visual Basic clásico en Foros del Web. Buenas, estoy trabajando con visual basic .net 2008 y tengo este problema, hice una función que debería ir comprobando números uno a uno hasta dar ...
  #1 (permalink)  
Antiguo 13/03/2010, 04:51
 
Fecha de Ingreso: marzo-2010
Mensajes: 4
Antigüedad: 14 años, 8 meses
Puntos: 0
primer valor ausente en una columna

Buenas, estoy trabajando con visual basic .net 2008 y tengo este problema, hice una función que debería ir comprobando números uno a uno hasta dar con uno que no estubiera en la primera columna del datagrid... Pero siempre devuelbe 1, y no se porqué...
Código:
    Private Function buscarhuecoclientes()
        Dim i As Integer
        Dim e As Integer
        Dim number As Integer
        e = 0
        i = 0
        number = 0
        Do
            If number = 0 Then
                number = i
            End If
            Do
                If DataGrid_Clientes.Item(i, 0).Value.ToString = e.ToString Then
                    number = 0
                End If
                e += 1
            Loop While (e < DataGrid_Clientes.RowCount)
            i += 1
        Loop While (i < DataGrid_Clientes.RowCount)
        Return number
    End Function
Esta es la función, espero que alguien pueda ayudarme a encontrar el error
  #2 (permalink)  
Antiguo 14/03/2010, 04:49
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 18 años, 3 meses
Puntos: 29
Respuesta: primer valor ausente en una columna

No sé si tu función será coherente o no porque esto es el foro de VB cásico y aparte no controlo el datagrid, pero te puedo intentar aconsejar un poco:

En primer lugar noto que no sales del Loop en ningún momento, lo que hace que la función se ejecute hasta el final siempre.

En segundo lugar yo probaría comparando valores en lugar de cadenas de texto que pueden contener espacios.

En tercer lugar, si el valor puede ser 0 deberias inicializar number con -1 y la variable e ponerla a 0 a cada vuelta del primer loop
Algo así:

Código vb:
Ver original
  1. Do
  2.             number = i
  3.             e=0
  4.             Do
  5.                 If Val(DataGrid_Clientes.Item(i, 0).Value) = e Then
  6.                     number = -1
  7.                     exit do  ' si el numero esta en uso no buscamos mas
  8.                End If
  9.                 e += 1
  10.             Loop While (e < DataGrid_Clientes.RowCount)
  11.             if number<>-1 then exit do ' si encontramos un numero vacio no buscamos mas
  12.            i += 1
  13.         Loop While (i < DataGrid_Clientes.RowCount)
No sé si es del todo correcto, pero espero que te ayude en algo.

Saludos.
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #3 (permalink)  
Antiguo 14/03/2010, 06:29
 
Fecha de Ingreso: marzo-2010
Mensajes: 4
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: primer valor ausente en una columna

Bueno, finalmente ya me las apañé solo con eso, creé un nuevo topic con otra duda hablando de esto tambien. de todos modos muchisimas gracias por contestar, se que el código que he puesto ahi no es del todo fino, pero bueno, al final replanteé el metodo y funciona a las mil maravillas.
Por si a alguien le sirve, pongo aquí la función:
Código:
Private Function buscarhuecoclientes()
        Dim number As Integer
        Dim i As Integer
        Dim e As Integer
        Dim vale As Boolean

        number = -1
        i = 0
        Do While number = -1 'i es el numero a comprobar, empieza en 0
            vale = True 'suponemos que el valor vale, que no está escrito
            e = 0
            Do While e < DataGrid_Clientes.RowCount 'e es la fila a mirar
                If i = CType(DataGrid_Clientes.Item(0, e).Value, Integer) Then
                    vale = False 'si resulta que i es igual a el valor de la fila que se mira, entonces ya no vale
                End If
                e += 1
            Loop
            If vale = True Then
                number = i
            End If
            i += 1
        Loop

        Return number
    End Function
Y bueno, decir que invito a todo el que lea esto a echar un ojo al nuevo topic, llamado "orden de las filas en un datagrid" porque es una duda muy tonta que me trae de cabeza jaja

Etiquetas: columna, primer
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:19.