AYUDA CON VALIDACION Y BUSQUEDA EN BASE DE DATOS

Iniciado por CARRY-ON, 3 Octubre 2007, 07:11 AM

0 Miembros y 2 Visitantes están viendo este tema.

CARRY-ON

OLA TENGO UN FORMULARIO QUE GUARDA LOS DATOS EN UNA BASE DE DATOS

pero necesito que antes de guardar verifique que algunos datos no esten actualmente en la base de datos

ejmplo

tengo un txt que me pide un nombre y pongo manuel pero al guardar si ya hay un nombre manuel me de un mensaje de advertencia y tenga que poner otro nombre que no este en la base de datos

abel_c_b

estas seguro que quieres hacer eso? por ejemplo si tu aplicacion esta corriendo en una empresa en donde hay varias personas que se llaman manuel, les sacara una advertencia, no creo que eso deba ser un problema, el problema seria por ejemplo si escriben dos veces el numero de identificación, eso si seria un problema, saludos y me comentas

zXxOsirisxXz

Perdona por no tener una respuesta directa..

Pero, me dieron BD~VB en el cole hace tiempo, y ps, ise eso mismo, pero con un comando llamado EOF/BOF si puedes, buscate info sobre el. Son como para buscar de arriba a abajo la BD para no tener problemas con me parece.

Salu2

Hans el Topo

tan simple como hacer una consulta mirando en la base de datos si existe ya ese dato...
si existe sacas mensajito sino no lo sacas e insertas

para hacer consultas y demás busca por el forito,
también puedes poner se cambo de clave primaria asi te dará petardazo al meter dos datos iguales, controlando el error podrías mostrar el mensajito
on error goto actimel:

tu codigo

exit sub
actimel:
   if err.number=nomacuerdo que error es
             msgbox "ERROR! El nombre " & txtnombre & " ta duplicado. "
             txtnombre=""
   endif
endusb
 

CeLaYa

eso es facil, puedes hacer una consulta SQL para que busque registros si encuentra alguno que te mande el mensaje de error, en caso contrario que lo agrege..
"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.

CARRY-ON

Cita de: CeLaYa en  5 Octubre 2007, 02:33 AM
eso es facil, puedes hacer una consulta SQL para que busque registros si encuentra alguno que te mande el mensaje de error, en caso contrario que lo agrege..

pero no se donde colocar la consulta ni como redactarla  :(

CeLaYa

la consulta la pondrias antes de guardar tu registro. si posteas el código que tienes para guardar ayudaría mucho para decirte como debes hacerlo, pero mientras te dejo algo:

para buscar si el registro existe más o menos deberás hacer lo siguiente:


...'Abres tu bd

'Abres tu tabla por medio de una consulta
Set tb = bd.OpenRecordSet("SELECT * FROM Tabla WHERE Nombre = '" & txtNombre.text & "';")

if tb.RecordCount > 0 then ' si encontro registros se supone debe mandarte un mensaje de error.
     msgbox "ERROR! El nombre " & txtnombre & " ta duplicado. "
             txtnombre.text=""
else
     .'aqui guardas
     tb.Addnew....
end if

...'Cierras tu bd





"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.

TyMeS

Hace tiempo que no toco BDD, pero eso no sería quizás más comodo el hacerlo mediante triggers en la BDD y después capturar excepciones en la aplicación¿?
Es más grande el hombre que se levanta, que el que no ha caído.

LICHONGO

hola que tal yo aprendi visual de una manera muy rara a eso me refiero que no se nada de SQL de ADO ni de DAO cuando me hablan de eso no se ni que es
pero he realizado aplicaciones y me funcionan

lo primero que hago en una aplicacion es añadir un control Data y lo quito esto es para poder crear las variable de la base da datos y la de la tabla

el codigo seria algo como asi

__________________________________________________________________
General            Declaraciones 'esto no es el codigo esto es donde se declaran las variables


Public db As Database 'esta variable es para la base de dato
Public rt As Recordset 'esta variable es para la tabla
Public Band as Boolean 'esta variable es para hacer la busqueda
Public resp As String  'esta vairable es para carateres

'para abrir la base de datos primero la buscamos en la raiz del programa
If Right(App.Path, 1) = "\" Then
    Set db = OpenDatabase(App.Path + "MI Base de Datos.mdb") 'con esto la abrimos
Else
    Set db = OpenDatabase(App.Path + "\MI Base de Datos.mdb") 'la diferecia esta en el (\) antes del nombre de la BD
End If
Set rt = db.OpenRecordset("MI Tabla") 'aqui abrimos la tabla
' supongamos que nuestra tabla es de empleados
' y los campos sean Codigo, Nombres, Apellidos, Direccion, Telefono, Cargo, Fecha de Ingreso
' los campos en la programacion serian algo asi como
' Codigo = rt.Fields(0)
' Nombres = rt.Fields(1)
' Apellidos = rt.Fields(2)
' Direccion = rt.Fields(3)
' Telefono = rt.Fields(4)
' Cargo = rt.Fields(5)
' Fecha de Ingreso = rt.Fields(6)

'supongamos que tengamos un botton para agregar
'emplados, para esto escogemos un campo unico
'que seria el codigo este campo no ser repiete
'en nuestra tabla, los campos nombre, apellido
'direccion, telefono, cargo y fecha de ingreso
'si se pueden repetir
'para buscar si exite en la tabla hacemos un
'repetitivo con do while
resp = InputBox("Introduzca el codigo del empleado", "Ingreso de Nuevo Empledo")
If Len(Trim(resp)) = 0 Then
    MsgBox "Debe introducir un codigo para Ingresar Empleados", vbInformation, "Error Falta de Dato"
Else
    rt.MoveFirst
    band = True
    Do While (rt.EOF = False) And band 'esto repiete hasta que no sea fin de la tabla o Band=verdadero
        If UCase(Trim(rt.Fields(0))) = UCase(Trim(resp)) Then 'verifica si exite el dato
            MsgBox "Ese Codigo ya esta Registrado", vbInformation, "Fin de Busqueda"
            band = False 'si lo encuentra antes de fin de la tabla hacemos band=falso para salir del do while
        Else
            rt.MoveNext
        End If
    Loop
    If band Then
        MsgBox "Ese codigo no esta registrado", vbInformation, "Fin de Busqueda"
    End If
End If

CeLaYa

LICHONGO ese código esta bien pero imaginate que  pasaría si la tabla contiene muchos registros... se tardaría un monton en recorrer cada registro, lo mejor es hacer uns consulta sql para checar ese dato:

Public db As Database 'esta variable es para la base de dato
Public rt As Recordset 'esta variable es para la tabla
Public Band as Boolean 'esta variable es para hacer la busqueda
Public resp As String  'esta vairable es para carateres

'para abrir la base de datos primero la buscamos en la raiz del programa
If Right(App.Path, 1) = "\" Then
    Set db = OpenDatabase(App.Path + "MI Base de Datos.mdb") 'con esto la abrimos
Else
    Set db = OpenDatabase(App.Path + "\MI Base de Datos.mdb") 'la diferecia esta en el (\) antes del nombre de la BD
End If

'supongamos que tengamos un botton para agregar
'emplados, para esto escogemos un campo unico
'que seria el codigo este campo no ser repiete
'en nuestra tabla, los campos nombre, apellido
'direccion, telefono, cargo y fecha de ingreso
'si se pueden repetir
'para buscar si exite en la tabla hacemos un
'repetitivo con do while
resp = InputBox("Introduzca el codigo del empleado", "Ingreso de Nuevo Empledo")
If Len(Trim(resp)) = 0 Then
    MsgBox "Debe introducir un codigo para Ingresar Empleados", vbInformation, "Error Falta de Dato"
Else
    'Aqui abrimos la tabla y checamos el dato.
    Set rt = db.OpenRecordset("SELECT * FROM MI Tabla" & _
                                            "WHERE rt!Nombre = '" & resp & "';")
    if rt.recordcount > 0 then ' Si recordCount es mayor a 0 entonces si hay un registro con ese nombre
           msgbox "Ese Codigo ya esta Registrado", vbInformation, "Fin de Busqueda"
     else
            rt.AddNew
            ......
      end if
end if       
' y no olviden cerrar la tabla y base de datos
rt.close
db.close
'Liberamos memoria
set rt = nothing
set db = nothing
"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.