Programación General > Visual Basic 6.0 e inferiores
Busqueda en otro Formulario
Dragos:
Ok, realice unas capturas de pantallas para que nos entendamos mejor pero la web no me permite colocar enlaces =S , disculpa si molesto mucho pero de verdad me interesa aprender MUCHO! cada detalle... =)
Tengo el Formulario Principal, llamemoslo FORMPRINCIPAL, este formulario sirve para agregar registros de personas, con sus datos...en este formulario tenemos en boton BUSCAR
ese boton BUSCAR lleva a otro pequeño formulario desde donde realizaremos la busqueda por el NUMERO DE CEDULA, este formulario posee tambien un boton BUSCAR
al presionar el boton BUSCAR de este formulario me va a llevar a otro formulario en donde me mostrara la ficha completa de la persona, nombre, apellido, cedula...los codigos que me das en donde los tendria que colocar?! el que va en el MODULO que es el primer codigo que me colocas ya lo coloque, agradezco tu paciencia amigo, es muy valioso para mi !
Saludos y Gracias!
Nebire:
Es irrelevante cuantos formularios tengas... y cuantos botones buscar tengas.
En todo momento nos estamos refiriendo sólo a 2 formularios, el que llama y al que quieres llamar y sólo nos importa un botón buscar, auqél que localiza en la tabla correspondiente los datos de persona.
Al pulsar ese botón tu realizas una consulta a la BD ( con la cédula como criterio de búsqueda). Por tanto es este mismo procedmineto donde debes hacer la asignación de los datos recibidos a la estructura persona, (o llamar al procedimiento que lo haga).
El asunto ya te lo he aclarado, creo yo, que lo suficiente, si le das muchas vueltas es posible que te acabes liando, como el gato que juega con el ovillo de lana. Así te lo resumo para que no veas cosas raras
Solo hay 3 pasos:
1 Un procedimiento llama a la base de datos y obtiene unos datos
2 Ese mismo u otro procedmiento coloca los datos obtenidos en una variable que es accesible como mínimo desde este formulario y desde el formulario que mostrará el resultado. Esto signiiifica que pueden ser 3 ubicaciones (lógicas), una variable pública de tipo persona que esté o en uno de los 2 formularios o en un móodulo.
3 El formulario que lo va a mostrar toma la estructura persona y la vuelca en unos textbox, labels, msgbox, dictado por voz, o lo que quieras.
Ya está, no hay nada más. No le añadas complicaciones, es así de sencillo.
Después, sólo he indicado, que mis explicaciones son simplemente una guía que tu debes adaptar a la situación específica de tu proyecto hay diferentes formas de manejar datos, en explicaciones es más sencillo indicar estructuras, luego uno quizás use un objeto TableDef o cualquier otro tipo de objeto. Tú tienes que tomar la idea, no necesariamente tomarlo al pie de la letra.
Dos objetos sólo pueden comunicarse entre sí, si ambos conocen ó reconocen un objeto (o ruta de objetos) accesible por ambos. Hoomer Simpson sólo podrá enviar una carta a King-Kong, si conoce el domicilio de King-Kong o si conoce a alguien que conoce el domicilio de King-Kong y actúa de intermediario. La variable Persona en el módulo es ese intermediario, FormConsulta tiene acceso al módulo (que actúa como una oficina postal, almacena el paquete en la caja adecuada a su contenido) y mete los datos en un el paquete adaptado a 'Persona', luego le manda un mensaje a formExhibir y le dice, oye te he mandado un paquete lo tienes donde hemos acordado (la oficina postal x)... y formExhibir va a la oficina postal y recoge el paquete 'Persona' abre el contenido y hace con ello lo que quiera hacer... incluso podría modificarlo y enviarlo de vuelta...
Más no te puedo decir, es cuestión tuya que lo entiendas o no. Yo espero haberme expresado con la suficiente claridad, para que sea que si, que lo has entendido.
p.d.: colocar enlaces es un derecho reservado a los usuarios cuando tienen un mínimo de mensajes publicados... no recuerdo el nº, es una pequeña medida para evitar spam... No obstante no es necesario que envíes imágenes, en mi anterior mensaje mis dudas eran porque me parecía extraño que no sepas añadir un módulo de código al proyecto. Un principnate lo primero que debería de hacer con el entorno de vb es familiarizarse con el menú del programa...
Saludos.
Dragos:
Gracias por responder a mis dudas, amigo, he intentado andar con el codigo que me has dado, adaptandolo a mi situacion...
me produce un bloqueo en esta linea
--- Código: Visual Basic ---Persona=....call formExibirResultados.show(1)
--- 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)' ...
Igual en este, la linea PERSONA me la coloca en rojo como un "error de compilacion, se esperaba identificador o expresion entre parentesis"
Gracias de ante mano!
Nebire:
Guau... así andamos ????
Esa línea no es textual. Conoces alguna instrucción parecida a eso? : Persona=....
Ahí lo que te indico es que debes asignar a la estructura Persona los datos que has obtenido de la BD después de realizar la query.
Esto puede ser una asignación manual o una función, eso ya a tu gusto.. Pero eres tú quien debe rellenar ese código, porque eres tú quien sabe que datos manejas y cómo los manejas, yo no tengo detalles ni de tu base de datos ni de la llamada a la base de datos (ni tampoco los necesito, para explicarte tus dudas).
Yo no puedo saber si Persona.Edad (por poner un caso) lo tienes declarado como byte, como integer o como string, para darte explicaciones no importa, yo puedo ponerlo como byte, como integer o como string, que más dá... tu tienes que adaptar mis explicaciones y el código a tus necesidades, no copiar y pegar. Para adaptarlo correctamente es necesario que entiendas como funciona. Hay veces que para adaptarlas basta con copiar y pegar, y hay veces que adaptar implica modificar todo o parte... esa línea tienes que adaptarla según tengas implementado la bd con los objetos que uses para manejarla.
Por ejemplo si trabajaras la bd desde un datagrid, bastaría asignar a la estructura los campos (columnas) que tiene la estructura en común con la tabla, tomando para ello la fila deseada. ..... por eso, esto depende de cómo tengas implementado tú el trabajo con los datos.
Si andas realmente perdido, expón el código de llamada a la DB y en qué tipo de objeto vas a recibir/almacenar el resultado y entonces, podría, ayudarte a completar esa línea de código. Aunque son detalles, que en principio no son el problema planteado en el hilo.
Tema aparte, si me das algunos detalles de qué objetos estás usando, tal vez pueda sugerirte alguna opción más asequible...
Dragos:
Aqui el codigo del Formulario donde almaceno la informacion de la persona que voy a agregar:
--- Código: Visual Basic --- Private Sub cmdbuscar_Click()formbusqueda.ShowEnd Sub Private Sub cmdexaminar_Click()With CommonDialog1 .DialogTitle = "Seleccionar imagen " .Filter = "JPG|*.JPG|BMP|*.bmp|GIF|*.GIF|Todos los archivos|*.*" .ShowOpen If .FileName = "" Then Exit Sub Else Picture1 = LoadPicture(.FileName) End If End WithEnd Sub Private Sub cmdguardar_Click()Formregistros.lblfecha = Format(Date, "dd/mm/yyyy")Formregistros.lblid = Format(" & IdRegistro & ") If txtcedula.Text = "" Then MsgBox ("No Se puede Guardar la informacion porque las casillas estan Vacias, por Favor introduzca la Informacion") Else Data1.UpdateRecord Data1.Refresh MsgBox "El Cliente ha sido Guardado en la Base de Datos", vbExclamation, "Aviso Importante" End If cmdguardar.Enabled = False End Sub Private Sub cmdnuevo_Click() txtcedula.SetFocus cmdguardar.Enabled = True cmdborrar.Enabled = True cmdexaminar.Enabled = True cmdlimpiar.Enabled = True Data1.Recordset.AddNewEnd Sub Private Sub cmdeditar_Click()If (Data1.Recordset.EOF Or Data1.Recordset.BOF) ThenDim rr = MsgBox("No hay Clientes Registrados que Editar", vbInformation, "Editar Clientes")ElseDim m As Longm = Val(InputBox("Introduce la cedula de la persona que deseas Editar"))Data1.Recordset.FindFirst "Cedula=" & mIf Data1.Recordset.NoMatch ThenMsgBox "La Cedula de Identidad: " & m & " No está en la Base de Datos", vbExclamation, "Búsqueda de Personas..."End IfEnd Ifcmdguardar.Enabled = TrueEnd Sub Private Sub Text1_GotFocus()Text1.Text = ""End Sub
Ese es el codigo, EDITAR a su vez cumple tambien en este caso la funcion de BUSCAR, ya que muestra los resultado buscados en la base de datos a traves de la CEDULA DE IDENTIDAD...
Es por eso que necesito que la informacion cuando BUSQUE me la muestre en otro formulario, como una "Ficha" por llamarlo de algun modo, con toda la informacion de la persona!
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa