Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-10-2006
Delphitest Delphitest is offline
Miembro
 
Registrado: sep 2006
Ubicación: Salamanca-España
Posts: 249
Poder: 21
Delphitest Va por buen camino
Perdona Caral, no había visto tu último mensaje. Está claro que se puede hacer de todo y de diferentes maneras. Todo me sirve, intento filtrar toda esa información aunque es mucha y a veces ya se me va un poco la cabeza


Los últimos progresos son estos:

http://rapidshare.de/files/37325009/Gesatrans.zip.html


Ya trabajo con la base de datos de access y he conseguido filtrar los datos de búsqueda por difentes campos a la vez. Le he dado muchas vueltas y estoy seguro que tiene que haber una forma mas sencilla de hacerlo, pero finalmente he aplicado la lógica y con varias lineas de comandos me ha salido. De por medio me he perdido varias veces con los if .. else ... los ';' y los diferentes tipos de campos, númericos y de tipo carácter pero lo tengo ya a mi manera. Este es el código que me ha resuelto la papeleta:

Código:
procedure TFBCliente.Edit1Change(Sender: TObject);
begin
    DTMClientes.TClientes.Filtered := False;
    If (Edit1.text <> '') then
    DTMClientes.TClientes.Filter := 'Cod_Cliente Like '+ Edit1.Text;
    If (Edit2.text <> '') then
    DTMClientes.TClientes.Filter := 'Nombre_Cial Like '''+ Edit2.Text + '*''';
    If (Edit3.text <> '') then
    DTMClientes.TClientes.Filter := 'Razon_Social Like '''+ Edit3.Text + '*''';
    DTMClientes.TClientes.Filtered := True;
    If (Edit5.text <> '') then
    DTMClientes.TClientes.Filter := 'DNI Like '''+ Edit5.Text + '*''';
    DTMClientes.TClientes.Filtered := True;
    If (Edit6.text <> '') then
    DTMClientes.TClientes.Filter := 'Localidad Like '''+ Edit6.Text + '*''';
    DTMClientes.TClientes.Filtered := True;
    If (Edit7.text <> '') then
    DTMClientes.TClientes.Filter := 'Provincia Like '''+ Edit7.Text + '*''';
    DTMClientes.TClientes.Filtered := True;
    IF (Edit1.Text = '') and (Edit2.Text = '') and (Edit3.Text = '') and (Edit5.Text = '') and (Edit6.Text = '') and (Edit7.Text = '') then
    DTMClientes.TClientes.Filtered := False;
end;
un poco lío verdad ??

Pero funciona que es lo importante. Solo me he quedado con mal sabor de boca porque he tenido que asignar esto a cada uno de los eventos Onchange de los 6 Edit que hay, seguro que hay forma de ponerlo una vez en algun sitio y llamarlo después, pero no he dado con ello. Otra opción era poner un boton para filtrar, asi solo sería suficiente con uno, pero me gusta mas de esta manera, probarlo si teneis oportunidad, ha quedado curioso.

De paso he visto sin querer un erro que daba la ficha de cliente al dar de alta uno nuevo, el campo DNI era un indice y campo requerido y si no ponía nada en el pues saltaba un error que no conseguía quitar; solución = ni indice ni requerido, jejejej, lo he puesto normal y fuera

Tras el madrugón que me he pegado para hacer la busqueda ahora empiezo con el tema de la impresión de fichas individuales y listados de clientes. He instalado el QuickReport ya que es lo se dice por ahí, asi que vamos a por ello.

Un saludo y gracias a todos por el empujoncito
__________________
Mi proyecto paso a paso (Parte I)
Responder Con Cita
  #2  
Antiguo 19-10-2006
Avatar de kalimero
kalimero kalimero is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 289
Poder: 24
kalimero Va por buen camino
Hola.
Con que lo escribas el codigo en un evento es suficiente. Despues vas a cada edit y en el evento "Onchange" asignas el que has escrito que estará en la lista.
Saludos
Responder Con Cita
  #3  
Antiguo 19-10-2006
Avatar de kalimero
kalimero kalimero is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 289
Poder: 24
kalimero Va por buen camino
Por cierto. ¿Para que repites los filtros en cada evento del "OnChange"?
Coloca en cada Evento el que corresponda

Saludos
Responder Con Cita
  #4  
Antiguo 19-10-2006
Delphitest Delphitest is offline
Miembro
 
Registrado: sep 2006
Ubicación: Salamanca-España
Posts: 249
Poder: 21
Delphitest Va por buen camino
Perfecto Kalimero, gracias.

He dejado solo el del Edit1 y he hecho es que dices, funciona perfectamente.

Ya decía yo que tenía que haber un truco sencillo para ello, tomo nota para próximas veces

Cita:
kalimeroPor cierto. ¿Para que repites los filtros en cada evento del "OnChange"?
Coloca en cada Evento el que corresponda

Saludos
He hecho tantas pruebas que al final es lo único que parece que funciona. A cada vez que se pulsa una tecla estes en la casilla que este tiene que 'refiltrar' la tabla teniendo en cuenta lo que hay en los otros campos y si no hay nada en ninguna (el super if que he puesto al final) pues tiene que quitar el filtro. Igual se puede hacer de otra forma pero no he dado con ella.

Un saludo
__________________
Mi proyecto paso a paso (Parte I)
Responder Con Cita
  #5  
Antiguo 19-10-2006
Avatar de Enan0
Enan0 Enan0 is offline
Miembro
 
Registrado: may 2004
Ubicación: Argentina
Posts: 565
Poder: 23
Enan0 Va por buen camino
Solo un conesejo

hola Delphitest, mira solo como a modo de consejo y no por complicarte la vida, te recomiendo que Renombres (a medida que tengas tiempo o sino en el futuro) Los objetos que vayas utilizando, te preguntaras para que, Simplemente para que el dia de mañana no te sea tan engorroso saber que hace el EDit1, el label5 y combobox1.

Lo ideal es tomar el lineamiento del diseño UML y es darle al componente una breve descripción de que es. ejemplo

Si el Edit1, es para busqueda por nombre
seria bueno un nombre asi mas omenos EdBuscaNombre (Ed de EDIT y busca nombre de lo que hace.)

Te aseguro que cuando dejes el sistema por un tiempo y lo vuelvas a agarrar te va a ser de mucha ayuda.
Responder Con Cita
  #6  
Antiguo 19-10-2006
Avatar de Enan0
Enan0 Enan0 is offline
Miembro
 
Registrado: may 2004
Ubicación: Argentina
Posts: 565
Poder: 23
Enan0 Va por buen camino
consejo para no tener problemas con la DB

Hola Delphitest, mira para que no tengas problemas con donde debe encontrarse la Base de Datos te paso este codigo.

en el create del DATAMODULE
Código Delphi [-]

ADOConnection1.Close;
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;'+
                                 'Data Source='+ExtractFilePath(paramstr(0))+ 'Datos\Gesatrans.mdb;'+
                                 'Persist Security Info=False';
ADOConnection1.Open;
TClientes.open;



Esto lo que hace es buscar en donde esta tu aplicacion, extraer la Ruta y Agregar la carpeta "datos" y su archivo.
entonces solo hace falta poner la carpeta dentro de la carpeta Padre en donde esta el Executable.

No te hago los cambios yo ya que trabajo con Delphi 5 y hay una serie de Units que no utilizo y otras cosas

Y para que la Base no te quede abierta
en el Destroy del Datamodule

Código Delphi [-]
TClientes.close;
Adoconnection1.close;

Última edición por Enan0 fecha: 19-10-2006 a las 19:38:09.
Responder Con Cita
  #7  
Antiguo 19-10-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 28
Caral Va por buen camino
Hola Enan0
Me parece acertada tu opinion, yo particularmente uso un archivo .ini , con el que el ejecutable busca la base de datos, asi puedo poner la BD en cuarquier sitio, incluso en otro ordenador en red.
Saludos
Responder Con Cita
  #8  
Antiguo 19-10-2006
Avatar de Enan0
Enan0 Enan0 is offline
Miembro
 
Registrado: may 2004
Ubicación: Argentina
Posts: 565
Poder: 23
Enan0 Va por buen camino
Y si te interesa Yo te recomiendo Eliminar el DBnavigator, y Utilizar Botones clasicos.
Es decir que el formulario Clientes (creo que es de carga) te aparezca en blanco y llenas los datos y al Hacer Click en agregar Checkea que dato no esta o es incorrecto y te lo pide nuevamente, Si esta todo OK, Te Crea el nuevo Registro.

Ya que en este caso Tenes muchos botones MEdios Confusos para el 90 % de los usuarios, y por ultimo la comparacion de datos necesarios los hace El DBNavigator (cuando intenta Insertar) Generando un Error.. y de la otra forma los tendrias controlados vos.
Responder Con Cita
  #9  
Antiguo 19-10-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 28
Caral Va por buen camino
Hola de nuevo Delphitest
La verdad no era mi intencion que te decidieras rotundamente por access, pero me alegro por ti, te va a ser mas facil esto, luego ya cambiaras si quieres.
No he podido ver tu programa porque me da un error, he leido tus mensajes y creo, si estas de acuerdo en que esta modificacion al programa que te envio te servira, la verdad repito, si estas de acuerdo, me gustaria que siguieras con este y posteriormente le hagas los cambios que quieras, ya que si seguimos el mismo podre ayudarte mejor, queda a tu criterio, la verdad son superficiales los cambios, bueno el sistema de colocar los componentes varia un poco.
He hecho un buscador con los filtros que creo necesitas, si presionas el boton buscar, veras que con solo poner la primera letra o numero este va filtrando hasta encontrar lo que quieres, si das dobleclick te aparecera la informacion completa, o presionas aceptar, ya veras, pruebalo y me dices.
Con relacion al form clientes elimine la posivilidad de buscarlos desde el navegador, luego veras, mas adelante como hacerlo diferente y mejor.
Para que el programa te funcione perfectamente y encuentre la base de datos, sin tener que hacer nada, cuando lo recibas coloca la carpeta que se llama Gesatrans1, en esta ubicacion:
Cita:
C:\Archivos de programa\Borland\Delphi7\Projects\Gesatrans1
Espero que sea lo que necesitas.
Con respecto a los reportes se deberian hacer al final, ya que la manera de llamarlos es importante y normalmente tambien se filtran.
Lo de los botones es mas que nada adorno, veras que se puede hacer un boton hasta de un label, panel, edit, etc,etc.
Aqui te envio este:
http://rapidshare.de/files/37355584/Gesatrans1.zip.html
Saludos
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ejecutar Query Paso a Paso??? juliopag1 SQL 0 17-06-2006 01:51:10
Novato (Paso a Paso de una consulta) enecumene Conexión con bases de datos 2 29-05-2006 20:52:19
Motor Paso a Paso jluisx C++ Builder 3 12-09-2005 16:48:07
Red Paradox paso a paso Aldo Josué Conexión con bases de datos 2 13-12-2003 13:53:37
procedure paso a paso Silver Varios 1 26-08-2003 20:24:00


La franja horaria es GMT +2. Ahora son las 18:19:51.


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
Copyright 1996-2007 Club Delphi