• Domingo 6 de Octubre de 2024, 05:55

Autor Tema:  Memoria Insuficiente O Programador Insuficiente?  (Leído 2007 veces)

Catha

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Memoria Insuficiente O Programador Insuficiente?
« en: Lunes 27 de Diciembre de 2004, 04:58 »
0
Hola:

Espero me saquen de esta super duda:

Imaginense que estoy manejando  una base de datos en access por medio de el control ADO, no presenta inconvenientes cuando realizo una consulta sobre una unica tabla, pero cuando intento realizar una consulta sobre varias tablas como en un modelo entidad relacion, al tiempo con parametros especificos me genera inconvenientes;

No se si estoy mal pero yo configuro en la tabla de propiedades del adodc la propiedad recordsource así
Origen  del recordset adcommandtext= a mi comando sql

que utilizo asi:

select * from inmueble, propietario, estado

y cuando realizo la ejecucion mi pc se pone relento para cargar el programa y ademas presenta problemas de memoria insuficiente.

Ademas, no se si estoy escribiendo mal los parametros para ejecutar la consulta cuando se da click sobre el boton de busqueda que diseñe, es decir el source del recordset  y pues ovbiamente eso puede ser tambien otro error, no se si es por ahi el mal manejo de mis tablas.

Algo debo tener mal en alguno de estos dos pasos.

Perdon por lo extenso del mensaje, pero es super importante, saber como hago esto, si alguien ya ha tenido este problema y tiene alguna idea de como solucionar le agradeceria me colaborara.

De antemano gracias

juravi

  • Miembro activo
  • **
  • Mensajes: 94
    • Ver Perfil
    • http://spaces.msn.com/members/ingjuan
Re: Memoria Insuficiente O Programador Insuficiente?
« Respuesta #1 en: Lunes 27 de Diciembre de 2004, 15:07 »
0
:devil:

Hola y feliz navidad.
Una pregunta. Cuando levantas las tablas, es necesario todos los campos. <_< .? mira si utilizas select * esto trae todo y como veo de tres tablas y eso no siempre es necesario.

Mira por ejemplo

Si solo deseas el codigo, nombre y direccion de las tablas(es un ejemplo) en vez de usar select  * usas select codigo, nombre, direccion form tabla,...... y asi no fuersas tanto a tu maquina. Esta es un opcion, espero que te sirva.

 :comp:
Saludos
El Fin justifica los Medios
 _______________________
ﻞυגανι.Corp [The Designer]
<a href=\'mailto]No sé el secreto para llegar al éxito, pero sé que tratar de agradar a todos es lo que te llevará al fracaso... Piénsalo!!![/color]

DiabloRojo

  • Miembro MUY activo
  • ***
  • Mensajes: 220
    • Ver Perfil
Re: Memoria Insuficiente O Programador Insuficiente?
« Respuesta #2 en: Martes 28 de Diciembre de 2004, 00:32 »
0
Qué tal Catha?
Feliz Navidad. Creo que la forma en que estás intentando devolver todos los campos de las tres tablas es errónea. Te puedo sugerir que hagas una de dos cosas:

1.-Agrega dos controles ADODC más así tendrás uno para cada tabla con instrucciones simples SELECT * FROM nombre_tabla.

2.-Puedes usar la cláusula UNION con la consulta SELECT. De ésta cláusula no te puedo decir mucho porque nunca la he usado sólo sé que se utiliza para unir los resultados de varias consultas SELECT realizadas sobre tablas diferentes. Algo así:

Código: Text
  1.  
  2. SELECT * FROM nombre_tabla1 UNION SELECT * FROM nombre_tabla2 UNION SELECT * FROM nombre_tabla3
  3.  
  4.  

Una restricción para poder utilizar el UNION es que las tablas deben tener la misma estructura y que los tipos de datos de los campos coincidan de una tabla a otra.


Espero que te ayude en algo. Si alguna de las dos ideas te sirve no dudes en comentarmelo.


DiabloRojo.

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Memoria Insuficiente O Programador Insuficiente?
« Respuesta #3 en: Martes 28 de Diciembre de 2004, 09:11 »
0
Hola Catha.

Lo primero que deberías hacer es crear un índice para cada uno de los campos relacionados en las distintas tablas. Esto ayudará mucho. Establece la relación entre las tablas mediante una cláusula JOIN, LEFT JOIN, RIGHT JOIN o INNER JOIN según sea el caso. Por supesto que la unión debe hacerse por los campos que relacionan los registros en las tablas y que previamente habrás indexado.

Si además utilizas objetos ADO en vez de un control, notarás una notable mejora del rendimiento.

Por ejemplo:
Código: Text
  1.  
  2. SELECT A.Codigo, A.OtroCampo, B.Descripción, C.Precio
  3. FROM Tabla1 A LEFT JOIN Tabla2 B ON A.Codigo = B.Codigo
  4. LEFT JOIN Tabla3 C ON A.Codigo = C.Codigo
  5. WHERE A.Codigo=999
  6.  
  7.  

Chao.