Base de datos de película

Hola:
Tengo lo siguiente en Visual:
Un formulario form1 asociado con un control data a una base de datos de películas.
Ese form1 muestra simplemente todos los campos de la tabla película.
Para hacer consultas, le puse unos controles option a modo de menu:
-Si quiere consultar por actores le hace clic e irá a otro form que
está diseñado así:
Un textbox para que escriba la actriz o el actor a buscar
Los correspondientes textbox donde aparecerán los campos asociados a cada uno
Un command1 o un botón para que al hacer clic en él, se muestre lo requerido en los textbox antes descrito.
Ah y un data control puesto en el formulario para asociar la búsqueda al data1.
Sé que en el textbox donde se debe escribir el nombre a buscar debe ir un código pero no sé como tendría que ser
¿Me puedes indicar cómo se hace todo ese enredo?. Gracias
Respuesta
1
Te paso esto, espero te sirva.
Buscar registros
Para buscar registros puedes utilizar los métodos Find cuando trabajes con recordset de tipo Dynaset o Snapshot, o utilizar el método Seek para un recordset de un tipo Table.
El método Find presenta cuatro variantes:
FindFirst: Busca el primer registro que cumple determinado criterio.
FindLast: Busca el último registro que cumpla un determinado criterio.
FindNext: Realiza la búsqueda hacia delante.
FindPrevious: Realiza la búsqueda hacia atrás.
Veamos un ejemplo:
With.datEmpleados
.Recordset.FindFirst "Nombre = ' " & txt.Nombre.Text & "'"
If Recordset.NoMatch Then
MsgBox "Lo siento no es un nombre de empleado válido"
Exit Sub
End If
End With
Mediante el uso de la estructura With nos evitamos tener que repetir código. Así no será necesario escribir la estructura datEmpleados hasta que lleguemos a End With.
En la línea .Recordset.FindFirst "Nombre = ' " & txt.Nombre.Text & "'" es donde se produce la búsqueda de un determinado registro del recordset.
Al utilizar el método FindFirst se está indicando que se efectúe la búsqueda del primer registro cuyo valor en el campo Nombre coincide con el valor que se ha introducido en el txtNombre.
Con el uso del operador & concatenamos para crear el criterio de búsqueda, si por ejemplo se hubiera introducido el valor Coral en el cuadro de texto, esta línea quedaría de la siguiente forma:
datEmpleados.Recordset.FindFirst "Nombre='busqueda'"
Luego utilizamos el método Nomatch del recordset para comprobar, una vez realizada la búsqueda, si se ha encontrado un registro o no. Si no se ha encontrado el registro, el método nomatch devolverá True por lo que se mostrará un menseja mediante el MsgBox y se saldrá del procedimiento utilizando el método Exit Sub.
Muchísimas gracias, no te he calificado antes solo porque he estado super ocupado y no he tenido tiempo de nada. Ahí te va un Excelente, me pareció una respuesta muy buena y ya estás entre mis favoritos ... ¿o favoritas?. Saludos

3 respuestas más de otros expertos

Respuesta
1
La idea es que debes asociar el DataControl a la Base de Datos, a través de las propiedades DatabaseName y Recordsource, para la tabla, en este caso "actores", imagino.
Supongamos que el Usuario ya ha digitado el nombre del actor/actriz en el TextBox ...
Cuando el Usuario haga click en el Botón deberás armar una cadena, un String, que sería algo así como:
cad = "nombre_actor = " & Text1.Text
Esta cadena será el criterio de búsqueda que la realizas así:
Data1. RaEcordset. FindFirst cad
Si todo sale bien en el RecordSet tendrás la información del Actor establecido, de modo que sólo tienes que deplegarlo. Por ejemplo:
Label2.Caption = Data1.Recordset("edad_actor")
Bueno ... espero haber sido claro, de lo contrario me escribes de nuevo y trato de explicártelo mejor ...
Suerte !
Rogers R.
Respuesta
1
Creo que lo estas haciendo mucho más difícil de lo que es.
Yo lo haría con recordset, claro, que no se si tu sabrás hacerlo así. Bueno, podemos hacer una cosa. Si quieres que te lo explique de mi forma me dices y te lo explico encantada. Incluso te puedo dar el código (ademas de la explicación por supuesto, para que puedas hacerlo tu mismo en otra ocasión!).
Bueno, pues a lo dicho, si quieres cambiarlo a mi forma me dices, si quieres seguir haciéndolo así por alguna razón... pues nada, ¿vale?
Tengo algunos conocimientos, pero olvidados en algún lugar recóndito de mi trabajado cerebro.
Así es que puedes explicármelo como tu creas que sea mejor, que yo te entenderé no te preocupes por eso, solo me hace falta que me refresquen un poco la memoria que, éstas son cosas que tengo un poco olvidadas pero no eliminadas de mi cabeza.
Así es que explícamelo con recordset como dices tu. Si quieres me das tu mail para explayarnos más en el asunto.
Perdona el tardar tanto, pero ando con obras en casa y tengo todo patas arriba.
Bueno, la idea es hacer una búsqueda por alguno de los campos de la base de datos, ¿no?
Vamos a hacer por ejemplo el caso de búsqueda por titulo de película.
Cuando el usuario elija la opción de hacer búsqueda por titulo puedes hacer dos cosas:
1.- Poner una lista desplegable con todos los títulos de todas las películas ordenadas alfabéticamente y que el usuario seleccione la que quiera. De esta forma te evitas que el usuario escriba el titulo de una película mal, por ejemplo con acentos o olvidarse alguna letra, o sin más que no se sepa bien el titulo de la película.
2.- Poner un textbox para que el usuario escriba por su cuenta el titulo (con los riesgos que ello conlleva, los que te he explicado antes).
De momento te lo voy a explicar como tu lo tenias, es decir, con el textbox, pero si te he convencido con mis argumentos y prefieres hacerlo de la otra forma te lo explico encantada.
Bueno, una vez que escribe el titulo en el textbox puede (por ejemplo) hacer click en un botón para hacer la búsqueda.
El código de este botón (más o menos) es el siguiente:
Dim RS as Recordset
CON.Open
RS.Open "SELECT * FROM PELICULAS WHERE TITULO='" & txtTitulo.text & "!", CON, adOpenStatic, adLockOptimistic
If RS.EOF Then
'esto es por si ha escrito mal el titulo. Si rs. Eof (end of file) es true significa que el select no ha recogido ningún registro, por lo tanto no existe
Msgbox "Ese titulo no existe. Asegurese de que lo ha escrito correctamente"
Else
'AQUI RELLENAS LOS TEXTBOX DE CADA CAMPO DE LA BASE DE DATOS
txtActor=RS!ACTOR
txtDirector=RS!DIRECTOR
txtDuracion=RS!DURACION
...
End If
RS. Close
CON. Close
En el form_load deberías hacer lo siguiente:
CON.ConnectionString = "file name=" & App.Path & "\BaseDeDatos.UDL"
Y tienes que declara CON como variable global para poder acceder a ella desde cualquier formulario de la siguiente forma:
Creas un modulo y hay declaras la variable CON como public:
Public CON As New Connection
Bueno, creo que ya esta todo. Espero haberme explicado bien y haberte ayudado. Si necesitas más ayuda o no entiendes algo o quieres hacerlo de alguna otra forma... ya sabes, preguntame.
Saludos, y siento de nuevo haber tardado tanto.
Respuesta
1
En el evento lostfocus del control texto, puedes colocar la instrucción de filtro del data para que busque los datos del texto que ha sido digitado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas