Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-05-2005
salvanano salvanano is offline
Miembro
 
Registrado: abr 2005
Posts: 92
Poder: 19
salvanano Va por buen camino
Wink 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.
Responder Con Cita
  #2  
Antiguo 08-05-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Si con eso quieres decir dar un registro de alta, no tienes más que hacer:
Código Delphi [-]
  MiTabla.Append;
  MiTablaMicampo.Value:=Edit1.Text;
  MiTablaMiCampo.Value:=StrToInt(Edit1.Text);
  .....
 MiTable.Post;
 MiTable.FlushBuffers;

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 08-05-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
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:

Código Delphi [-]
if ventana.showmodal = mrOk then
begin
  tabla.locate('nombreCampo', ventana.Elegido,[]);
  // operar con las tablas
end;
FreeAndNil(ventana) ; //liberamos la ventana;

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:

Código Delphi [-]
  Elegido := DatasetDelGrid.FieldByName('NombreCampo').AsString;

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 08-05-2005
salvanano salvanano is offline
Miembro
 
Registrado: abr 2005
Posts: 92
Poder: 19
salvanano Va por buen camino
Tiene razon Lepe, Muchas Gracias

Última edición por salvanano fecha: 09-05-2005 a las 02:22:56.
Responder Con Cita
  #5  
Antiguo 09-05-2005
salvanano salvanano is offline
Miembro
 
Registrado: abr 2005
Posts: 92
Poder: 19
salvanano Va por buen camino
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.
Responder Con Cita
  #6  
Antiguo 09-05-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Vayamos por partes...
Cita:
Empezado por salvanano
Me surge un problema al hacer esto, y es que al realizar una busqueda no me lo agrega al primer formulario,
la variable Elegido está para hacer "de puente" entre las 2 ventanas, comprueba el valor (con un showmessage) al hacer clic en el boton aceptar y en la otra ventana justo antes del tabla.locate

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:
Empezado por salvanano
al volver a realizar otra busqueda el dbgrid a desaparecido.
¿han puesto una denuncia por él?

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
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #7  
Antiguo 09-05-2005
salvanano salvanano is offline
Miembro
 
Registrado: abr 2005
Posts: 92
Poder: 19
salvanano Va por buen camino
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

Última edición por salvanano fecha: 09-05-2005 a las 14:33:29.
Responder Con Cita
  #8  
Antiguo 10-05-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
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
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #9  
Antiguo 17-05-2005
salvanano salvanano is offline
Miembro
 
Registrado: abr 2005
Posts: 92
Poder: 19
salvanano Va por buen camino
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.
Responder Con Cita
  #10  
Antiguo 18-05-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
if Form2.showmodal = mrOk then
begin
if Table1.Locate('Nombre', Form1.Elegido,[]) then
  ShowMessage('si encontrado')
else
  ShowMessage('no encontrado');
// operar con las tablas
end;

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
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #11  
Antiguo 20-05-2005
salvanano salvanano is offline
Miembro
 
Registrado: abr 2005
Posts: 92
Poder: 19
salvanano Va por buen camino
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.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 09:32:56.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi