Pasar datos de un DW a otro DW en Power Builder

Tengo dos dw, uno de tipo Grid y otro Freeform, donde ambas están ubicadas en ventanas diferentes. Te muestro el código:
--------------------------------------------------------------------------------------------
= dw_1(freeform) boton "Traspasar datos" evento clicked del dw =
str_equipo miequipo //defini una estructura
if dwo.name="b_1 " then
    open (w_buscar_z)
    miequipo=message.powerobjectparm
    this.setitem(row,"id_equipo",miequipo.id_equipo)
    this.setitem(row,"nombre_equipo",miequipo.nombre_equipo)
end if
---------------------------------------------------------------------------------------------------------
= dw_2(grid) boton "Cerrar ventana" evento clicked del boton =
str_equipo equipo
equipo.id_equipo=dw_1.getitemnumber(dw_1.getrow(),1)
equipo.nombre_equipo=dw_1.getitemstring(dw_1.getrow(),2)
-------------------------------------------------------------------------------------------------------------
= dw_1(freeform) boton "guardar cambios" evento clicked del boton =
if dw_1.Update() = 1 then
    commit using sqlca;
    messagebox("Mensaje","Los datos se guardaron con éxito!",Information!)
else
    rollback using sqlca;
    messagebox("Error","Hubo un error de actualización",StopSign!)
end if
--------------------------------------------------------------------------------------------------------------
Esto funciona correctamente, mi problema es que al traspasar los datos al dw_1(freeform) y guardo los cambios, no se guarda con el mismo id_equipo, sino que es como si guardara un nuevo registro. Si yo traspase:
34
Impresora laser
Si borro "laser" y guardo lo que deje se guardarán los cambios así:
35   <===    :(
Impresora
Siendo que debe de quedarse con el mismo id. Haber si no te confundí con tanto rollo, o si me propones otra solución te lo agradecería mucho.
PD. En mi base de datos el ID_EQUIPO es Autonumérico.

1 Respuesta

Respuesta
1
Entendí perfectamente tu código, no le encontré ninguna falla. Tal vez tu problema sea en el diseño del Objeto DataWindows. En la edición del mismo dale en el Menú Rows / Update Properties, y verifica que este más o menos configurado de la siguiente manera:

Eso seria todo, chequéalo y me dices. Si tienes más dudas me las haces saber.
Saludos experto:
Hice lo que me especificaste en tu respuesta y me sale un error de sql el cual es el siguiente:
SQLSTATE = 23000
[Microsoft][SQL Native Client][SQL Server]Cannot insert explicit value for identity column in table 'Equipos' when IDENTITY_INSERT is set to OFF.
No changes made to database.
INSERT INTO equipos ( id_equipo, nombre_equipo, marca, num_serie, descripcion, comentarios ) VALUES ( ?, ?, ?, ?, ?, ? )
Hubo una manera en que se me ocurrió resolver el problema y era usando código de sql en un datawindow pero no se como plasmar ese código en un evento de datawindow. Más o menos un ejemplo así:
UPDATE equipos SET  nombre_equipo = 'impresora',marca='epson' where id_equipo = 48
Si me sugieres otra solución te lo agradecería mucho. :)
Claro, ya veo, sabes creo que el error esta en en la tabla, en el primary key, más exacto en el autonumeric, hice una aplicación, cree una tabla con autonumeric, y otra tabla con un identity, ambos autogeneran un código sumatorio, pero al parecer el autonumeric no te actualiza, simplemente te crea otro registro, eso lo que pude determinar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas