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 07-09-2004
Tecnic2 Tecnic2 is offline
Miembro
 
Registrado: may 2004
Posts: 155
Poder: 21
Tecnic2 Va por buen camino
Unhappy 25000 registros, ni uno más.

Hola,

Me encuentro con el problema de que cuando voy copiando todos los registros de una tabla FoxPro hacia una tabla Access con la misma estructura a través de un bucle registro por registro, al cabo de un rato me da el siguiente error:
"Data provider or other service returned an E_Fail Status".
Y como cosa a destacar, decir que pasa cuando llevo copiados 25000 registros, ni uno más ni uno menos.

Me ayudais?

Gracias.
Responder Con Cita
  #2  
Antiguo 07-09-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.874
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Puedes poner qué componentes estás utilizando? ¿cómo te conectas a cada BD? ¿versión de Delphi? Si el código de copia no es muy rande tal vez tb ayudaría.

¿Has mirado ayuda o probado el TBachMove a ver si se genera el mismo error? Podría sevir para descartar algun origen desde donde se produce el error.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 07-09-2004
Tecnic2 Tecnic2 is offline
Miembro
 
Registrado: may 2004
Posts: 155
Poder: 21
Tecnic2 Va por buen camino
Post Aqui lo tienes.

Utilizo un TTable en el que està la tabla access donde guardo los registros, y un TADOQuery donde hago la consulta de la tabla FoxPro y de la que obtengo los registros. El código es el siguiente:

procedure TFAssistent.VolcarTiclin();
begin
ADOQueryAux.Close;
ADOQueryAux.SQL.Clear;
ADOQueryAux.SQL.Add('SELECT canped, codart, fectic, preven');
ADOQueryAux.SQL.Add('FROM ticlin');
ADOQueryAux.Open;

while not ADOQueryAux.Eof do
begin
TAccessDades.Insert;
TAccessDades.FieldByName('canped').AsString := ADOQueryAux.Recordset.Fields.Item[0].Value;
TAccessDades.FieldByName('codart').AsString := ADOQueryAux.Recordset.Fields.Item[1].Value;
TAccessDades.FieldByName('fectic').AsString := ADOQueryAux.Recordset.Fields.Item[2].Value;
TAccessDades.FieldByName('preven').AsString := ADOQueryAux.Recordset.Fields.Item[3].Value;
TAccessDades.Post;
ADOQueryAux.Recordset.MoveNext;
end;
end;
//_________________________________________________________________________
Responder Con Cita
  #4  
Antiguo 07-09-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.874
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Algunas cosas que puedes probar:
* Revisa la versión que tienes instalada de las MDAC. Sé que en algunos casos algunos errores de éste tipo se solventan instalando las últimas versiones.
* Revisa la propiedad CursorLocation y CursorType de la conexión de ADO, Prueba con las diferentes opciones.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 07-09-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Independientemente de localizar el fallo, yo quitaría:
TAccessDades.Post; del bucle y solamente lo pondría al salir del mismo.


Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #6  
Antiguo 07-09-2004
Tecnic2 Tecnic2 is offline
Miembro
 
Registrado: may 2004
Posts: 155
Poder: 21
Tecnic2 Va por buen camino
Unhappy Tampoco funciona

Siento decíros que nada de lo que me habéis dicho ha funcionado.
Por cierto, tengo Win2000, Delphi 7 y Access2000.
He probado incluso de aumentar hasta 512 - 768 mb's el archivo de intercambio de windows, pero nada de nada.
Responder Con Cita
  #7  
Antiguo 07-09-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.874
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Ves a la página de Tamaracka:
http://www.tamaracka.com/

En el cuadro de edición de "Search Borland* Newsgroups" escribe "E_Fail Status" (sin comillas) y busca.
Ahí puedes encontrar más info.

Suerte.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #8  
Antiguo 07-09-2004
Tecnic2 Tecnic2 is offline
Miembro
 
Registrado: may 2004
Posts: 155
Poder: 21
Tecnic2 Va por buen camino
Unhappy Notaciones para ayudarme

- Cambiar el CursorType y/o el CursorLocation no va a servir ya que todo se realiza en la misma máquina, los datos y los resultados están en el mismo ordenador.
- Poner el ".post" al final del bucle tampoco me ha cambiado nada, da el mismo error.
- La versión MDAC és la más actualizada.
- La función BatchMove sólo sirve para objetos BDE y yo tengo en el origen tablas FoxPro.
- He probado poner la propiedad "MaxRecords" del TADOQuery a 100 pero al hacer el bucle sobrepasa los 100 y sigue, o sea que me devuelve más registros de los que le pido.

Total, que a los 25000 registros se para, da el "Data provider or other service returned an E_Fail status" y allí se queda, me graba 25000 registros y el resto me dice que me los coma.
Responder Con Cita
  #9  
Antiguo 07-09-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 25
guillotmarc Va por buen camino
Hola.

Ni idea de donde puede venir el Error. En todo caso si no puedes solucionarlo, sortealo.

Es decir, copia los registros de 2000 en 2000. Cerrando y volviendo a abrir el Dataset con los datos originales, al llegar a los 2000 registros, aunque naturalmente, abriendo solo los registros que faltan por copiar (utilizando por ejplo, una variable que te indique el código de la clave primaria del último registro copiado).

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #10  
Antiguo 07-09-2004
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Poder: 22
sitrico Va por buen camino
No se si valga de algo, pero el límite de 25000 registros podría estar asociado al buffer de transacciones, a lo mejor falta un "commit" o algo parecido.

Suerte.
__________________
Sitrico
Responder Con Cita
  #11  
Antiguo 08-09-2004
Tecnic2 Tecnic2 is offline
Miembro
 
Registrado: may 2004
Posts: 155
Poder: 21
Tecnic2 Va por buen camino
Post Para cerrar el TTable

....y para cerrar el objeto destino, es decir el TTable, qué método tengo que utilizar?
Lo que hago ahora ya es que cada 5000 registros le hago un .Close y un .Active := False. y luego el paso inverso, pero sigue parandose en 25000.

Tengo que cerrar tambien el objeto origen? es decir el TADOQuery?
Responder Con Cita
  #12  
Antiguo 08-09-2004
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 21
basti Va por buen camino
Es posible que el error dependa de los valores del registro en el que da el error. Supongo que el campo 'fecttic' es de tipo "date", entonces sería mejor que utilizases la siguiente línea por si los formatos de fecha de las tablas es distinto
TAccessDades.FieldByName('fectic').AsDateTime := ADOQueryAux.Fields[2].AsDateTime;

Si este no es el problema, puedes usar TTable para acceder a FoxPro utilizando los controladores ODBC de FoxPro
Responder Con Cita
  #13  
Antiguo 08-09-2004
Raptor Raptor is offline
No confirmado
 
Registrado: jul 2003
Ubicación: Santo Domingo R.D.
Posts: 105
Poder: 0
Raptor Va por buen camino
hola chicos como estan.

Tecnic2
Por que no utiliza la herramientas que trae Delphi DataPum, no se que version tu tienes, pero si no tiene esta herramientas utiliza un BatchMove a este componentes solo tienes que ponerle de donde vienen los datos y para donde van y listo.


suerte. cualquier cosa estamos por aqui...
Responder Con Cita
  #14  
Antiguo 08-09-2004
Tecnic2 Tecnic2 is offline
Miembro
 
Registrado: may 2004
Posts: 155
Poder: 21
Tecnic2 Va por buen camino
Wink No funciona con objetos ADO

El BatchMove no funciona con objetos ADO, y para tablas FoxPro necesito ADO.
Responder Con Cita
  #15  
Antiguo 08-09-2004
Raptor Raptor is offline
No confirmado
 
Registrado: jul 2003
Ubicación: Santo Domingo R.D.
Posts: 105
Poder: 0
Raptor Va por buen camino
Una pregunta .
Tu objetivo no es migrar tus datos a otro Manejador de Datos ?.

Porque si tu resp. es si entonces la solucion que te planteo funciona!!!
Responder Con Cita
  #16  
Antiguo 08-09-2004
Tecnic2 Tecnic2 is offline
Miembro
 
Registrado: may 2004
Posts: 155
Poder: 21
Tecnic2 Va por buen camino
Post Objetivo

Mi objetivo es:

Abrir una tabla FoxPro de nombre "ticlin" a partir de un fichero "conta.dbc" que contiene el nombre de todas las tablas del programa comercial Wingest Carrera 2.5, y pasar todos los datos de algunos campos hacia una tabla Access.

Para abrir "conta.dbc" y obtener los datos de las tablas del programa necesito un objeto TADOConnection, en el cual enlazo un TADOQuery para hacer crear el origen de datos.

Pues eso.
Responder Con Cita
  #17  
Antiguo 08-09-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 25
guillotmarc Va por buen camino
Hola.

Yo utilizaria ADO tanto para conectar con FoxPro, como para conectar con Access. Piensa que el BDE hace años que no se actualiza. (Por cierto tanto para acceder a Access como para acceder a FoxPro, lo mejor es utilizar el Provider Jet 4 para ADO, y no el provider ODBC para ADO).

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #18  
Antiguo 01-04-2005
Ryu Ryu is offline
Miembro
 
Registrado: abr 2005
Posts: 62
Poder: 21
Ryu Va por buen camino
Lightbulb trata haber esto


tu problema no esta en las tablas de fox pro

por que no tratas de conectar tu tabla de fox pro a un ado query o ado table
si son tablas libres solo tienes que crear un alias o un odbc que contenga esas
tablas libre y conectalas normal

recuerda q son las tablas de fox pro son .dbf y estas son las tablas nativas de delphi.
foxrep:=esto es un odbc;
table1.database:=foxrep;
table1.tablename:=nombre de la tabla libre;
Responder Con Cita
  #19  
Antiguo 01-04-2005
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.934
Poder: 26
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Si mal no recuerdo el problema es el proveedor OLEDB de foxpro. NO sirve el de la version 6 de foxpro. Bajate el ultimo proveedor OLEDB de foxpro...
__________________
El malabarista.
Responder Con Cita
  #20  
Antiguo 01-04-2005
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.934
Poder: 26
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
A proposito... Si el runtime de foxpro esta instalado porque no usas las funciones de Fox? Puedes hacer es crear una automatizacion OLE (creo que es "VisualFoxPro.Application") y con DoCMD corres comandos de FoxPro. Es muho mas optimo asi...
__________________
El malabarista.
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


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


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