Ver dato si existe

Hola tengo este código y lo que quiero es que cuando voy a llamar este sub me controle si el móvil esta en la tabla, si no esta lo pongo a encontré a false y lo agrego abajo, si el móvil esta ya en la base con sus datos entre ellos la fecha quiero controlar que la fecha que voy a ingresar ya no este registrada para ese mismo móvil pero no me doy cuenta como hacerlo ya que esta revisando el primero que encuentra y si es menor lo repite :
Private Sub ActPosiciones()
    Dim encontre As Boolean
    If MiRecordset5.EOF = True And MiRecordset5.BOF = True Then
        encontre = False
        GoTo BaseVacia
    End If
            Do While Not MiRecordset5.EOF
                'Actualizamos la posición del movil en las posiciones
                If Val(movil) <> 0 And Val(movil) = MiRecordset5!Posi_Vehi_id Then
                   FechaC = (diayhora)
                       If FechaC = MiRecordset5!Posi_fecha Then
                            Exit Sub
                        Else
                            MiRecordset5.AddNew
                            MiRecordset5!Posi_Vehi_id = movil
                                encontre = True
                                MiRecordset5.Update
                                Exit Do
                            End If
                    End If
                 encontre = False
                 MiRecordset5.MoveNext
            Loop
            MiRecordset5.MoveFirst
BaseVacia:
                    If MiRecordset2.EOF = True And MiRecordset2.BOF = True Then
                        Exit Sub
                    End If
                        If encontre = False And Val(movil) <> 0 Then
                                MiRecordset5.AddNew
                                MiRecordset5!Posi_Vehi_id = movil
                                MiRecordset5.Update
                        End If
End Sub

1 Respuesta

Respuesta
1
Haber si entendí bien SINO ESTA pones "encontre" a false y lo agregas a la tabla
¿Eso lo haces?
¿Para saber si esta tienes que preguntarle a la base por que campos claves? ¿
Fechas, idmovil ¿?
¿En algún lado preguntas si existe?
Porque si no entendí mal, tendría que hacer así
primero: preguntas a la base si existe, según lo que te devuelva, si no esta lo agregas y si estas seguís con la otra consultas
saludos
lea
Gracias sabes lo que pasa es que cuando me entra un dato quiero comparar si el auto es el que esta en la tabla lo encuentro claro al auto1 pero quiero que no me guarde ese registro si la fecha es igual quiero controlar que la fecha sea diferente pero este código lo que esta haciendo es cuando encuentra el auto1 se para en ese registro y no busca las demás fechas de la tabla y cuando revisa ese registro la fecha es inferior lo agrega igual, quiero que busque el auto1 pero que se pare en el ultimo registro de la tabla que concuerde con ese auto1 y la fecha ultima que guardo como hago eso.
Es parte de la lógica, lo estas planteando en los componentes.
Vamos a pensar la lógica, y disculpa que sea así pero es difícil tratar de comprender un programa ajeno...
Que datos tienes para hacer las consultas
Pásame el where, si tienes idauto y fecha, hay que replantearse la lógica del procedimiento en general, quizás desecharla todas.
Estoy viendo un goto ¿Eso es para llamar a un procedimiento o es el control de errores?
Y de donde tomas los datos para el primer while ¿?
Ok la lógica es esta el dato entra de afuera porque es una aplicación con winsock proviene de una ip, cuando entra el dato osea el nombre del auto y la fecha de ese dato lo que quiero es guardar ese registro en la base de datos que ya lo hace el tema es que por algún motivo que no he descubierto el dato me entra por la red más de una ves y quiero controlar que ese registro al estar ya guardado no lo repita y con ese código que puse acá lo que logro es pararme en el móvil que quiero encontrarlo y después pregunto si la fecha de la tabla es igual a la que esta entrando si es igual que se salga pero lo que esta haciendo es al encontrar un móvil igual al que entra como dato se para en ese registro y compara esa fecha, ejemplo si guardo movil1 fecha 18 noviembre 15:00 y el otro dato que entra es igual que no guarde el tema es que cuando hay 4 registros con ej movil1, movil2, movil3, movil4 y cons su fechas y el dato que entra es móvil 2, mi código recorre la base y ve que movil1 no es igual al movil2 que esta entrando entonces sigue y pasa al otro registro y encuentra el movil2 que si es igual al dato que entra acá encontré el móvil y comparo esa fecha de ese móvil ej 18 noviembre 14:50 y comparo si fecha que esta entrando es igual no va ser porque como hay más de 1 registro y encontró el primero con ese móvil la fecha es inferior y igual lo agrega, lo que quiero es que encuentre el ultimo registro en la tabla osea entra movil1 que encuentre en la tabla el movil1 si esta y si esta que vea la ultima fecha para ese movil1 y si no es igual que guarde, pero hay esta el tema que al encontrar el movil1 encuentre el ultimo registro y su fecha y no el primero que encuentra que lo compare, muchas gracias por la ayuda estoy trancado con eso porque me esta guardando pero duplicando información. Gracias
Tienes que preguntar directamente con una consulta
si ya lo tienes guardado el dato hace un consulta con un where que idauto = variableauto and fecha = varfecha and hora = varhora si es que lo separaste...
Depende del resultado de esta consulta, seguís las acciones,
sino lo encuentra que lo grabe, y si lo encuentra que no haga nada
y si tu base de datos acepta 2 registros iguales en idauto, fecha, hora habría que revisarla porque esta mal normalizada.
Para mi seria así, entran los datos, consultas a la base, NO existe lo agregas, si existe seguís de largo...
Gracias por todo Leandro te consulto otra cosa como se usa wl where porque pensé hacerlo con un do while pero creo que no funciona gracias
¿Estas usando recordset no? ¿
Yo borraría todo el código (guardalo en otro lado)
Y haría una consulta a la base de datos y ahí va el where
entran los datos, consultas y comparas.
Saludos
leandro

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas