![]() |
insert into tabla values (select *... ¿?
Hola, que tal.
Tengo un TQuery con la siguiente instruccion SQL:
Esa instruccion me regresa una serie de registros que estan almacenados en una tabla y esos registros, necesito insertarlos en otra tabla. El problema es que esos registros tienen muchísimos campos (como 70) y seria muy dificil hacer insert into tabla values (x1,x2,x3, ....,x70);.. se imaginan ? Mi pregunta es saber si puedo hacer algo como:
y como es uqe hay que hacerlo. O que otra opción me dan. Uso delphi 2006 y la base de datos esta en Access Gracias ! |
Creo que se puede hacer mas o menos como tu has dicho:
Creo que algo asi funcionaría, sin poner "Values". Además de esa versión, en caso de que la tabla no este creada, también tienes otra manera de hacerlo (que al menos funciona con bases de datos oracle, no se si con el resto también).
Eso lo que haría sería crearte una tabla con las columnas necesarias utilizando el mismo tipo de datos que las columnas de la tabla origen seleccionadas. Espero te sirva |
|
Saludos
Cita:
Cita:
|
Esa serìa la manera
insert into tabla(CamposAgregar) select CamposAgregar from SOSTAT_RESUL where SOSTAT_RESUL.PNTNAM like :nomenclatura and SOSTAT_RESUL.SUBNAM like :sSubE order by SOSTAT_RESUL.PNTNAM;
|
Hago lo sigueinte:
pero en Qinte.Prepare; Marca el siguiente error: Código:
'Invalid use of keyword. |
Vi un error que tengo:
Debo de hacer ExcecSQL en lugar de Open. Pero igual sigue sin funcionar. El error me lo da en el prepare. Quice hacer la prueba simplemente haciendo
pero al llegar al momento donde se ejecuta el query, me dice que la tabla es de solo lectura... Pero la tabla no es de solo lectura... Ya me desespero ese error... es lo único que me falta para terminar mi proyecto :( |
Hola a todos.
Supongo que las dos tablas tendran campos similares, si es asi puede que te sirva esto (es un poco basto): Código:
query1.open; |
Genial !!
eso si funcionó a las mil maravillas !! Gracias ! |
Hmm...
Creo que habñé demasiado rápido. Con esa solución sí pude insertar los campos en la otra tabla, pero tiene un detalle. El módulo que estoy haciendo, toma los registros de una tabla, los ordena de acuerdo a cierto criterio (muy especial y extraño, por cierto) y los inserta en otra tabla ya ordenados. EL ordenamiento lo logro hacer en memoria, los datos los muestra ordenados por medio de un treeview (...ó Memo ó StringGrid). Por lo que la instrucci´pn de BatchMove la puse antes de hacer que la clave en la que estaba se mostrara en le programa, para que según yo, se insertaran en la tabla de la misma forma que se "insertan" en el StringGrid por ejemplo. Pero la inserción en la tabla la hace de una forma completamente diferente, de hecho, creo que los campos los ingresa ordenados alfabeticamente (es así o será que solo estoy paranoico). O acasi asi funciona esa función ? |
Hey !!
SI, definitivamente si los ordena en orden alfabetico... Hay alguna forma de que los ingrese secuencialmente ?? |
Hola jorgesl:
No estoy muy seguro, pero si en la tabla que recibe los datos no tiene indices, creo que lo ingresará con el "order by" que tengas puesto en la Query. |
Definitivamente si jorgesl.
Hice la prueba ordenando por varios campos y los ingresa por el orden de la Query. Tambien lo hice sin poner order by en la Query y los inserta en el orden que encuentra en la tabla. |
Esto es parte de lo que hago:
Hay alguna manera de hacer que esa instruccion los agregue en el orden que los vaya encontrando en el query ? osea, uno abajo del otro :P Es lo unico que que necesito, con insert no funciona y lo que requiero es un insert, que siemrpe los reguistros los agregue al final de la tabla... Esa instruccion sirve para mover el contenido de una tabla a otra, pero yo lo hago con un query, el contenido del query lo muevo a la tabla destino y el query, siempre me regresa un solo registro. |
Sigo con el mismo prblema.
Ya traté haciendo
Pero al final, sólo deja la tabla con un registro (el último) |
Algo muy raro ha pasado.
De repente funciono...
Pero ahora quiero implementarlo en otra función... y lo hace mal de nuevo... No entiendo lo unico que cambia es Table1 por Table2... Esta embrujado mi DevStudo 2006?:eek: |
La franja horaria es GMT +2. Ahora son las 21:35:43. |
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