PDA

Ver la Versión Completa : Más dificil que antes


hgiacobone
27-05-2003, 22:53:09
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.

:confused: ¿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.

:rolleyes: La cosa es que no se cómo armar el bucle que comentaba al principio. ¿Alguien que me entienda y pueda auxiliarme?

FRANKER
28-05-2003, 09:26:51
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.

José Luis Garcí
28-05-2003, 10:28:41
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.

Kafu
28-05-2003, 18:00:11
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,

hgiacobone
28-05-2003, 18:22:04
Gracias chicos por la info. Voy a probar y después les cuento.

hgiacobone
28-05-2003, 18:27:30
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...


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.


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...:confused:

Kafu
29-05-2003, 10:03:15
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,

hgiacobone
29-05-2003, 16:42:14
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.


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.