PDA

Ver la Versión Completa : Antes era re-facil


hgiacobone
28-05-2003, 17:24:33
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?

__hector
28-05-2003, 22:26:06
No diria que es mas dificil, sino simplemente una cuestión de mañas. De hecho, es mucho mas facil hacer un

Query.SQL.Text := 'INSERT INTO TABLA1(campo1, campo2)
SELECT campo1, campon from tabla2';
Query.execSQL;

que seleccionar los registros de la tabla, hacer un for e ir haciendo inserciones registro por registro, además de ser por mucho más óptimo.

En tu caso, especifica mejor el tipo de error y danos un poco de codigo. Es muy probable que sea un problema con conversion de tipos, pero eso tendremos que definirlo de acuerdo al error que te lanza la app.