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)
-   -   como visualizar el resultado de una consulta en un edit (https://www.clubdelphi.com/foros/showthread.php?t=25636)

Damian666 28-09-2005 21:13:58

como visualizar el resultado de una consulta en un edit
 
Hola a todos, soy nuevo en este lugar que por cierto es muy bueno

Mi problema está en como visualizar el resultado de una consulta en un edit?. Estoy utilizando como base de datos MySql y Delphi 7, mi tabla tiene varios campos como cuenta, nombre y periodo donde el periodo es igual a 01, 02 y asi los 12 meses del año.

Ahora mi busqueda funciona para el campo cuenta bien en un DBGrid ya que puede visualizar varios registros, pero en mis registros hay varias cuentas iguales de las cuales solo las diferencia el periodo es decir el mes.
Tenía entendido que debo guardar la busqueda en una variable y luego asignarla a un edit, el problema que no se cual es el resultado del codigo adjunto ya que en un DBGrid lo hace solito con DataSource

De antemano gracias por su ayuda
Código Delphi [-]
 
procedure TFENTREGACC.BitBtn1Click(Sender: TObject);
var
BUSCAR:STRING;
begin
    BUSCAR:='SELECT * FROM CCCLIENTES WHERE (PERIODO=01) AND    CUENTA LIKE ''' ;
    BUSCAR:=BUSCAR+'%';
    BUSCAR:=BUSCAR+CUENTA1.Text;
    BUSCAR:=BUSCAR+'%';
    BUSCAR:=BUSCAR+'''';
    FDM.QCC.SQL.Clear;
    FDM.QCC.SQL.Add(BUSCAR);
    FDM.QCC.Active:=TRUE;
    FDM.QCC.Open;
end;

vtdeleon 28-09-2005 21:40:47

Saludos

No h evisto bien el codigo, ya que me confunden tantas comillas.
Solucion facil: usa un DBEdit, que te muestra el campo del registro actual. Y tambien en podrias usar Parametros en la sentencia:
Código Delphi [-]
procedure .....(...);
 var
 Buscar:String;
 Begin
 Buscar:='Select * from ccClientes Where (Periodo=01) and cuenta Like :cuenta';
 QDataset.Sql.Text:=Buscar;//No se que dataset usas...
 QDataset.ParamByName('cuenta').AsString:='%'+Cuenta1.Text+'%';
 QDatset.Open;//No es necesario llamar el Active y el open, con uno basta ;)
 End;
Espero que te sirva

Damian666 29-09-2005 00:18:04

Hola vtdeleon te cuento que cambie mi código pero no visualiza nada.

Ahora te detallo lo que estoy usando ya que buscaba solucionar mi problema con una sola cuenta pero en realidad tengo que buscar cuatro cuentas a la vez y validar mediante el periodo y situacion si esta vacio o no, pero debo mostrar en los 48 edit su situacion. Si situacion es vacio el edit es PPP sino EEE y si no existe la cuenta que este en blanco, supongamos que en Febrero no existe la cuenta 1000000001 su periodo era igual a 02 pero como no existe, su edit estará en blanco es decir sin ningun caracter y por ultimo que me muestre el nombre de la cuenta en un edit diferente para cada cuenta


FDM=Datamodule
QCC=Tquery que esta conectada con mi base de datos
TCC=tabla CCCLIENTES

mis registros estan de las siguiente manera

cuenta nombre periodo situacion
1000000001 A 01 PPP
1000000002 B 01 ppp
1000000003 C 01
1000000004 D 01..... EEE
................ .. .. ..... vacio 1000000001 periodo=02
1000000002 B 02 PPP
1000000003 C 02 PPP
1000000004 D 02..... PPP......
.
.
.
.....y asi hasta periodo =12

osea tendremos la cuenta 1000000002 doce veces


"El campo situacion esta vacio hasta que asignemos un valor"

los valores PPP y EEE son caracteres que me serviran para hacer comparaciones despues

ene feb mar abr.............................................
CUENTA1 |NOM| |PPP||PPP|| ||EEE|| || || || || || || || |

CUENTA2 |NOM| |PPP|| ||PPP||PPP|| || || || || || || || |

CUENTA3 |NOM| |EEE|| || || || || || || || || || || |

CUENTA4 |NOM| | || || || || ||PPP|| || || || || || |

|EEE|,| |,|PPP| representan un edit

Luego no se como comparar el PPP que asigné, ya que ese valor debo guardar en el campo SITUACION en los 12 periodos y de las cuatro cuentas


todo esto ya lo logre de la siguiente manera pero sin sql


IF (FDM.TCCCUENTA.VALUE = CUENTA1.TEXT) AND
(FDM.TCCGESTION.Value = GEST.Text) THEN

begin

NAME3.TEXT:= FDM.TCCNOMBRE.Value;

end;

lo tuve que hacer 4 veces para las 4 busquedas, esto solo es para el nombre.

Para validar su situación fue de la siguiente manera

If (FDM.TCCCUENTA.Value = CUENTA1.Text) AND
(FDM.TCCGESTION.Value = GEST.Text) AND

(FDM.TCCPERIODO.Value = '01') AND

(FDM.TCCSITUACION.Value = '')

THEN C1C1.TEXT:= 'P'

else

If (FDM.TCCCUENTA.Value = CUENTA1.Text) AND

(FDM.TCCGESTION.Value = GEST.Text) AND

(FDM.TCCPERIODO.Value = '01') AND

(FDM.TCCSITUACION.Value <> '')

THEN C1C1.Text:='E';


(no pongo el codigo porque es largo, y porque está mal desarrollado)
como veras esta la tuve que hacer 12 veces para cada periodo por cuatro cuentas pero como son 150.000 registros tarda mucho la busqueda pero funciona.

Nuevamente agradeceré mucho a todos los expertos que vi en este foro cuando me den una manito
Saludos.

vtdeleon 29-09-2005 03:11:18

Saludos

Campos
Código:


cuenta      nombre periodo situacion

1000000001  A      01      PPP
1000000002  B      01      ppp
1000000003  C      01
1000000004  D      01.....  EEE
................ .. .. ..... vacio 1000000001 periodo=02
1000000002  B      02      PPP
1000000003  C      02      PPP
1000000004  D      02.....  PPP......
+++++++++++++++++++++++++++++
y necesitas:
+++++++++++++++++++++++++++++
Cuentas Nombres  ene  feb  mar abr...........................

CUENTA1 |NOM    | |PPP||PPP|| ||EEE|| || || || || || || || |

CUENTA2 |NOM    | |PPP|| ||PPP||PPP|| || || || || || || || |

CUENTA3 |NOM    | |EEE|| || || || || || || || || || || |

CUENTA4 |NOM    | | || || || || ||PPP|| || || || || || |

Creo que es lo que tratas de plantear:s
Si esto es asi, te aconsejo que uses un DBGrid y o varios DBCrtlGrid con 4 filas

Tambien Pivotear la tabla, chequea este hilo: http://www.clubdelphi.com/foros/showthread.php?t=17253

Damian666 29-09-2005 04:28:44

Exactamente lo que pasa es que se desconfiguró al enviarlo.

Gracias lo vere en este momento

Damian666 29-09-2005 06:14:24

Hola nuevamente, estaba revisando y el aspecto visual es muy importante, lo que pasa que esta aplicacion es para que un usuario maneje lo menos que pueda siendo el sistema el que haga la mayor parte como la actualizacion de los registros automaticamente.
Lo que deseo saber por el momento es como visualizar el resultado de una consulta en un edit, por cuestion de diseño tiene que ser en un edit:(.
Ese es mi mayor problema despues me ocupare en el guardado automático de mis registros.

Gracias nuevamente
Saludos.

roman 29-09-2005 07:39:41

Cita:

Empezado por Damian666
lo que pasa que esta aplicacion es para que un usuario maneje lo menos que pueda siendo el sistema el que haga la mayor parte

Yo diría que ese es el objetivo de cualquier sistema ;)


Cita:

Empezado por Damian666
Lo que deseo saber por el momento es como visualizar el resultado de una consulta en un edit, por cuestion de diseño tiene que ser en un edit:(.

Código Delphi [-]
Edit1.Text := FDM.QCC.FieldByName('campo').AsString;

// Saludos

epuigdef 29-09-2005 10:09:34

También te aconsejo que te mires el evento OnAfterScroll. Se dispara cuando se cambia el registo activo del dataset y puedes utilizarlo para asignar el campo de la tabla a tu edit
Un saludo

Edu

vtdeleon 29-09-2005 14:03:10

Saludos

En vez de usar un Edit, usaría un DbEdit asociado al Dataset, y también usaria el DbCtrlGrid para mostrar las 4 filas que necesitas

Damian666 29-09-2005 18:33:17

Muchas gracias a todos, mejoró bastante mi aplicación.
Saludos.


La franja horaria es GMT +2. Ahora son las 02:08:52.

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