Pregunta: | 48308 - AGREGAR NUEVOS REGISTROS |
Autor: | Ana Díaz |
Hola!! Soy novata en este lenguaje y a la hora de hacer listados, busquedas.. me apaño bastante bien :D , el problema que tengo es a la hora de añadir un nuevo registro en una tabla.
En el evento open de la aplicacion defino los parámetros : SQLCA.DBMS = "ODBC" SQLCA.Database = "<nombre de la db>" SQLCA.AutoCommit = False SQLCA.DBParm= "ConnectString='DSN=<nombre de la db>" Connect Using sqlca; El problema viene cuando añado un datawindow para insertar los nuevos registros en la tabla a la ventana. Por ejemplo, en el evento open de la ventana creo la conexión: dw_1.SettransObject(sqlca) Pero claro, no pongo: dw_1.retrieve() Por que si no me devuelve la primera fila de la tabla y lo quiero es poder añadir un registro nuevo, y si no pongo esa linea no me aparece el datawindow. Estoy bastante perdida.. Gracias de antemano!! |
Respuesta: | Oxido social |
Que tal Ana!
Mira bien sencillo: dw.SetTransObject (SQLCA): Sirve para conectar tu Dw con la BD. dw.Retrieve () Trae la informacion de la consulta que esta en el datawindowobject dw.InsertRow (0): Inserta un renglo en limpio en tu DW dw.DeleteRow (Row): Borra del DW el senglon especifico en la variable ROW. dw.Update (): Hace el UPDATE del DW sobre la tabla. El INSERTROW y DELETEROW no realizan los cambios en la tabla, es en tu aplicacion nada mas, para que lo tengas encuenta. Aqui te dejo un codigo para que implementes en tus aplicaciones: /********************************** OPen de la ventana **********************************/ dw.SetTransObject (SQLCA) dw.SetRowFocusIndicator (Hand!) /*************************************** Evento CLOSEQUERY ***************************************/ dw.AcceptText () IF (dw.ModifiedCount () > 0) OR (dw.DeletedCount () > 0) THEN CHOOSE CASE MessageBox ('aviso', 'Hay cambios realizados sin guardar. ' + char (13) + '¿Desea guardar ahora?', Question!, YesNoCancel!) CASE 1 IF (dw.Update () = 1) THEN MessageBox ('aviso', 'Se guardo con exito') RETURN 0 ELSE MessageBox ('aviso', 'Ocurrio un error al guardar') RETURN 1 END IF CASE 2 RETURN 0 CASE 3 RETURN 1 END CHOOSE END IF /*************************************** Boton para agregar un registro ***************************************/ LONG ll_Ren ll_Ren = dw.InsertRow (0) dw.ScrollToRow (ll_ren) dw.SetFocus () dw.SetColumn ('Id') /*************************************** Boton para eliminar un registro ***************************************/ LONG ll_Ren ll_Ren = dw.GetRow () IF (ll_Ren > 0) THEN IF (MessageBox ('Aviso', '¿Quiere eliminar el registro seleccionado?', Question!, YesNo!) = 2) THEN RETURN END IF dw.DeleteRow (ll_Ren) ELSE MessageBox ('Aviso', 'No hay registros a eliminar.'); END IF /*************************************** Boton para guardar un registro ***************************************/ dw.AcceptText () IF (dw.ModifiedCount () > 0) OR (dw.DeletedCount () > 0) THEN IF (dw.Update () = 1) THEN MessageBox ('aviso', 'Se guardo con exito') ELSE MessageBox ('aviso', 'Ocurrio un error al guardar') END IF END IF Espero te sirva de algo esta breve explicacion. Saludos desde Guadalajara, Mexico. |