fortran
27-11-2003, 20:47:05
A ver si los gurús del foro me pueden ayudar con esto (y a ver si consigo hacerme entender con este problema).
Lo primero WXP, D5 y base de datos Paradox.
Lo siguiente
Tengo una tabla que es tablacitas, otra tablaclientes y otra tablaempleados.
tablaempleados es master de tablacitas
tablacitas tiene como campos fechacita, codigoempleado, y 24 campos que se cargan con dblookupcita1, dblookupcita2, dblookupcita3... y así sucesivamente, en estos el key_field es el codigocliente y el ListField es nombre y apellidos de la tablaclientes.
Para mostrar las citas diarias de cada empleado filtro estas por fechacita.
Bueno, hasta ahí todo va bien, el problema viene cuando trato de sacar todas las citas de un cliente. Para ello desengancho (o eso creo) el master detail, quito el filtro y llamo al formulario en el que se debería de ver.
procedure TFormularioPrincipal.BotonVercitasClienteClick(Sender: TObject);
Var
miMaster : TDataSource;
begin
modulodedatos.Tablacitas.Filtered := false;
miMaster:=modulodedatos.tablacitas.MasterSource;
modulodedatos.tablacitas.MasterSource:= nil;
Application.createForm(TFVerCitasCliente,FVerCitasCliente);
FVerCitasCliente.showmodal;
FVerCitasCliente.Free;
modulodedatos.tablacitas.MasterSource:=MiMaster;
modulodedatos.tablacitas.filtered := true;
end;
Dentro del form tengo dbgrid para seleccionar el cliente y un memo para ir listando las fechas de las citas.
Para llenar el memo hago lo siguiente:
procedure TFVerCitasCliente.DBGridClientesParaCitasCellClick(Column: TColumn);
var
codigodelcliente : integer;
hay : boolean;
begin
// Coger el codigodecliente
codigodelcliente := modulodedatos.tablaclientescodigo_cliente.value;
with modulodedatos do
Begin
Tablacitas.First;
memo1.lines.Clear;
while not modulodedatos.tablacitas.eof do
Begin
hay := false;
hay := (tablacitascita1.value = codigodelcliente) or (tablacitascita2.value = codigodelcliente)or
(tablacitascita3.value = codigodelcliente) or (tablacitascita4.value = codigodelcliente)or
(tablacitascita5.value = codigodelcliente) or (tablacitascita6.value = codigodelcliente)or
(tablacitascita7.value = codigodelcliente) or (tablacitascita8.value = codigodelcliente)or
(tablacitascita9.value = codigodelcliente) or (tablacitascita10.value = codigodelcliente)or
(tablacitascita11.value = codigodelcliente) or (tablacitascita12.value = codigodelcliente)or
(tablacitascita13.value = codigodelcliente) or (tablacitascita14.value = codigodelcliente)or
(tablacitascita15.value = codigodelcliente) or (tablacitascita16.value = codigodelcliente)or
(tablacitascita17.value = codigodelcliente) or (tablacitascita18.value = codigodelcliente)or
(tablacitascita19.value = codigodelcliente) or (tablacitascita20.value = codigodelcliente)or
(tablacitascita21.value = codigodelcliente) or (tablacitascita22.value = codigodelcliente)or
(tablacitascita23.value = codigodelcliente) or (tablacitascita24.value = codigodelcliente);
if hay then
memo1.Lines.append(datetostr(tablacitasfechacita.value));
tablacitas.next;
End;
End;
end;
El problema es que cada vez que hago click en cualquier casilla del dbgrid se me desplaza automáticamente al cliente que más entradas tiene en la lista aunque los valores del memo los pone bien.
Le he dado mil vueltas al asunto y sigo si ver la solución. A ver si alguien me puede dar una pista.
Gracias por la atención y perdón por el rollo.
Lo primero WXP, D5 y base de datos Paradox.
Lo siguiente
Tengo una tabla que es tablacitas, otra tablaclientes y otra tablaempleados.
tablaempleados es master de tablacitas
tablacitas tiene como campos fechacita, codigoempleado, y 24 campos que se cargan con dblookupcita1, dblookupcita2, dblookupcita3... y así sucesivamente, en estos el key_field es el codigocliente y el ListField es nombre y apellidos de la tablaclientes.
Para mostrar las citas diarias de cada empleado filtro estas por fechacita.
Bueno, hasta ahí todo va bien, el problema viene cuando trato de sacar todas las citas de un cliente. Para ello desengancho (o eso creo) el master detail, quito el filtro y llamo al formulario en el que se debería de ver.
procedure TFormularioPrincipal.BotonVercitasClienteClick(Sender: TObject);
Var
miMaster : TDataSource;
begin
modulodedatos.Tablacitas.Filtered := false;
miMaster:=modulodedatos.tablacitas.MasterSource;
modulodedatos.tablacitas.MasterSource:= nil;
Application.createForm(TFVerCitasCliente,FVerCitasCliente);
FVerCitasCliente.showmodal;
FVerCitasCliente.Free;
modulodedatos.tablacitas.MasterSource:=MiMaster;
modulodedatos.tablacitas.filtered := true;
end;
Dentro del form tengo dbgrid para seleccionar el cliente y un memo para ir listando las fechas de las citas.
Para llenar el memo hago lo siguiente:
procedure TFVerCitasCliente.DBGridClientesParaCitasCellClick(Column: TColumn);
var
codigodelcliente : integer;
hay : boolean;
begin
// Coger el codigodecliente
codigodelcliente := modulodedatos.tablaclientescodigo_cliente.value;
with modulodedatos do
Begin
Tablacitas.First;
memo1.lines.Clear;
while not modulodedatos.tablacitas.eof do
Begin
hay := false;
hay := (tablacitascita1.value = codigodelcliente) or (tablacitascita2.value = codigodelcliente)or
(tablacitascita3.value = codigodelcliente) or (tablacitascita4.value = codigodelcliente)or
(tablacitascita5.value = codigodelcliente) or (tablacitascita6.value = codigodelcliente)or
(tablacitascita7.value = codigodelcliente) or (tablacitascita8.value = codigodelcliente)or
(tablacitascita9.value = codigodelcliente) or (tablacitascita10.value = codigodelcliente)or
(tablacitascita11.value = codigodelcliente) or (tablacitascita12.value = codigodelcliente)or
(tablacitascita13.value = codigodelcliente) or (tablacitascita14.value = codigodelcliente)or
(tablacitascita15.value = codigodelcliente) or (tablacitascita16.value = codigodelcliente)or
(tablacitascita17.value = codigodelcliente) or (tablacitascita18.value = codigodelcliente)or
(tablacitascita19.value = codigodelcliente) or (tablacitascita20.value = codigodelcliente)or
(tablacitascita21.value = codigodelcliente) or (tablacitascita22.value = codigodelcliente)or
(tablacitascita23.value = codigodelcliente) or (tablacitascita24.value = codigodelcliente);
if hay then
memo1.Lines.append(datetostr(tablacitasfechacita.value));
tablacitas.next;
End;
End;
end;
El problema es que cada vez que hago click en cualquier casilla del dbgrid se me desplaza automáticamente al cliente que más entradas tiene en la lista aunque los valores del memo los pone bien.
Le he dado mil vueltas al asunto y sigo si ver la solución. A ver si alguien me puede dar una pista.
Gracias por la atención y perdón por el rollo.