Hola Carlos! Sin ningún inconveniente, paso a la nueva consulta: ¿Cómo Crear un formulario de Alta de Registros? He ido comprendiendo, paso a paso, bastante bien tus orientaciones! (^_^)!
* Nueva clase llamada Aceptar ó Grabar basada en la clase commandbuton. * ************************************************************* 1) Desde el Administrador de Proyectos selecciona la pestaña clases, dale click a nuevo, nombre de clase "Aceptar o Grabar", basado en commandbuton, almacenada en tú biblioteca de clases. 2) Una vez que tengas el botón a la vista dale doble click y agrega el siguiente código en el evento click: THISFORM. RELEASE * Nueva clase de nombre Cancelar, basada en la clase commandbuton.* ********************************************************* Repite el paso 1 del punto anterior, en el paso 2 agrega el siguiente código: =TABLEREVERT(.T.) THISFORM.RECEDIT THISFORM.RELEASE * Procedimiento RECEDIT dentro de la clase miform.* ****************************************** 1) Desde la pestaña Clases de tu Administrador de Proyectos selecciona y edita la clase miform. Vé al menú Clase (arriba) y selecciona Nuevo Método: nombre: RECEDIT, Visibilidad público. 2) Accede al evento recedit de tu clase miform y pega el siguiente código: *---------------------------------------------------------------* * verifica si hubo cambios en la tabla o registro y los graba en * la tabla seleccionada * * debe ejecutarse por cada tabla modificada * * devuelve valores numericos: * 0 -- no se realizaron cambios * 1 -- se guardaron los cambios * 2 -- imposible escribir uno o mas cambios en la tabla *---------------------------------------------------------------* thisform.mousepointer=11 #include ebm.h * define variables locales * lc_alias=alltrim(alias()) if not empty(alias()) * declaración de variables local llmadechange, lnsuccess, lctabla m.llmadechange = .f. m.lnsuccess = 0 lctabla=alias() select (lctabla) do case case inlist(cursorgetprop('buffering'), 2,3) && row buffering if '2' $ getfldstate(-1) m.llmadechange = .t. endif case inlist(cursorgetprop('buffering'), 4,5) && table buffering if getnextmodified(0) > 0 m.llmadechange = .t. endif otherwise cursorsetprop("buffering", 5, lctabla) m.llmadechange = .t. endcase if m.llmadechange m.lnsuccess = iif(tableupdate(.t.,.t.), 1, 2) endif * libera variables * return m.lnsuccess else =messagebox (_notablesel, _mbxfrmt, _mbxtit) endif * libera variables locales * release lc_alias thisform.mousepointer=0 * Editar el archivo de texto H * ************************ Verificamos que exista ó agregamos la siguiente línea: #DEFINE _NOTABLESEL "No hay ninguna tabla seleccionada." * Formulario para Alta de Registros * ***************************** 1) Crear un nuevo formulario (siempre basado en tu clase miform), colócale los controles de texto y los que necesites teniendo en cuenta los campos de la tabla sobre la que vas a agregar un registro. Finalmente agrega los botones Aceptar y Cancelar 2) Establece el orden de tabulación para tu form y ahora agregamos el código al botón guardar: Thisform.mousepointer=11 * Verifica que no falten datos y que no haya incoherencias * Local lcMitxtbox lcMitxtbox=alltrim(thisform.txtbox1.value) if empty(lcMitxtbox) * mensaje de error definido en archivo.H* =messagebox(_mensaje, _mbxfrmt, _mbxtit) thisform.txtbox1.setfocus() else select mitabla insert into mitabla (nombrecampo) values (lcMitxtbox) =Tableupdate(.t., .t.) dodefault() && llama al código definido en la clase endif release lcMitxtbox Thisform.mousepointer=0 Guarda los cambios y vé a editar el form Maestro de ABM. Selecciona el CommandGroup haciendo click derecho y luego en modificar. Doble click en el botón Nuevo, agregar el siguiente código al Procedimiento Click: thisform.mousepointer=11 p_form_name="miform2.scx" dodefault() thisform.mousepointer=0 Ahora ejecuta tu Maestro de ABM y dale click al botón Nuevo y se abrirá el formulario que acabas de crear. Una vez que hagas click en guardar se cerrará el formulario y podrás ver en el grid el nuevo registro. Suerte. Si todo sale bien, el lunes realiza la siguiente pregunta (faltan pocas): Formulario de Edición de Registros.
Hola Carlos! A este puunto, todo ha salido bien! Realizare la próxima consulta el lunes! Feliz fin de semana y muchas Gracias por todo! :D :D :D