Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-05-2003
Avatar de hgiacobone
hgiacobone hgiacobone is offline
Miembro
 
Registrado: may 2003
Ubicación: La Plata, Bs. As., Argentina
Posts: 165
Poder: 21
hgiacobone Va por buen camino
Arrow Más dificil que antes

Antes, con mi viejo Clipper, era sencillo tomar de una tabla ciertos campos y adicionarlos en otra. Simplementa bastaba con recorrer la DB con un bucle e ir adicionando esos registros a la segunda tabla; previo abrirlas con un simple comando USES y cerrarlas luego con otro simple comando CLOSE.

¿Por que esto en Delphi es tan deshumanamente complicado?

Me refiero al siguiente caso, que no puedo resolver y tal vez alguien tenga la gran amabilidad de ayudar a este póbre programador obsoleto con un simple ejemplillo, veamos:

En una base MDB (a quién se le puede ocurrir) hayuna tabla con campos similares a los de otra tabla Paradox-DB.
Digamos, ID_NUM, NOMBRE, DOMICILIO y LOCALIDAD, todos alfanumericos.
En la primer tabla (la Access) el campo LOCALIDAD es (A-2) porque conserva dígitos que referencian hacia otra tabla (DETLOC) que tiene campos llamados ID_LOC (A-2); DETALLE (A-30) por ejemplo. El campo ID_LOC sirve de enlace.

Siendo ID_NUM el campo clave en ambas DB (la Access y la Paradox) necesito recorrer la primera (y su tabla de detalles de localidades) e incorporar los registros a la segunda que se encuentra vacía.

Mediante BDE puedo abrir la Paradox pero no la Accesess, me da un "error_OLE_no_se_cuanto. Con ADO es mejor, ya que por lo menos la puedo abrir.

La cosa es que no se cómo armar el bucle que comentaba al principio. ¿Alguien que me entienda y pueda auxiliarme?
__________________
Gracias de antemano por vuestra ayuda.
·.:*:.·Yako·.:*:.·
Responder Con Cita
  #2  
Antiguo 28-05-2003
FRANKER FRANKER is offline
Miembro
 
Registrado: may 2003
Ubicación: Elche
Posts: 71
Poder: 22
FRANKER Va por buen camino
Lightbulb

Hola:
Hace tiempo realicé algo parecido con FireBird y Paradox. Para realizarlo me apoyé en el truco 244 de trucomania:

http://www.q3.nu/trucomania/truco.cgi?244&esp

Lo que hice fue un bucle a la tabla de Origen para ir añadiendo datos en la tabla destino (como explicas tu).
Si quieres ver el programita dimelo y te lo mando.

Saludos y suerte.
__________________
.:.::FRANKER::.:.
Responder Con Cita
  #3  
Antiguo 28-05-2003
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Como CLippero que aun soy pues no dejo de programar en amboos sistemas, te comento que estudies el truco que te dice FRANKER y que tengas un opoco de pasiencia ya que cuesta el cambio, si te comento que con el tiempo aprenderas a usar el delphi con mucha facilidad, rapidez, ojala este foro hubiese estado cunado enpece en Clipper, de todas maneras ten claro que usando la metodología de clipper puedes aprobechar gran parte de lo que sabes con unos pocos cambios para Delphi, por ejemplo de mas de 250 funciones con las que programaba en Clipper 5.1 he pasado la la mayor parte a delphi con pocos cambios y aún hoy para los reporst complicado prefieros pasarlos a un memo y luego imprimirlos, porque primero paso la información a este y luego lo imprimo, sin saturar el report que encima consume de lo lindo.

Un saludo desde Canarias.
Responder Con Cita
  #4  
Antiguo 28-05-2003
Kafu Kafu is offline
Miembro
 
Registrado: may 2003
Ubicación: Bilbao
Posts: 117
Poder: 22
Kafu Va por buen camino
Bueno a ver qué te parece la idea:

Si te he entendido bien, tenemos dos tablas en Access relacionadas que hay que migrar a una sola en paradox.
Pues obtengamos una fila entre esas dos tablas origen. Con un query que haga un join entre ambas tablas no te será difícil.
Y eso te deja con un query origen que puedes recorrer y para cuyas filas harás un insert en la tabla destino pasando los valores del query origen.
Yo creo que en el fondo hay poca diferencia con el viejo clipper, si ignoramos las diferentes formas de abrir las BD.

Un saludo,
Responder Con Cita
  #5  
Antiguo 28-05-2003
Avatar de hgiacobone
hgiacobone hgiacobone is offline
Miembro
 
Registrado: may 2003
Ubicación: La Plata, Bs. As., Argentina
Posts: 165
Poder: 21
hgiacobone Va por buen camino
Thumbs up

Gracias chicos por la info. Voy a probar y después les cuento.
__________________
Gracias de antemano por vuestra ayuda.
·.:*:.·Yako·.:*:.·
Responder Con Cita
  #6  
Antiguo 28-05-2003
Avatar de hgiacobone
hgiacobone hgiacobone is offline
Miembro
 
Registrado: may 2003
Ubicación: La Plata, Bs. As., Argentina
Posts: 165
Poder: 21
hgiacobone Va por buen camino
Cita:
Posteado originalmente por Kafu
Pues obtengamos una fila entre esas dos tablas origen. Con un query que haga un join entre ambas tablas no te será difícil.
OK... y eso qué es?
Digo, un Query con un Join...

Cita:
Y eso te deja con un query origen que puedes recorrer y para cuyas filas harás un insert en la tabla destino pasando los valores del query origen.
Claro es eso lo que quiero pero... NO SE COMO SE HACE.

Cita:
Yo creo que en el fondo hay poca diferencia con el viejo clipper, si ignoramos las diferentes formas de abrir las BD.
Un saludo,
Si, pero si ignoramos unas cunatas cosas más, es IMPOSIBLE entender cómo hacer esa operación.
Un ejemplito, please...
Responder Con Cita
  #7  
Antiguo 29-05-2003
Kafu Kafu is offline
Miembro
 
Registrado: may 2003
Ubicación: Bilbao
Posts: 117
Poder: 22
Kafu Va por buen camino
Imagínate las tablas siguientes:


en access : personas: codigopersona + nombrepersona
detallespersona: codigopersona + direccion

en paradox: personasdireccion:
codigopersona+nombrepersona+ direccion
quieres pasar de las dos tablas acces a la única paradox

Coges un tquery, en la paleta de componentes, lo conectas apropiadamente a la base de acces (esto con un poco más de tiempo te lo mando si quieres), y pones en la propiedad sql:
select * from personas p join detallespersona d on
p.codigopersona= d.codigopersona.
Haces un query1.active := true
abres tambiéna la tabla paradox destino debiadamente conectada.
while not query1.eof do
begin
tablaparadox.insert;
tablaparadox.fieldbyname('codigopersona').asstring:= query1.fieldbyname('codigopersona').asstring;
resto de campos igual;
tablaparadox.post;
query1.next;
end;

Imagino que el problema no es la lógica sino el detalle de las conexiones. A ver si en un rato (que estoy currando) te preparo un ejemplo.
Un saludo,
Responder Con Cita
  #8  
Antiguo 29-05-2003
Avatar de hgiacobone
hgiacobone hgiacobone is offline
Miembro
 
Registrado: may 2003
Ubicación: La Plata, Bs. As., Argentina
Posts: 165
Poder: 21
hgiacobone Va por buen camino
Lightbulb

Cita:
Posteado originalmente por Kafu
...Coges un tquery, en la paleta de componentes, lo conectas apropiadamente a la base de acces (esto con un poco más de tiempo te lo mando si quieres)
Estaría óptimo, asi comprendo esta nueva metodología de conexión, que por ahora no interpreto muy bien.

Cita:
Imagino que el problema no es la lógica sino el detalle de las conexiones. A ver si en un rato (que estoy currando) te preparo un ejemplo.
Un saludo,
Ok. Lo espero ansiosamente.
Otra vez, muchas gracias.
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 13:10:46.


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