Programación General > Visual Basic 6.0 e inferiores

 Busqueda en otro Formulario

(1/3) > >>

Dragos:
Hola, saludos a todos...mi problema es el siguiente, estoy realizando un programa con base de datos access, y utilizo el control DATA para la conexion con la base de datos, lo que quiero hacer es lo siguiente, tengo un formulario en donde voy a registrar a los clientes, en dicho formulario tengo un boton BUSCAR que me lleva a otro pequeño formulario (B) en donde solicito el numero de cedula para buscar a "X" cliente, lo que quiero es que al ingresar la Cedula de identidad y presionar el boton BUSCAR (en el formulario B ) el resultado me lo arroje en otro formulario...

He intentado algo pero no me ha salido nada aun, si pueden ayudarme por favor lo agradeceria!

GRACIAS :hola:

Nebire:
Es relativamente fácil.
Primero intentaré explicártelo a las claras y luego pasamos a código.

imagina que vas a la tienda de un artesano, quieres una estatua, para colocarla en tu casa, el artesano tiene varios modelos de estatuas, las hay grandes y pequeñas las hay apoyadas sobreel suelo, colgadas de la pared y colgadas del techo...

Entonces a la hora de elegir que estatua te vas a llevar es obvio que en tu casa deberás disponer de un alojamiento para ella, tal alojamiento debe ser exactamente del tipo que la estatua que elijas. supongamos que eliges una estatua que cuelga del techo, pongamos que estas estatuas miden 4 metros y por debajo de ellas hay un espacio libre de 3 metros, es decir necesita 7 metros de altura aproximadamente si tu casa no tiene esa altura hay que descartar esa estatua yelegir otra, no obstante este caso se sale del propósito del ejemplo, mejor diremos que si tu casa no cumple la altura, el garaje (separado de la casa) lo acondicionarás para que pueda cumplir dicho propósito. Supongamos ahora que eliges la estatua de suelo, esta estatua tiene laparticularidad de que ocupa un espacio de 4x4 metros, lo que quiere decir que la estancia debe disponer de esas medidas y una cantidad adicional para poder rodearla, no hay problema, podemos ensanchar nuestro garaje como prefiramos...

Bien, esto mismo es lo que se debe hacer en programación. La tienda de estatuas es en tu caso la base de datos, y el formulario donde quieres mostrarlo hace las veces del garage. Los datos que tomas de la base de datos tienen unas especificaciones, esas mismas especificaciones tiene que tenerlas el formulario que lo va a recibir...

En el formulario que busca:

Recibir el nº de cédula a buscar
buscar en la BD el elemento deseado y recibir los datos asociados
Si no se encuentra nada mostrar mensaje no hay coincidencias
Si se encuentra, enviar resultado al formulario de exhibiiiiición de resultados
En la práctica esos 2 condicionales pueden ser una misma línea de código.

En un módulo:

--- Código: Visual Basic --- ' declaramos las especificaciones del tipo de datos que vamos a usar en diferentes lugares 'para el caso se ha supuesto una estructura de tipo personapublic type Personas    Nombre as string    Apellido1 as string   Apellido2 as string   NumeroCedula as stringend type' variable de compartición dentro del proyectopublic Persona as Personas  
Cuando busquemos en la base de datos, el resultado lo pasamos a Persona, acto seguido llamamos al formulario de exhibición

--- Código: Visual Basic ---  Persona=....call formExibirResultados.show(1)  ' lo llamamos como modal... ' En el formulario de exhibición: ' Si no quieres mantener una variable compartida entre proyectos, entonces debes tener una variable pública en este formularioPublic per as personas private sub Form_Load     Me.Show          Text1.text=  persona.Nombre     Text2.text= persona.Apellido1     Text3.Text= persona.apellido2     Text4.text= Persona.NumerCedula end sub' este formulario tendría un botón de aceptar que al pulsarlo cierra el formulario  
Como puedes ver nuestro formulario de exiihibición, está 'acondicionado', como haríamos con el garaje, para recibir el tipo de datos que va a utilizar, puesto que nuestra 'estatua' es un tipo personas, nuestro garaje debe estar capacitado para las especificaciones de loque va a alojar. Nada impide que el formulario acoja varios y diferentes tipos del mismo modo que nada impide que en el garaje pongas más de 1 estatua. en este caso cuando se abra la puerta del garaje, quizás lo que queramos es mostrar exactamente una estatua y no otra, en concreto, end dicho caso debemos proveer otra variable que especifique que estatua queremos mostrar (las demás quedarían oculatas, sin usar)

En el código esto implica añadir una variable en el módulo (o en el formulario de exhibición)...

--- Código: Visual Basic --- public enum TiposdeDatos     TIPO_PERSONAS=0     TIPO_DIRECCIONES=1     TIPO_DATOS_EMPRESA=2end enum public Tipo as TiposDeDatos  Ahora entonces cuando vaya a leer un dato sobre personas pondré en el formulario que hace la búsqueda


--- Código: Visual Basic --- ' ...Persona= buscar....Tipo= TIPO_PERSONAScall FormExibirResultados.show(1)' ...  Y en el formulario de exhibición habrá que distinguir que 'estatua' recibimos...

--- Código: Visual Basic --- private sub Form_Load     Me.Show     select case Tipo          case 0  ' personas              Text1.text=  persona.Nombre              Text2.text= persona.Apellido1              Text3.Text= persona.apellido2             Text4.text= Persona.NumerCedula          case 1 ' direcciones              Text1.text=  Direccion.Ciudad              Text2.text= Direccion.Poblacion              Text3.Text= Direccion.Calle             Text4.text= Direccion.Numero         case 2            '................ otros casos     end selectend sub  
Para terminar también te indico que si tienes que hacer bastante trabajo al respecto sería mejor que crearas unas clases, con los tipos de datos y que en ella incluyeras los métodos que fueras a necesitar, incluso si los tipos de datos fueran comunes entre ellos utilizar una interfaz que implemente cada clase.

En fin como puedes ver, no puedes presentarte en casa con una estatua de 7 metros. Primero tienes que tener acondicionado el garaje para acoger lo que vas a colocar allí, en el presente caso son unos textbox, y el código para operar sobre ellos... los textbox reciben la 'estatua' (tipo de datos persona) que ya sabe como encajarla en el garaje.

p.d.: queda claro que si los textbox están vacíos es porque no ha encontrado nada relevante al número de cédula, queda a tu elección en dicho caso si mostrar el formulario o enviar un msgbox al caso. También podrías modificar el caption del formulario, para que indicara un texto parecido a : " Resultados para la búsqueda: 'número de cédula' (si los textos están vacíos no se encontraron coincidencias)".

Dragos:
Ok para esta parte del codigo, yo tengo varios campos en la base de datos, este es el codigo modificado a mi preferencia:


--- Código: Visual Basic ---' declaramos las especificaciones del tipo de datos que vamos a usar en diferentes lugares 'para el caso se ha supuesto una estructura de tipo personapublic type Personas    Cedula as string    Nombres as string    Apellidos as string    Direccion as string    Edad as string    Fecha de Nacimiento as string    Sexo as stringend type' variable de compartición dentro del proyectopublic Persona as Personas  

Dragos:

--- Código: Visual Basic ---Persona=....call formExibirResultados.show(1)  ' lo llamamos como modal... ' En el formulario de exhibición: ' Si no quieres mantener una variable compartida entre proyectos, entonces debes tener una variable pública en este formularioPublic per as personas private sub Form_Load     Me.Show          Text1.text=  persona.Nombre     Text2.text= persona.Apellido1     Text3.Text= persona.apellido2     Text4.text= Persona.NumerCedulaend sub' este formulario tendría un botón de aceptar que al pulsarlo cierra el formulario  
y en esta parte lo mismo dependiendo de la cantidad de textbox que tenga, muchisimas gracias por tu ayuda aun me quedan unas pequeñas dudas...

* Te dije que en un formulario tengo un boton BUSCAR ese boton me lleva a otro pequeño formulario ( B ) que he diseñado tipo INPUTBOX, donde tambien tengo un boton BUSCAR, dicha busqueda es por el numero de cedula de identidad...que parte del codigo coloco en el boton BUSCAR del formulario ( B )

* Como inserto un modulo (puede parecer tonta la pregunta, pero estamos para  aprender)

Nebire:
Si no he entendido mal...

En un formulario tienes un botón que invoca a un 2º formulario (pongamos que se llama formBusqueda). Y es desde este desde elcual realizas la búsqueda...

Si esto es correcto, en este formulario va el código que ya te he indicado...

realizas la query, el resultado lo transformas a la estructura persona, y acto seguido invocamos el formulario de exhibición se forma síncrona.

--- Código: Visual Basic --- ' ...Persona= buscar.... ' el resultado de la query la volcamos en esta estructura, habrá que hacerlo elemento a elemento.Tipo= TIPO_PERSONAScall FormExibirResultados.show(1)' ...  Nota que volcar la devolución de la base de datos a una estructura, no es estrictamente necesario, es el modo que yo he elegido para mostrarte la EVOLUCIÓN del código (básicamente por que es más sencillo de entender y de escribir y porque no necesito entrar en el entresijo de detalles de tu programa, si ya tienes definida una estructura de datos y es accesible  desde el formulario de exhibición podría ser suficiente pasar por ejemplo el índice de un recordset. De todos modos no sale caro volcar el resultado devuelto a una estructura.

La última cuestión, no estoy seguro de haberte entendido ... me preguntas como insertas un módulo en el proyecto ???, de giaul modo que un formulario, una clase, una página de propiedades,etc... .... desde el menú proyecto 'Agregar módulo'. Si no te he entendido acláramelo...

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa