FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
problemas con el insert y el update
Hola:
El programa me da un error al insertar unos registros en una tabla, primero os explicare que es lo q pretendo con este codigo, asi tambien me podeis aconsejar si hay alguna manera mas simple de conseguirlo. En mi base de datos tengo una tabla q se llama articulos y otra q se llama modelos, como su nombre indica una contiene los articulos y la otra los modelos. Luego tengo otra tabla llamada articulos_modelos en la que relacionamos los codigos de los articulos con la de los modelos asi conozco los articulos que lleva cada modelo. Lo que necesito hacer es dar un nuevo modelo de alta pero basandome en uno anterior por lo q he pensado mediante sql primero crear el cod del nuevo modelo. luego insertar en la tabla de union los articulos que tiene el modelo original y finalmente a esos articulos q hay q no tienen anun el codigo de modelo asignado asignarles el nuevo codigo. Pero me da un error: El numero de valores de consulta y el numero de campos de destino son diferentes. Os pongo aquie el codigo y aver si podeis ayudarme. Muchas gracias. Código:
if edit1.text = '' then showmessage ('Introduzca el codigo del modelo') else if edit2.Text = '' then showmessage ('Introduzca el nombre del modelo') else begin principalpedidos.modelosquery.sql.text := 'insert into modeloxasis (codmodelo, nombre) values ('+quotedstr(edit1.text)+', '+quotedstr(edit2.text)+')'; principalpedidos.modelosquery.ExecSQL; edit1.text := ''; edit2.Text := ''; configmodelo.adoquery1.SQL.text := 'insert into modelo_articuloxasis select codarticulo from modelo_articuloxasis where codmodelo = '+quotedstr(configmodelo.label4.caption); configmodelo.adoquery1.ExecSQL; configmodelo.adoquery1.SQL.Text := 'update modelo_articuloxasis set codmodelo = '+quotedstr(edit1.text)+' WHERE (codmodelo Is Null)'; configmodelo.adoquery1.ExecSQL; |
#2
|
||||
|
||||
He modificado un poco tu codigo, limpiando las querys antes de añadir una nueva sql y mostrando mensajes para saber en que lugar falla excatamente.
Espero que te sirva. Código:
if edit1.text = '' then showmessage ('Introduzca el codigo del modelo') else if edit2.Text = '' then showmessage ('Introduzca el nombre del modelo') else begin principalpedidos.modelosquery.sql.Clear; //limpio antes de añadir principalpedidos.modelosquery.sql.text := ' insert into modeloxasis (codmodelo, nombre) '+ ' values ('+quotedstr(edit1.text)+', '+quotedstr(edit2.text)+')'; try principalpedidos.modelosquery.ExecSQL; except //CONTROL DE POSIBLES EXCEPCIONES ShowMessage('Fallo en primera query'); end; edit1.text := ''; edit2.Text := ''; configmodelo.adoquery1.SQL.Clear; //limpio antes de añadir configmodelo.adoquery1.SQL.text := ' insert into modelo_articuloxasis select codarticulo '+ ' from modelo_articuloxasis where codmodelo = '+ quotedstr(configmodelo.label4.caption); try configmodelo.adoquery1.ExecSQL; except //CONTROL DE POSIBLES EXCEPCIONES ShowMessage('Fallo en segunda query'); end; configmodelo.adoquery1.SQL.Clear; //limpio antes de añadir configmodelo.adoquery1.SQL.Text := 'update modelo_articuloxasis set codmodelo = '+ quotedstr(edit1.text)+' WHERE (codmodelo Is Null)'; try configmodelo.adoquery1.ExecSQL; except //CONTROL DE POSIBLES EXCEPCIONES ShowMessage('Fallo en tercera query'); end; end;
__________________
Saludos, Peter Investment |
#3
|
|||
|
|||
hola:
muchas gracias por la ayuda prestada, pero aun falla en la segunda query y me da el siguiente mensage: El numero de valores de consulta y el numero de campos destino son diferentes si se te ocurre algo... hoy llevo el dia torcido Última edición por tiagor64 fecha: 16-02-2005 a las 16:23:58. |
#4
|
||||
|
||||
Lo unico que se me ocurre es que la tabla modelo_articuloxasis
tenga mas de un campo ¿Puede ser?
__________________
Saludos, Peter Investment |
#5
|
||||
|
||||
Cita:
// Saludos |
#6
|
|||
|
|||
Muchisimas gracias.
Pues si q es lo q me decis, no tenia especificado en q campo insertar. siento molestar por una tonteria asi, pero juro q lo havia repasado y no lo veia. muchas gracias de nuevo. y os muestro como qeda el codigo. Código:
if edit1.text = '' then showmessage ('Introduzca el codigo del modelo') else if edit2.Text = '' then showmessage ('Introduzca el nombre del modelo') else begin principalpedidos.modelosquery.sql.text := 'insert into modeloxasis (codmodelo, nombre) values ('+quotedstr(edit1.text)+', '+quotedstr(edit2.text)+')'; principalpedidos.modelosquery.ExecSQL; configmodelo.adoquery1.SQL.text := 'insert into modelo_articuloxasis (codarticulo) select codarticulo from modelo_articuloxasis where codmodelo = '+quotedstr(configmodelo.label4.caption); configmodelo.adoquery1.ExecSQL; configmodelo.adoquery1.SQL.Text := 'update modelo_articuloxasis set codmodelo = '+quotedstr(edit1.text)+' WHERE (codmodelo Is Null)'; configmodelo.adoquery1.ExecSQL; edit1.text := ''; edit2.Text := ''; |
|
|
|