![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Cita:
saludos y espero que te sirva de algo... ![]()
__________________
No todo es como parece ser... |
|
#2
|
||||
|
||||
si lo haces de esta manera te ahorras el uso de la variable gest y de la variable Buscar1, ya que accesas directamente a tu edit. ¿Porque uso SQL.Add(toda la instrucción) en lugar de SQL.Add(una variable)? Si existe un error en la sentencia SQL, cuando utilizas una variable te dira que tienes un error en la línea 1, ya que la instrucción se pasa en una sola línea. En cambio, si se pasa la instrucción (como en mi ejemplo), en caso de que exista un error, te dirá exactamente en que línea esta el error
__________________
Última edición por ContraVeneno fecha: 30-09-2005 a las 00:55:08. |
|
#3
|
||||
|
||||
|
Hola ContraVeneno te cuentro que utilize tu lógica y me sirvió de mucho y cambie algunos detalles:
If (CUENTA1.TEXT<>'')OR(CUENTA2.TEXT<>'')THEN with FDM.QCC do begin If active then close; SQL.Clear; SQL.Add('SELECT *'); SQL.Add('FROM CCCLIENTES '); SQL.Add('WHERE ((PERIODO=01)OR(PERIODO=02)OR(PERIODO=03)OR(PERIODO=04)OR'); SQL.Add('(PERIODO=05)OR(PERIODO=06)OR(PERIODO=07)OR (PERIODO=08)OR'); SQL.Add('(PERIODO=09)OR(PERIODO=10)OR(PERIODO=11)OR(PERIODO=12))'); SQL.Add('AND (GESTION='+(GEST.Text)+')'); SQL.Add('AND (CUENTA='+(CUENTA1.Text)+')'); Open; NAME1.Text:=FIELDBYNAME('NOMBRE').AsString; CLOSE; end;exit; with FDM.QCC do begin If active then close; SQL.Clear; SQL.Add('SELECT *'); SQL.Add('FROM CCCLIENTES '); SQL.Add('WHERE ((PERIODO=01)OR(PERIODO=02)OR(PERIODO=03)OR(PERIODO=04)OR'); SQL.Add('(PERIODO=05)OR(PERIODO=06)OR(PERIODO=07)OR (PERIODO=08)OR'); SQL.Add('(PERIODO=09)OR(PERIODO=10)OR(PERIODO=11)OR(PERIODO=12))'); SQL.Add('AND (GESTION='+(GEST.Text)+')'); SQL.Add('AND (CUENTA='+(CUENTA2.Text)+')'); Open; NAME2.Text:=FIELDBYNAME('NOMBRE').AsString; CLOSE; end;exit; Ahora la duda que tengo es como utilizar este código si quiero hacer dos consultas en un mismo FORM, ya intente de todo pero como no domino SQL me sale error, aunque delphi compila bien
__________________
El que da primero da dos veces. |
|
#4
|
||||
|
||||
mi duda es con el exit como menciono en el comentario. No deberías tener ningún problema haciendo dos consultas, de cualquier manera tambien podrías usar otro TQuery (FDM.QCC2 por ejemplo). Otra cosita: cuenta1.text<>'' funcionaría bien, pero ¿que tal si en tu edit escribiendo un espacio? entonces cuenta1.text sería igual a '_' con lo que sí entraría en la función. Prueba hacer:
__________________
Última edición por ContraVeneno fecha: 30-09-2005 a las 20:58:47. |
|
#5
|
||||
|
||||
|
Hola nuevamente funciona perfectamente, quité los exit y agregué un if validando si 'cuenta2.text<> vacio' y recién funcionó
Agradezco mucho tu ayuda. a proposito creare un nuevo hilo para ver como guardar a partir de la búsqueda que me aconsejaste Saludos.
__________________
El que da primero da dos veces. |
|
#6
|
||||
|
||||
|
igual que como haces un select
de la misma forma haces un update o insert pero en lugar de ejecutar la instrucción SQL con Open, debes usar ExecSQL
__________________
|
|
#7
|
||||
|
||||
|
Ahora que ya sé comparar mis registros con los de un edit se viene lo dificil para mi, tal vez un consejo no me vendría mal para comparar mis edit con mis registros para luego Guardar mis registros como me lo mostro ContraVeneno
Se supone que tiene que funcionar de la sgte manera La gestion me ayuda para que la busqueda solo sea de un determinado año En la CUENTA es donde introduzco los datos para la busqueda y me visualiza en NOMBRE.CTA Todas las casillas de la derecha son edit. Con el boton VALIDAR CUENTA muestro los nombres encontrados pero a la vez debo mostrar un caracter "P" si la situacion es vacia sino "E" y sino existe la cuenta el correlativo se mantiene como vacio como veran son 12 edit los cuales representan los 12 meses del año Mi tabla esta formada por los siguientes campos donde los datos entre comilla ya estan cargados por defecto cuenta "1000000001" nombre "aaaaaaa" gestion "2005" periodo "01" situacion propietario identificacion mis datos estan de la siguiente manera donde '__'vacio 1000000001,,,aaaaaa,,,2005,,,01,,,'0000' 1000000002,,,bbbbbb,,,2005,,,01,,,'__',,,JUAN,,,123 1000000003,,,cccccc,,,2005,,,01,,,'__',,, 1000000004,,,dddddd,,,2005,,,01,,,'__',,, 1000000001,,,aaaaaa,,,2005,,,02,,,'__',,, 1000000002,,,bbbbbb,,,2005,,,02,,,'__',,, 1000000003,,,cccccc,,,2005,,,02,,,'__',,, 1000000004,,,dddddd,,,2005,,,02,,,'__',,, 1000000001,,,aaaaaa,,,2005,,,03,,,'__',,, 1000000002,,,bbbbbb,,,2005,,,03,,,'__',,, 1000000003,,,cccccc,,,2005,,,03,,,'__',,, 1000000004,,,dddddd,,,2005,,,03,,,'__',,, ahora la busqueda debería funcionar así si buscamos la cuenta 1000000001 con periodo 2005 el resultado debería ser: (resultado en el FORM de izquierda a derecha sin contar la gestion) 1000000001,,,aaaaaa,,,E,,,'__',,,P y todos los demas "P" porque situacion es vacio. Luego en el EDIT debajo de propietario colocamos el nombre el cual debe grabarse en el campo propietario pero en todos los registros de cada periodo asi como su identificacion y la fecha en la situacion. [img]file:///d:/formulario.jpg[/img] Quiero saber si esto es posible para no romperme la cabeza, llevo ya un mes y no logro hacerlo, en realidad ya lo hice hasta asignar las P y E pero sin grabar y sin SQL jejeje y como tengo 350.000 es muy lento y mi base de datos crecerá, despues de suscribirme a este foro lo hice todo de cero en dos dias gracias a su ayuda. Cualquier sugerencia me viene como ayuda caída del cielo GRACIAS por su colaboración
__________________
El que da primero da dos veces. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|