Insertar fila con SQL

Soy la de lo arboles, que quiere actualizar dos tablas en un dw.
Probé lo que me recomendaste. Pero me sale este error:
Aplication Terminated
Error:Name not found accesing external object property id_campo
At line 17 in clicked cb_2 of w_arbolmed.
O sea hay un problema cuando trato de asignarle a una variable
El valor de la columna pero como no se donde esta mal te mando el código
Esta un poquito largo, pero supongo que esta bien localizado el problema.
boolean lb_commit
string ls_error
integer rc, row
string err
integer li_id_campo, li_id_arbol,li_id_empleado,li_id_rectitud, li_id_ramificacion
integer li_id_calidad, li_id_sanidad
string ls_parcela, ls_observaciones,ls_anio
DECIMAL{2} ld_dap,ld_alt_fuste, ld_alt_tot
//actualizo arbol
rc = dw_1.update()
if rc=-1 then
rollback;
messagebox("Estado", "Grabación incorrecta. No se grabó arbol")
else//si todo esta bien entonces actualizo mediciones
li_id_campo=dw_1.Object.id_campo[dw_1.GetRow()]//aqui esta el error//
ls_parcela=dw_1.Object.parcela[dw_1.Getrow()]
li_id_arbol=dw_1.Object.id_arbol[dw_1.Getrow()]
ls_anio=dw_1.Object.anio_medicion[dw_1.Getrow()]
li_id_empleado=dw_1.Object.id_empleado[dw_1.Getrow()]
ld_dap=dw_1.Object.dap[dw_1.Getrow()]
ld_alt_fuste=dw_1.Object.alt_fuste[dw_1.Getrow()]
ld_alt_tot=dw_1.Object.alt_tot[dw_1.Getrow()]
li_id_rectitud=dw_1.Object.id_rectitud[dw_1.Getrow()]
li_id_ramificacion=dw_1.Object.id_ramficacion[dw_1.Getrow()]
li_id_calidad=dw_1.Object.id_calidad[dw_1.Getrow()]
li_id_sanidad=dw_1.Object.id_sanidad[dw_1.Getrow()]
// inserta fila
insert into mediciones(id_campo, parcela, id_arbol, anio, id_empleado,&
dap, alt_fuste, alt_tot, id_rectitud, id_ramificacion, id_calidad, &
id_sanidad, observaciones)
values(:li_id_campo, :ls_parcela, :li_id_arbol, :ls_anio, :li_id_empleado, &
:ld_dap, :ld_alt_fuste,:ld_alt_tot, :li_id_rectitud, :li_id_ramificacion, :li_id_calidad, &
:li_id_sanidad, :ls_observaciones)
using sqlca;
lb_commit = ((sqlca.sqlcode = 0) and (sqlca.sqlcode=0))
If lb_commit then
commit using sqlca;
messagebox("Estado", "Grabacion correcta")
else
ls_error=sqlca.sqlerrtext
rollback using sqlca;
messagebox("error", ls_error)
end if
end if

1 respuesta

Respuesta
1
El mensaje que te sale dice: que no encuentra el nombre del objeto externo id_campo, el problema puede ser el siguiente, a veces el dw crea el campo poniendo primero el nombre de la tabla, como por ejemplo: mediciones_id_campo y no id_campo, puede ser ese tu problema. O también de que no exista el campo: id_campo, verifica bien el nombre en tu base de datos.
Cualquier otra duda, solo pregunta.
Ese parecería ser el problema. Pero ya lo probé.
Lo que pasa es que al hacer el dw, hice el join por id_campo, parcela e id_arbol.
Ahora bien, me quedo en el select
arbol.id_campo
arbol.parcela
arbol.id_arbol
Y a partir de ahí es de la tabla mediciones, o sea
mediciones. anio_medicion
mediciones. empleado ....etc
y probe porniendole
arbol_id_campo
arbol_parcela
arbol_id_arbol
y perfecto, ahora ya no esta el error en esta parte,sino que el error se fue a
anio_medicion
entonces siguiendo la logica hice
mediciones_anio_medicion
mediciones_empleado ...etc
pero oh! El error persiste.
Probe haciendolo al reves,haciendo updatable mediciones en el diseño del dw y cambiando en el select,pues creo que necesito que esta vez sea medicones.id_campo,medicones.parcela, medicioones.id_arbol para que actualize medicoines y trate de insertar con sql la primera tabla. y me sale el mismo error!!!no puede ser tan dificil!!!
Y bueno ya no se que hacer.
Si se te parece que me falto tener en cuenta algo más decime, o si no quisiera saber como podría enviar datos a otro dw y actualizar así.
Gracias
Marce
Que te parece si me mandas los campos de cada tabla y como es que lo relacionas y cual es la condición por la cual se debe actualizar; este retito me está gustando.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas