![]() |
Insertar datos desde una tabla a otra en una sola sentencia.
Hola amigos.
Tengo que realizar una inserción de datos a un archivo de toma de inventario. Los datos ajustados se toman desde otro archivo. El punto es que tengo que grabar los datos ajustados en el archivo TOMAINVTARIO, pero estos deben ir con un números de folio de ajuste, el cual no existe en la tabla inventario. Entonces la pregunta es: Como puedo tomar datos desde una tabla para llevarlos a otra, incorporando ademas un datos externo?. En este caso, la variable "Folio". Es posible hacer esto, en una sola sentencia SQL?.. Aquí va el como lo estoy haciendo. Alguna idea?.
Saludos. Gracias. |
Hola, no entiendo el problema :confused:
|
La sentencia SELECT..INTO parece que es correcta.
Dependerá de qué tipo sea el campo Folio, es posible que te de errores de sintaxis. Como bien dice [Casimiro] te falta aclarar cual es el problema ¿Obtienes algún error? ¿No hace lo que deseas o esperas? ... |
el valor del folio debe ser un texto
Pruebalo asi |
Hola.
Gracias a todos por responder. No sabia como incorporar una vbariable externa a la sentencia "SELECT... INSERT INTO". Con la respuesta de "oscarac", logre resolver el problema. Habia que encerrar el componente EdFolio.Text, en un: QuotedStr(). Pero curiosamente ahora se me presenta otro problema. Intenta grabar, pero me indica que el primer registro viola el indice primario y no graba. Ejemplo: En el archivo de Ajustes de inventario, tenemos:
luego de ejecutar la sentencia:
Me entrega el siguiente error, y no graba:
La tabla 'TOMAINVTARIO', esta actualmente vacia. Estos son los primeros registros que se grabaran. El indice primario esta compuesto por: Folio, Codigo. (Donde: Folio, es numerico, y Codigo, AlfaNumerico(20)). Alguna idea. Saludos. Gracias. |
¿Pero, "folio" es único?
|
Hola Casimiro.
Folio, es unico para cada proceso de toma de inventario. Pero se repite al grabar la toma de ajustes de inventario. Tomando el ejemplo anterior, el archivo deberia quedar asi:
En este caso, el Folio se repite, pero cada codigo es unico por cada producto. Y el Primary Key, esta formado por: Folio, Codigo. Para una segunda toma de inventario, el Folio seria 2, y en otra posterior 3, y asi sucesivamente. Pero me reclama que el primer registro viola el primary Key, aun cuando todavia no hay ningun registro en la tabla de tomas de inventario. Alguna sugerencia? Saludos. Gracias. |
Si no hay ningún registro entonces es que estás haciendo pruebas conectado a una base de datos que sí tiene registros.
|
chequea como tienes las llaves primary
chequea tambien si es que llega a grabar algun registro chequea el valor de folio ojo si es una tabla mysql las claves primary son diferentes cuando estan en innodb solo uedes usar un campo pero cuando esta en MyIsam puedes generar llaves primary key con combinaciones de campos si es SqlServer funciona como MyIsam |
Estimado colega delphi50jmb, si me lo permite, le propongo dos opciones de código. Le sugiero en lo posible utilizar parametros para pasar valores a sentencias SQL.
Clarifica mucho el código. [QUOTE En cuanto al error de primary key Cita:
Saludos cordiales |
Hola casimiro, cloayza, oscarac.
Tengo solo una base de datos con la cual hago las pruebas. y las vacio para hacer pruebas. Por eso me llama la atencion el problema de Primary key. De todas maneras volvere a revisar. En este momento estoy trabajando con bases Firebird. Tambien probare las sugerencias y comentarios de cloayza, para trabajar mas estructurado. Volvere a probar y les comento. Saludos. Gracias. |
Hola casimiro, cloayza, oscarac.
Tenian razon. Revise cuidadosamente la base de datos y el codigo delphi. Y sin darme cuenta estaba haciendo dos veces el llamado al mismo procedimiento. Corregi ese error y ahora funciono perfetamente. Gracias a todos por su paciencia y comentarios. Tendre presente los comentarios de cloayza, para tener un codigo SQL mas estructurado. Saludos y gracias. Jose Miguel B. |
La franja horaria es GMT +2. Ahora son las 11:14:29. |
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