Actualizar más de una tabla
Leí una respuesta tuya a un problema parecido al mio.
Me encuentro con el problema de que tengo que actualizar dos tablas
en un DW, y bueno, es imposible. Me indicaron que use modify para
modificar la propiedad update de una tabla, pero no resultó.
La clave de la primera tabla(árbol) es:
id_campo+parcela+id_arbol
La clave de la segunda (mediciones)es:
id_campo+parcela+id_arbol+anio_medicion
No se si el hecho de que sean claves compuestas y casi iguales influyo
pero me daba un error rarísimo, como si quisiese grabar el campo de una
tabla en la otra por lo tanto lo tenia como desconocido.
Vencida por el modify, intento ahora actualizar la segunda tabla con
SQL, pero como esto tampoco lo tengo perfectamente claro, no lo conseguí.
No se cual es el problema pero el error es algo así:
Database C0038:SQLSTATE =37000 [Microsoft][Controlador ODBC Microsoft Access]
Error de sintaxis(falta operador)en la expresión de consulta '0 alt_tot=0'...
Quisiera aprender a hacerlo con SQL.
Aunque leí en una respuesta que se pueden enviar los campos a otro Dw y actualizarlos así.
¿Así qué ahora me gustaría saber como se hace esto? (O sea enviarlos a otro DW),
y en el caso de que sepas a que se puede deber el error que me sale con SQL,
¿Me podrías dar tu opinión acerca de que esta pasando?
Por si hace falta aclarar este es código(esta en un botón Aceptar):
boolean lb_commit
string ls_error
integer rc
string err
//actualiza arbol
rc = dw_1.update()
If (rc = 1) then
// actualiza mediciones
update mediciones
set id_campo = :id_campo,
parcela=:parcela,
id_arbol =:id_arbol,
anio=:anio,
id_empleado=:id_empleado,
dap=:dap,
alt_fuste=:alt_fuste
alt_tot=:alt_tot,
id_rectitud=:id_rectitud,
id_ramificacion=:id_ramificacion,
id_calidad=:id_calidad,
id_sanidad=:id_sanidad,
observaciones=:observaciones
where (id_campo=:id_campo)
and (parcela =:parcela)
and (id_arbol= :id_arbol )
using sqlca; ///en esta linea da el error
lb_commit = ((sqlca.sqlcode = 0) and (sqlca.sqlcode=0))
If lb_commit then
commit using sqlca;
else
ls_error=sqlca.sqlerrtext
rollback using sqlca;
messagebox("error", "ls_error")
end if
end if
Me encuentro con el problema de que tengo que actualizar dos tablas
en un DW, y bueno, es imposible. Me indicaron que use modify para
modificar la propiedad update de una tabla, pero no resultó.
La clave de la primera tabla(árbol) es:
id_campo+parcela+id_arbol
La clave de la segunda (mediciones)es:
id_campo+parcela+id_arbol+anio_medicion
No se si el hecho de que sean claves compuestas y casi iguales influyo
pero me daba un error rarísimo, como si quisiese grabar el campo de una
tabla en la otra por lo tanto lo tenia como desconocido.
Vencida por el modify, intento ahora actualizar la segunda tabla con
SQL, pero como esto tampoco lo tengo perfectamente claro, no lo conseguí.
No se cual es el problema pero el error es algo así:
Database C0038:SQLSTATE =37000 [Microsoft][Controlador ODBC Microsoft Access]
Error de sintaxis(falta operador)en la expresión de consulta '0 alt_tot=0'...
Quisiera aprender a hacerlo con SQL.
Aunque leí en una respuesta que se pueden enviar los campos a otro Dw y actualizarlos así.
¿Así qué ahora me gustaría saber como se hace esto? (O sea enviarlos a otro DW),
y en el caso de que sepas a que se puede deber el error que me sale con SQL,
¿Me podrías dar tu opinión acerca de que esta pasando?
Por si hace falta aclarar este es código(esta en un botón Aceptar):
boolean lb_commit
string ls_error
integer rc
string err
//actualiza arbol
rc = dw_1.update()
If (rc = 1) then
// actualiza mediciones
update mediciones
set id_campo = :id_campo,
parcela=:parcela,
id_arbol =:id_arbol,
anio=:anio,
id_empleado=:id_empleado,
dap=:dap,
alt_fuste=:alt_fuste
alt_tot=:alt_tot,
id_rectitud=:id_rectitud,
id_ramificacion=:id_ramificacion,
id_calidad=:id_calidad,
id_sanidad=:id_sanidad,
observaciones=:observaciones
where (id_campo=:id_campo)
and (parcela =:parcela)
and (id_arbol= :id_arbol )
using sqlca; ///en esta linea da el error
lb_commit = ((sqlca.sqlcode = 0) and (sqlca.sqlcode=0))
If lb_commit then
commit using sqlca;
else
ls_error=sqlca.sqlerrtext
rollback using sqlca;
messagebox("error", "ls_error")
end if
end if
1 respuesta
Respuesta de achafio
1