Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-06-2007
Avatar de casacham
casacham casacham is offline
Miembro
 
Registrado: abr 2006
Ubicación: Cordoba->Argentina. Arboleas->Almeria->España
Posts: 184
Poder: 19
casacham Va por buen camino
Cool No se banca datos KiloMetricos

Hola amigos del foro

Otra vez aqui comunicandonos y yo planteando problemas. Esta vez se trata de una base de datos creada con Acces que contiene muchos millones de registros, mas de 40 millones para ser algo mas preciso (PAdron Electoral Argentino). El tema es que cuando quiero acceder a esta base de datos con los clasicos TAdoConection y TAdoTable, al realizar Adotable1.Open comienza a leer el disco y se tarda unos minutos para finalmente devolverme un error que dice que FALTA MEMORIA. Me da la impresion que quisiera cargar todos los registros en memoria al mismo tiempo. Mi idea era desarrollar una aplicacion que pudiera administrar esta base de datos realizando diversas consultas. Pero encontre este escollo en el primer paso y no puedo resolverlo. En definitiva no puedo conectar mi aplicacion con la base de datos. Estoy leyendo manuales que busque en internet de ADO y Deplhi, pero la verdad es que no me dicen nada al respecto. ¿Alguien sabra algo por aqui?
Responder Con Cita
  #2  
Antiguo 02-06-2007
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 21
gatosoft Va camino a la fama
Hola casacham,

No conzco muy bien el funcionamiento de estos componetes, pero te puedo decir que la utilización de un componente TTable no es muy recomendada, precisamente por que la tabla se carga toda en memoria con el open, pues no se le da ninguna restricción...

Lo mas recomendado es utilizar un componente TQuery (supongo que existirá un TAdoQuery, o algo asi) y traer los registros filtrados, solo el o los que necesites (nunca vas a necesitar en pantalla a los 40 millones, ni siquiera tendria sentido tener cargados al tiempo 10.000 o 1.000 registros al tiempo (aunque uno nunca sabe)....

Podrias en un caso extremor querer tener en pantalla todas las personas que votan en una misma mesa o un mismo lugar... en fin...

Por otro lado, te recomiendo que cambies tu motor de base de datos, pues Access es una base de datos "de combate" y como todos los productos M$ se comen todos los recursos del sistema para poder trabajar.... hay otras opciones que tambien funcionan como base de escritorio que son muy buenas... InterBase, PostgreSQL (la recomiendo), Sql-server, etc.

Bueno no sabria en que mas ayudarte... por ahora no se si puedes hacer esta consulta en esa base de datos y me envias los resultados para mirar unos aspectos tecnicos...

SELECT DIRECCION, TELEFONO, E_MAIL
FROM ELECTORES
WHERE NOMBRE='NATALIA'
AND APELLIDO='OREIRO'

Responder Con Cita
  #3  
Antiguo 02-06-2007
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 19
Faust Va por buen camino
Fraude electoral

Wow, que harás o que planearás hacer con el padrón electoral argentino, mmm, no creo que sea algo bueno.

Más bien a mi no me gustaría que esa información estuviera al alcance de cualquiera.
__________________
Herr Heins Faust
Responder Con Cita
  #4  
Antiguo 03-06-2007
Avatar de xander
xander xander is offline
Miembro
 
Registrado: jul 2006
Posts: 499
Poder: 18
xander Va por buen camino
Un médico cirujano, programando en Delphi, contra el Padrón Electoral Argentino, que es una base de datos de 40 milllones de registros, montada en Access!!!!

Si esto no es surrealismo entonces ya no se que lo sería...

Un saludo, Doitor...
__________________
"Hey, nena, debe ser genial ser tú y verme a mí mismo..."
Responder Con Cita
  #5  
Antiguo 03-06-2007
Avatar de casacham
casacham casacham is offline
Miembro
 
Registrado: abr 2006
Ubicación: Cordoba->Argentina. Arboleas->Almeria->España
Posts: 184
Poder: 19
casacham Va por buen camino
Cool No tiene nada que ver

Lo lamento por xander y por Faust . El hehco de que opinen asi es que son gente de poco confiar, com podría encargarles que realizaran una aplicacion para una empresa si estan pensando en utilizar datos para objetivos no aprobados, es de poca etica lo que sus lineas denotan detras de ustedes. A ver, que es lo que se puede hacer o no con eso, es algo que no les interesa. Ademas aqui no se les esta pidiendo que opiniones sobre utilidad o no de datos, para el chismoserio existen otros foros donde sus comentarios tal vez sean aplaudidos. Aqui a nadie le interesa esos comentarios.
Para los que les interese saber sobre el proyecto, estoy en un proceso de aprendizaje de programación de base de datos y necesitaba conseguir alguna con varios miles de registros, que mejor que lo que consegui. Millones de registros. El punto es aprender a manipular grandes volumenes probando los limites de Delphi. El desafio fue traspasar esos datos desde dBase a tablas de Acces, que con una aplicacion de Delphi lo logré. El punto es que delphi no puede abrir las tablas con los componentes mencionados ni siquiera con TAdoQuery ya que solo cambia la forma en que se conecta con la base de datos pero no el procedimiento madre, generandose el mismo error y demoras. Pero el desafio es: Si Acces puede abrir y manipular esa gran cantidad de datos, como no puedo hacerse a traves de Delphi. Debe existir alguna manera de lograrlo.

pd: voy a conseguirme tambien el padron mexicano para ver que hago con el. Todo esta en internet, solo es cuestion de bajarlo a tu ordenador
Responder Con Cita
  #6  
Antiguo 03-06-2007
Avatar de xander
xander xander is offline
Miembro
 
Registrado: jul 2006
Posts: 499
Poder: 18
xander Va por buen camino
Ahora resulta que describir una situación particular como surrealista me hace un tipo de poca ética y de dudosa confiabilidad... vaya, generalmente las muchachas me dicen eso por ahí de la segunda o tercera invitación a cenar pero no de primera y pata... bueno, alguna vez tenía que suceder...

No se arlebreste doitor que no era en mal plan... solo yo con mi apestoso e irreverente humor negro, que nunca me doy a entender...

Tu problema debe ser la forma como te conectas a esa base de datos... seguro que cuando abres la tabla en acces no esta tratando de cargarse a memoria los 40 millones de registros.. y tu programa (dependiendo de la forma en como te conectes) al darle Open a la tabla o Consulta si lo está tratando de hacer... además no me imagino para que quieras abrir una tabla de 40 millones nomás así porque si, a menos que le quisieras pasar un super complicadisimo algoritmo de DataMining...

Mi recomendación... Access no es para esos trotes... si de verdad quieres aprender a manipular grandes cantidades de información, utiliza un servidor SQL y ahi si encontrarás muchas formas de explotar la información usando Vistas, Procedimientos Almacenados, Triggers y demas chunches... con access te limitarás más de lo que aprenderás...
__________________
"Hey, nena, debe ser genial ser tú y verme a mí mismo..."
Responder Con Cita
  #7  
Antiguo 03-06-2007
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Yo estoy con xander, porque en la "vida real" no sirve para nada traerse una lista de millones de registros, además de que Access es una base de datos "doméstica" no "profesional".
Aquí tienes un hilo donde se explica gráficamente la diferencia entre Access, Paradox y Firebird.

P.d. En cuanto a la base de datos que tienes, no sé en tu país, pero aquí en España, creo que ya estarías en la cárcel además de tener que pagar una multa multimuchimillonaria
Responder Con Cita
  #8  
Antiguo 03-06-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
casacham, ¿has probado modificar la propiedad CursorLocation del ADOTable? Para esa cantidad de información, te convendría más clUseServer que el default clUseClient.

// Saludos
Responder Con Cita
  #9  
Antiguo 03-06-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Y algo asi:
Código Delphi [-]
AdoTable1.Open limit 50;
o algo asi:
Código Delphi [-]
Adoquery1.sql.text:= ' Select * from TuTabla limit 50';
Pregunto: Maestro Roman, se puede?.
Saludos
Responder Con Cita
  #10  
Antiguo 03-06-2007
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 19
Faust Va por buen camino
Lo malo no está en lo que yo piense

Lo malo no está en lo que yo piense. Yo más bien pienso que sería de poco confiar alguien capaz de obtener la base de datos del padrón electoral para practicar, que tal que por ahí algún malicioso o por causas de seguridad informática en tu oficina la obtiene sin tu autorización.

Y es que Casacham es psiquiatra o psicólogo para psicoanalizarme con un par de líneas que escribí y saber que tan confiable soy.

Oye y de paso no podrías conseguirme la base de datos de México y la de el Salvador porfa. Mándame cotización.
__________________
Herr Heins Faust
Responder Con Cita
  #11  
Antiguo 03-06-2007
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 19
Faust Va por buen camino
Perdón no contesté

Ah al usar el TADOQuery usa una instrucción SQL que te pudiera devolver un número pequeño de registros, por ejemplo:

Código SQL [-]
SELECT *
FROM Votantes
WHERE Edad=90

También ya checaste si esa base de datos se abre sin problema en Access, si es que está demasiado grande en tamaño o está demasiado lenta en Access trata de usar el "Compactar y reaparar" de access en el menú herramientas, esto me ha funcionado un par de veces.
__________________
Herr Heins Faust
Responder Con Cita
  #12  
Antiguo 03-06-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Aunque estoy de acuerdo que con Access puede hacerse, recomiendo encarecidamente usar una base de datos SQL (Firebird, por ejemplo).

Las técnicas de programación son distintas y "te obliga" a hacer un buen uso del sistema.

En realidad podrías usar un objeto TTable con una base de datos SQL, pero en los manuales te dice claramente que no debe hacerse, de hecho te dá las bases para crear una base de datos robusta (en su estructura), rápida (en cuanto a creación de índices, selección de 1 solo registro en lugar de 3.000, etc) y una gran variedad de soluciones para atacar situaciones difíciles (triggers, Store procedures, etc).

Después de usar Firebird, me avergüenza las cosas que hice con paradox..... .

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #13  
Antiguo 04-06-2007
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Lepe
[..] Después de usar Firebird, me avergüenza las cosas que hice con paradox..... .
Saludos
Te entiendo, aunque en mi caso no fue con paradox
Responder Con Cita
Respuesta



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
Crear base de datos y cargar datos desde delphi Albano MySQL 4 17-05-2007 20:01:18
Herramienta case para diccionario de datos de base de datos firebird mcalmanovici Firebird e Interbase 1 11-02-2007 15:17:37
Como pasar datos de una hoja de Excel a Bases de Datos de Paradox Goyo OOP 1 06-02-2007 01:57:20
Guardar en 1 base de datos SQL, datos procedentes de 2 tablas distintas adaypr C++ Builder 1 05-09-2006 11:56:33
Reto Para Expertos En Base De Datos Y Tipos De Datos.... (blob) frankmch Conexión con bases de datos 2 08-09-2003 19:44:52


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


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