Insertar una fila en una Base de Datos

Esta es mi consulta, tengo en PowerBuilder, la siguiente pantalla:
************************
* * DW=Grid
* ******* *
* ___ * DW * *
* libro|___| * * *
* * * *
* ___ * * *
* isbn |___| ******* *
* *
* <Aceptar> *
*************************
El problema es que cuando cargo el libro y el isbn
y al hacer click en aceptar, no me inserta una fila en la tabla Libros
y ademas no se actualiza la información en la dw.
No se cual es el error, probe en el evento clicked del
boton varias cosas, pero nada.
Los eventos que tengo en esta ventana son:
--Evento Open de la ventana
****************************************
long ll_rows
dw_1.SetTrans(SQLCA)
ll_rows = dw_1.Retrieve()
IF ll_rows < 1 THEN MessageBox( &
"Error de Base de Datos", &
"No se retornaron Filas.")
****************************************
--Evento clicked del boton <Aceptar>
****************************************
string des,isbn
long ll_rows
long ll_newrow
des = sle_1.Text;
isbn = sle_2.Text;
ll_newrow = dw_1.InsertRow(0)
dw_1.ScrollToRow(ll_newrow)
Setnull(SQLCA.SQLDBCode);
Setnull(SQLCA.SQLErrText);
INSERT INTO "libros"
( "decripcion",
"isbn")
VALUES ( des,
isbn ) ;
//w_1.SetSQLPreview( &
//"INSERT INTO Libros VALUES(desp, isbn)");
This.SetRedRaw(TRUE);
COMMIT USING SQLCA;
IF dw_1.AcceptText() <> 1 THEN MessageBox( &
"Error:", &
"No se inserto una Fila.");
IF dw_1.Update(TRUE,FALSE) <> 1 THEN MessageBox( &
"Error:", &
"No se grabo la Fila.");
IF SQLCA.SQLCODE=0 THEN MessageBox( &
"Error:", &
"Los datos no se grabaron correctamente.");
//Si se inserto la fila el campo text vacio
sle_1.text="";
sle_2.text="";
****************************************
--Leí en tutoriales que para el ingreso de datos se podría usar un DW
Freeform, pero no tengo ningún ejemplo para empezar. En que direcciones
de internet puedo encontrar ejemplos, o sino mo podrías enviar algún ejemplo
a <[email protected]>.
Gracias! Por ayudar a un alumno que programa en delphi, que debido
a su pasantía tiene que aprender PowerBuilder.

1 respuesta

Respuesta
1
Si estas usando un dw
En el evento open debes poner
dw_1.SetTransObject(SQLCA)
debes crear un boton nuevo, y poner en el evento clicked
Long fila
fila = dw_1.InsertRow(0)
dw_1.ScrollToRow(fila)
en el boton aceptar en el evento clicked debes poner
dw_1.Update()
commit;
Eso es todo lo que debes hacer.
Por último debes ingresar al dw haciendo clic con el botón derecho y seleccionar Modify Datawindow..., luego seleccionar la opción Rows del menú y Update Properties:
Activar Allow Update, seleccionar los campos que estas ingresando, tu clave primaria y por último la tabla.
Eso permitirá que puedas almacenar los datos.
Gracias por la solución anterior, ahora practicando me surgió la duda se puede actualizar dos tablas, usando el mismo dw freeform, porque observe que si la tabla tiene una clave foránea a otra tabla, podemos poner en el freeform todos los campos de ambas columnas, pero no se como poner en el menu Row en la opción Update Properties, que actualize las dos tablas, porque solo me permite elegir una tabla.
Lamentablemente no se puede actualizar dos tablas usando el mismo dw.
Lo que puedes hacer es capturar los campos de la otra tabla y mandarlo a otro dw o grabarlo con sentencia SQL.
Cualquier otra duda solo pregunta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas