![]() |
Ayuda a completar una busqueda
No se si esta duda va en este hiloo no asiq si es asi pido disculpas, es que soy novato.
Bueno mi duda es que tengo un form con un query, un dbgrid y un datasource con su edit y dos button. Lo que tengo hasta ahora es que el introducir un caracter en el edit en el dbgrid me muestre todos lo campos que coinciden con ese caracter, pues bien, ahora mi duda es como puedo hacer (si se puede) que cuando tenga los campos en el dbgrid, seleccionarlo y al pulsar el boton aceptar, los datos se me pasen a otro form que me gestiona la tabla de la base de datos. Gracias de antemanos. PD: Os doy la enorabuena a todos los que formais esta pagina y foro, haceis una labor muy grande. |
Si con eso quieres decir dar un registro de alta, no tienes más que hacer:
Un Saludo. |
pues yo he entendido otra cosa distinta, y como esto es un foro para opinar.... pues opino ;)
Yo lo que haría es guardar la clave primaria del registro del grid, y pasar ese valor de una ventana a otra. Normalmente eso se hace con ventanas modales, es decir, la ventana del grid la muestras con:
Y ahora en la ventana del Grid ponemos dos BitBtn, uno de aceptar con su propiedad ModalResult a mrOk y otro bitBtn de cancelar con mrCancel (por ejemplo) Por supuesto necesitas una variable 'Elegido' de tipo String, o del valor que sea la clave primaria de tu tabla. En el evento Onclick del boton aceptar pones:
Un saludo |
Tiene razon Lepe, Muchas Gracias
|
Me surge un problema al hacer esto, y es que al realizar una busqueda no me lo agrega al primer formulario, y al volver a realizar otra busqueda el dbgrid a desaparecido.
|
Vayamos por partes...
Cita:
Quizás sea problema del Grid, ten en cuenta que al hacer clic sobre el boton aceptar, el grid pierde el foco, En las Options del grid, debe tener dgAlwaysShowSelections a true Cita:
En principio, puede ser a causa del FreeAndNil, ya que la lógica normal de un programa es crear las ventanas cuando se necesiten, y despues de usarlas, liberarlas de memoria. Pero ahora me surge a mi una duda, ¿como creas las 2 ventanas y cuando las destruyes? si te parece oportuno, pon algo de código Un saludo |
La cuestion es que no quiero destruir las ventanas, ya que es una busqueda a la que quiero acceder siempre que necesite. el problema esta en que cuando yo pongo
procedure TForm1.Button1Click(Sender: TObject); begin if Form2.showmodal = mrOk then begin Table1.Locate('Nombre', Form1.Elegido,[]); // operar con las tablas end; En este caso la variable elegido me la da como inexistente, pero la tengo declarada, y si solo pongo Elegido, me la da por buena, pero el programa no me funciona correctamente. Podrias ayudarme a ayar el problema? Gracias |
Si el Form2 es el de busqueda, la variable elegido debería estar en esa misma ventana.
Por supuesto deberá estar declarada en la zona public de Form2. ya me contarás si fue un fallo de escritura... Un saludo |
todo correcto pero no funciona
Tengo todo correcto, pero no me funciona, creo que es porque utilizo la misma tabla en el dbgrid como en la que quiero que se muestren los datos, pero no estoy seguro. La cuestion es que porque no me deja, tengo declarada la variable 'Elegido', y puesto todo en su sitio, pero al darle a aceptar no me hace nada, tan solo vuelve a la ventan principal, y deja todos los campos como estaban anteriormente.
|
Con esto ya sabes si lo encuentra o no. Debería encontrarlo por fuerza Pon un breakpoint (punto de ruptura) en el table1.locate, y mira por donde vá. Que significa "operar con las tablas" Un saludo |
Solucion Muy Facil
He encontrado una solucion muy facil, y es en la tabla del form1 en la opcion MasterSource porner Form2.Datasource1. De esta forma automaticamente pasa los datos seleccionados a la ventana inicial.
Es un poco cutre pero funciona perfetamente, es simple y no me complico tanto la vida. Un saludo y muchas gracias por ayudarme. |
La franja horaria es GMT +2. Ahora son las 22:59:29. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi