![]() |
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.
: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? |
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. |
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. |
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, |
Gracias chicos por la info. Voy a probar y después les cuento.
|
Cita:
Digo, un Query con un Join... Cita:
Cita:
Un ejemplito, please...:confused: |
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, |
Cita:
Cita:
Otra vez, muchas gracias. |
La franja horaria es GMT +2. Ahora son las 03:50:02. |
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