Ir al contenido


Foto

List Box


  • Por favor identifícate para responder
46 respuestas en este tema

#21 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.259 mensajes
  • LocationMéxico

Escrito 28 abril 2009 - 04:08

sip lo limpio aki me dijeron que era sano antes de usarlo limpiarlo
si estoy mal o no asi quedara aprendido como un proceso inecesario
y uso text para asignar el contenido del query
pregunta hay otro modo ???


Cuando usas Query1.SQL.Add si es necesario hacer un Quiery1.SQL.Clear, cuando usas Query1.SQL.Text no es necesario ya que estás sobreescribiendo lo que tienes anteriormente.


uso las variables por que luego me dice que los caracteres como la doble comilla son invalidos
descubri que si lo asigno a una variable y lo concateno no hay ese problema
si estoy mal diganme


Usar parámetros (que no variables) es lo mejor.

uso like por que necesito que sea la busqueda en donde si el operador del programa sabe que busca a un

" perez gomez odilon " pueda buscar "perez gomez o" y le aparescan odin olaf odilon y los que resulten por que la
base de datos esta mal capturada tienen nombre incompletos en ocasiones y abreviaciones etc etc por eso uso el like y el comidin " % " por que para usar el comodin deve de ser con like si voy mal me dicen


No veo nada malo en eso.

Salud OS
  • 0

#22 root

root

    mister

  • Miembro Platino
  • PipPipPip
  • 529 mensajes
  • LocationMexico D.F:

Escrito 28 abril 2009 - 04:14

haaaa
ok
pero mmm


como uso parametros

son esos que son constantes ???


  • 0

#23 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.259 mensajes
  • LocationMéxico

Escrito 28 abril 2009 - 04:19

haaaa
ok
pero mmm


como uso parametros

son esos que son constantes ???




delphi
  1. zquery1.SQL.Text:='SELECT cuenta.folio, cuenta.nombre from cuenta where cuenta.nombre like :parametro '+
  2.                  'GROUP BY cuenta.folio ORDER BY cuenta.nombre ASC LIMIT 11' ;
  3. aquery1.parambyname('parametro').Value := InputStr + comodin;



Salud OS

  • 0

#24 Caral

Caral

    Advanced Member

  • Administrador
  • 4.265 mensajes
  • LocationCosta Rica

Escrito 28 abril 2009 - 04:20

Hola
No vas a aprender mucho de mi eso lo tengo claro, estoy para aprender.
Te tratare de explicar mi punto de vista:
Delphi si hace algo es simplificar las cosas (tal vez por eso nunca pude con VB).
Ya la parte del Text te la explico Egostar (te me adelantaste wey. :D).
En tu caso entiendo lo de las variables, no se podrian usar parametros ya que lo que concatenas son signos que la BD te solicita, pero no me parecen su uso.
Comente el uso de LIKE en el query para buscar SOLO dos campos, lo veo extremista, ya que como el mismo Root dice, alenta.
Ahora mi opinion de la forma en que yo haria la consulta.
1- usaria un discriminador (asi me evito el mensajito).
2- Usaria en este caso un ZTable (si, si lo haria ya que solo ataco dos campos de una tabla y con esto tengo los datos en la mano de una sola vez).
3- haria un Filtro con Like (ya dije, con un discriminador).
4-Si quiero pongo un tope, pero para que si ya los cargue los datos.
5- Haria la consulta en el evento onChange del edit que me interese, asi van saliendo (filtrandos) los datos de una vez, sin esperar.
Mi humilde opinion.
Saludos


  • 0

#25 Caral

Caral

    Advanced Member

  • Administrador
  • 4.265 mensajes
  • LocationCosta Rica

Escrito 28 abril 2009 - 04:22

Hola
Ya vi la respuesta con los parametros de Egostar, Me retracto wey. :D :D :D
Saludos
  • 0

#26 Caral

Caral

    Advanced Member

  • Administrador
  • 4.265 mensajes
  • LocationCosta Rica

Escrito 28 abril 2009 - 04:36

Hola
Un ejemplo sencillo de lo que digo, cuatro lineas para hacer lo mismo.


delphi
  1. procedure TFBuscaArticulo.Edit1Change(Sender: TObject);
  2. var  Filtro : String;
  3. begin
  4.   If (Edit1.Text <> '') then
  5.   begin
  6.       ATArticulos.Filtered := False;
  7.       If CBFiltro.Text = 'Código' then Filtro := 'CodParte Like '''+Edit1.Text + '*'''
  8.         else If CBFiltro.Text = 'Descripción' then Filtro := 'Descripcion Like '''+ Edit1.Text + '*'''
  9.             else If CBFiltro.Text = 'Categorí­a' then Filtro := 'Categoria Like '''+ Edit1.Text + '*''';
  10.       ATArticulos.Filter := Filtro;
  11.       ATArticulos.Filtered := True
  12.   end
  13.   else ATArticulos.Filtered := False;
  14. end;


El discriminador es un combobox (CBFiltro).
Saludos
  • 0

#27 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.259 mensajes
  • LocationMéxico

Escrito 28 abril 2009 - 04:41

Ya la parte del Text te la explico Egostar (te me adelantaste wey. :D).


Ya vi la respuesta con los parametros de Egostar, Me retracto wey. :D :D :D


:p

Salud OS "wey" :D :D :D
  • 0

#28 Caral

Caral

    Advanced Member

  • Administrador
  • 4.265 mensajes
  • LocationCosta Rica

Escrito 28 abril 2009 - 04:43

Hola
Tu me enseñaste ahora no te quejes puñal...Jajajaja
Saludos
PD. Creaste un monstruo :D :D :D.
  • 0

#29 root

root

    mister

  • Miembro Platino
  • PipPipPip
  • 529 mensajes
  • LocationMexico D.F:

Escrito 28 abril 2009 - 04:51

Hola
No vas a aprender mucho de mi eso lo tengo claro, estoy para aprender.
Te tratare de explicar mi punto de vista:
Delphi si hace algo es simplificar las cosas (tal vez por eso nunca pude con VB).
Ya la parte del Text te la explico Egostar (te me adelantaste wey. :D).
En tu caso entiendo lo de las variables, no se podrian usar parametros ya que lo que concatenas son signos que la BD te solicita, pero no me parecen su uso.
Comente el uso de LIKE en el query para buscar SOLO dos campos, lo veo extremista, ya que como el mismo Root dice, alenta.
Ahora mi opinion de la forma en que yo haria la consulta.
1- usaria un discriminador (asi me evito el mensajito).
2- Usaria en este caso un ZTable (si, si lo haria ya que solo ataco dos campos de una tabla y con esto tengo los datos en la mano de una sola vez).
3- haria un Filtro con Like (ya dije, con un discriminador).
4-Si quiero pongo un tope, pero para que si ya los cargue los datos.
5- Haria la consulta en el evento onChange del edit que me interese, asi van saliendo (filtrandos) los datos de una vez, sin esperar.
Mi humilde opinion.
Saludos



a ver si entendi entonces mmm
quedaria algo asi como uno de esos parametros que te van sugiriendo ???

dejame intentarlo igual y se ve mejor en el programiux
pero a ver lo que no me queda claro 100 % es la parte del discriminador
a vi el codigo
pero mmmm que hace o que de cualquier modo orita le pregunto a don google
  • 0

#30 Caral

Caral

    Advanced Member

  • Administrador
  • 4.265 mensajes
  • LocationCosta Rica

Escrito 28 abril 2009 - 07:53

Hola
Este ejemplo lo hice hace algún tiempo, cuando tenia. :D
El ejemplo tiene varios tipos de filtro, tanto por edits, como por combobox (discriminador).
Para que funcione:
1- Descomprimelo del zip.
2- Pones en algun lado el archivo.
3- Lo cargas con delphi (seguro te dira que la dirección de la bd no es la correcta, bueno, le das doble click al AdoConnection y la cambias).
4- Lo ejecutas.
También lo puedes ejecutar con el ejecutable, pero no veras el codigo que es la parte que te interesa.
Con esto veras que se hacen filtros con los query, pero sin complicar las sentencias sql.
Te va a servir de mucho por su simpleza.
Recuerda que soy Novato así­ que no esperes mucho, cualquier duda, pregunta, que seguro alguno de nuestros maestros sabrá la respuesta.
Saludos

PD:
El ejemplo:
veras que tienes 4 cuadros.
en el primero simplemente modificas la tabla
el que sigue hacia la derecha es un filtro con combobox.
el de abajo a la izquierda filtra el contenido de un campo notas
el de abajo a la derecha es un filtro con edit.
hay un boton que muestra otro form, este es un filtro que ademas hace calculos.

Archivos adjuntos

  • Archivo adjunto  421_.zip   425,76KB   2 descargas

  • 0

#31 eduarcol

eduarcol

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.483 mensajes
  • LocationVenezuela

Escrito 29 abril 2009 - 07:07

Ok mi opinion, con el perdon de Carlos,

Realizar esta operacion con tablas no debe ser una opcion, ya que aumentarias el tiempo de espera para cualquier operacion ya que lo que haces con la tabla es un vulgar



sql
  1. SELECT * FROM mitabla



Ahora 90 segundos indican que hay algo mal, quizas si nos explicas como es tu configuracion del servidor a ver que esta sucediendo. Quizas si intentas otra consulta sobre la misma tabla.
  • 0

#32 Delphius

Delphius

    Advanced Member

  • Moderador
  • PipPipPip
  • 6.295 mensajes
  • LocationArgentina

Escrito 29 abril 2009 - 08:48

Pues... ya me perdí­ :s

Ahora si las consultas demoran mucho yo dirí­a que revisaras los í­ndices y que le agregues si no tienes. Y si estás trabajando en red, revisa la configuración.

Saludos,
  • 0

#33 root

root

    mister

  • Miembro Platino
  • PipPipPip
  • 529 mensajes
  • LocationMexico D.F:

Escrito 29 abril 2009 - 09:32

una consulta digamos normal
de la de comparacion " = "
son rapidas de 2 a 3 seg ( a veces 4 cuando todos estan haciendo consultas )

las que tardan un friego
son las de like con comodin

y digo realmente hasta donde se eso es normal ya que compara toooodas las cadenas de texto a ver si coinciden y luego si es que coinciden con algo mas

pero hay va
es un Mysql 4.1.20

en la tabla cuenta que es en la que mas trabajo a esta altura del proyecto
tengo los sig indices
credito
folio
ifolio
nombre

la estructura de la tabla es la siguiente


id:cuenta int         10 key
folio         varchar 20
ifolio         int         11
nombre varchar 100
apellidos varchar 100
rfc         varchar 100
imss         varchar 100
elector varchar 100
pais         varchar 100
ciudad varchar 100
poblacion varchar 200
colonia varchar 200
domicilio varchar 200
pc         varchar 10
tel_domicilio_1 varchar 20
tel_domicilio_2 varchar 20
tel delular         varchar 20
nombre_ref_1 varchar 50
tel_ref_1 varchar 20
nom_ref_2         varchar 50
tel_ref_2 varchar 20
asignacion         varchar 50
comercio varchar 30
seguimiento         varchar 200
observaciones varchar 200
id_status int         10
cartas enviadas char          3
llamadas char         3
fecha_1 date
fecha_2 date
fecha_3 date
fecha_4 date
fecha_5 date
no:credito int 10
id_cartera int 10
id_despacho int         10
asignada inr         1


digo no tuve yo nada que ver con el diseño de la tabla
yo cuando llegue asi estava y me dicen que no la cambie
que trabaje sobre lo que hay
de hecho no me dejaron dar mi opinion cuando les dije firebird
que finalmente lo que alo mejor hago y me la rifo es poner una instancia de firebird
y migrar los datos y decirle al patron mire trabaja mejor que lo migramos o
seguimos en lo mismo

de hecho en un principio keria ponerles el Sugar CRM pero me pido mysql 5 minimo
y no me dejaron actualizar por que el sistema esta basado en 4 y no no no
dios sabe que pueda pasar

Gracias y espero sus comentarios










  • 0

#34 Caral

Caral

    Advanced Member

  • Administrador
  • 4.265 mensajes
  • LocationCosta Rica

Escrito 29 abril 2009 - 10:25

Hola
Veo que ninguno bajo el ejemplo que puse. :p
Bueno, la idea es aprender.
Ahora:
Con relación al uso de tablas o querys:
Para mi es como trabajar con windows, lo que hace es cargar en memoria lo que necesita para trabajar, asi cuando se necesita es mas rapido.
Las sentencias sql lo que hacen es buscar partes de un todo, pero cuando se hace un filtro, se tiene que revisar todo, hacer un recorrido, si no, no encuentra lo que se busca, la diferencia es que solo trae lo que se necesita y no todo.
Solo doy mi opinión, con la BD que tengo que ya sabemos que no es eficiente, con una tabla con mucha información, mas de 5 años, con un sistema en red, la información que filtro no me tarda ni dos segundos en aparecer.
Cuando probé MySql, lo primero que note fue la lentitud, pero esta se soluciono usando Zeos, que es lo que root esta usando.
Saludos
PD: esto me es tan familiar como que a algunos les gusta crear todos los form al iniciar la aplicación y a otros, como yo, según se van necesitando, se crean y destruyen.
O también como cargar en el datamodule todos los query y tables y activarlos al principio.
Cada panadero hace su pan a su manera.




  • 0

#35 root

root

    mister

  • Miembro Platino
  • PipPipPip
  • 529 mensajes
  • LocationMexico D.F:

Escrito 29 abril 2009 - 10:35

no si no es que no lo kiera bajar sino que
estava aki haciendo unas cosas de rutina de la oficina
kieren unos cambios en las voces del IVR y demas si lo bajaba lo iva a perder
mejor lo bajo cuando tenga asi como que el tiempo para dedicarle mi atencion
y asi complenderlo master
DIGI DIGO
pero nomas que termine las voces del IVR lo checo a detalle
por que nomas checarlo asi por que si no le veo caso
  • 0

#36 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.259 mensajes
  • LocationMéxico

Escrito 29 abril 2009 - 10:53

Hola
Veo que ninguno bajo el ejemplo que puse. :p


^o| *-) Cual ejemplo ?

Salud OS
  • 0

#37 root

root

    mister

  • Miembro Platino
  • PipPipPip
  • 529 mensajes
  • LocationMexico D.F:

Escrito 29 abril 2009 - 10:56

Filtros con ADO.zip

al final de la pagina 2



  • 0

#38 eduarcol

eduarcol

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.483 mensajes
  • LocationVenezuela

Escrito 29 abril 2009 - 12:16

Querido Carlos, lo que dices es cierto, pero en access ya que es una base de datos de tabla plana o escritorio para lo cual un servidor no es mas que una carpeta compartida.  Cuando se habla de sistemas gestores de base de dato la regla principal es dejar que la mayor parte del trabajo la haga el servidor y el cliente solo recibe unos pocos resultados.

Con respecto a la lentitud no debe ser tan "normal", al menos que estemos hablando de una cantidad astronomica de registros,  porque no haces la migracion a Firebird solo de esa tabla para hacer las pruebas.
  • 0

#39 Caral

Caral

    Advanced Member

  • Administrador
  • 4.265 mensajes
  • LocationCosta Rica

Escrito 29 abril 2009 - 12:20

Hola
Me gusto lo de querido, yo también te quiero. (l) (k) (f)
Saludos
PD: Para que vean en otros foros que aquí­ si nos queremos. :D :-#

  • 0

#40 root

root

    mister

  • Miembro Platino
  • PipPipPip
  • 529 mensajes
  • LocationMexico D.F:

Escrito 29 abril 2009 - 12:23

ok pues no realmente no es astronomicaaa
tablas 37
muchas solo con asi como que adornos como la de status que solo contiene 3 valores
rows 9,459,463
data len 1.9 gb
index len 152.2 Mb
pero si migrare esa table a ver que pasa


  • 0