Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   duda (https://www.clubdelphi.com/foros/showthread.php?t=4911)

vetustas 01-11-2003 18:08:41

duda
 
Hola!
Trabajo con Dephi 5 y Paradox. Tengo un form con un combo donde selecciono un dni de una persona. Y por otro lado tengo un form donde se muestran los datos de las personas. Cómo hago para que al introducir un dni concreto se muestre el form de la persona correspondiente? No se que usar. Muchas gracias

jhonny 01-11-2003 19:06:44

Bueno, espero haber entendido bien...

Lo que debes hacer es, pasar la propiedad Text del Combo a un parametro de un TQuery que este en el otro TForm, una vez pasado y abierto el TQuery pues Procedes a mostrar el TForm con sus respectivos controles.

Espero te haya dado una buena pista, y que ademas te sirva ;).

Lepe 02-11-2003 13:16:03

Otra alternativa es:

En el form donde tienes los datos personales pones una cajita de texto y un label que diga.... Buscar. En el Onchange de la cajita, haces un simple locate por el dni.

Así desde el otro form, lo único que haces es abrir la forma de datos personales y escribir por código el dni de la persona que buscas en dicha caja de texto.

Saludos.

vetustas 05-11-2003 13:28:40

A ver...yo tengo un lookupcombobox que me selecciona el dni de la persona y habia conseguido que me mostrase el form de la persona correspondiente. Lo hacia asi:

Código:


function TDlg_BuscarDni.ejecutar(tabla:TTable):Boolean;
var
i:integer;
begin

  if showModal=mrOk then
  begin
    Form_AltaAlumnos.qry_dniAlumno.Close;
    try
      Form_AltaAlumnos.qry_DniAlumno.ParamByName('dni').AsString:=Combo_Dni.Text;
    finally
      Form_AltaAlumnos.qry_DniAlumno.Open;
      Form_AltaAlumnos.show;
    end;
  end
  else ejecutar:=false;
end;


pero ahora resulta que no quiero usar uno de busqueda, sino un edit cualquiera donde yo pueda introducir el dni manualmente.

Lo unico que hice fue en el código anterior donde tenía:

Código:

Form_AltaAlumnos.qry_DniAlumno.ParamByName('dni').AsString:=Combo_Dni.Text;
poner:

Código:

Form_AltaAlumnos.qry_DniAlumno.ParamByName('dni').AsString:=Edit_Dni.Text;
pero no funciona. No me abre el form de la persona cuyo dni he introducido, sino que me abre el último form abierto. No entiendo porque hace eso. Qué estoy haciendo mal??

:confused:

jhonny 05-11-2003 15:49:43

Hola :D, La verdad es que no se si este es el origen del problema pero yo pondria tu codigo asi:

Código:


function    TDlg_BuscarDni.ejecutar(tabla:TTable):Boolean;
var
i:integer;
begin

    if showModal=mrOk then
    begin
      Form_AltaAlumnos.qry_dniAlumno.Close;
    try
      Form_AltaAlumnos.qry_DniAlumno.ParamByName('dni').AsString:=Edit_Dni.Text;
    finally
      Form_AltaAlumnos.qry_DniAlumno.Open;
      Form_AltaAlumnos.ShowModal;
      Form_AltaAlumnos.Release;
    end;
  end
  else ejecutar:=false;
end;


jhonny 05-11-2003 15:54:06

Ahh, se me olvidaba, para que usas el parametro "Tabla" en este funcion?, Bueno eso a menos de que solo ubieras puesto una parte del codigo, claro esta.

vetustas 05-11-2003 17:21:24

Hola de nuevo!
Pues sigue sin funcionarme. Me sigue saliendo el último form abiertoy no el form del alumno cuyo dni he introducido. Eso si, pasarle el ttable que me preguntaste era un error, al igual que la variable i declarada que tampoco uso. Cambién el código y se me olvidó borrar eso. :D Pues nada, muchas gracias y seguiré pegandome con esto. Si a alguien se le ocurre que puede ser...

jhonny 05-11-2003 18:12:46

Bueno, pues me queda preguntarte solo una cosilla, ¿Cual es el Script que tiene el qry_DniAlumno?, a lo mejor hay este tambien el error...

Y otra, ¿Los controles en realidad estan conectados a ese TQuery?.

Espero me respondas ;) .

vetustas 05-11-2003 18:46:11

Claro que respondo. Se agradece mucho la ayuda :)

lo que tengo en el sql del query es:
Código:

select *
from "Alumno.db"
where Dni_Alumno like :dni

y
Cita:

¿Los controles en realidad estan conectados a ese TQuery?
no entiendo que me quieres decir con eso. lo único que tengo es en las propiedades del query:

databasename: gestor de practicas
datasource: modulo.dsAlumnos

Thankius ;)

jhonny 05-11-2003 18:55:38

Cita:

Cómo hago para que al introducir un dni concreto se muestre el form de la persona correspondiente?
Bueno, Mira bien lo que necesitas, basandome en tu pregunta sobre que necesitas un "dni concreto" entonces yo diria que lo que debe tener tu Query es un Igual(=) en vez de un Like.

Asi:

Código:

select *
from "Alumno.db"
where Dni_Alumno =:dni

Y bueno, solo por si "Las moscas", recuerda definir en la propiedad params al parametro dni de tipo String.

ahhh, lo que te pruguntaba de los controles, simplemente era que si los controles que haz puesto en el formulario tienen su propiedad DataSource Apuntando al Datasorce que hace referencia al susodicho TQuery.
(Yo diria que seria bueno verificarlo pero no centrarnos mucho por este lado).

Ojala que ahora si :D:D

vetustas 05-11-2003 19:09:30

nada :( Puse el igual en la consulta sql, verifiqué que tenía el datasource bien puesto en cada casilla del form de alta y tb miré si tenía bien definida la propiedad params. Y sip, estaba todo bien, o al menos como se supone que debería estar. Y no me hace caso (buaaaa!) me sigue mostrando el último form que abra, no el que tiene que ser :mad: este delphi va a acabar conmigo...

jhonny 05-11-2003 19:30:16

Caramba, que podria ser?, ya como ultima patada de ahogado, que tal si quitas de la propiedad DataSource Del TQuery eso de

datasource: modulo.dsAlumnos

Y mejor lo dejas en blanco.

Nota: Recuerda que debes tener un datasource amarrado al TQuery no el TQuery amarrado a un DataSource. (Bueno al menos en este caso, creo yo);).
Digo esto porque a veces me da la impresion de que tienes en la propiedad DataSource del TQuery "modulo.dsAlumnos" cuando deberia ser que en la propiedad DataSet del DataSorce Tengas "qry_DniAlumno".

Bueno, espero que te sirva.

vetustas 05-11-2003 19:54:22

Na chico, que esto sigue sin funcionar. Me voy a volver chiflada. Weno, lo q he hecho ahora es poner el query y el datasource en un datamodule donde tengo las demás cosas. El código me ha quedado entonces asi:

Código:

if showModal=mrOk then
  begin
    Modulo.qry_dniAlumno.close;
    try
      Modulo.qry_DniAlumno.ParamByName('dni').AsString:=Edit_Dni.text;
    finally
      Modulo.qry_DniAlumno.Open;
      Form_AltaAlumnos.showmodal;
      form_AltaAlumnos.release;
    end;
  end
  else ejecutar:=false;

tb he probado lo de quitar el datasource del query y nada. Y el dataset del datasource está bien, tengo puesto el qry_Dnialumno y me sigue saliendo el form que le da la gana. Bueno, el que le da la gana no, el último form abierto (al no ser que inicie la aplicación que entonces sale el form del primer alumno de la base de datos).

Esto es un expediente X!!!! :p


La franja horaria es GMT +2. Ahora son las 16:29:39.

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