FoxPro/Visual FoxPro - ayuda con botonera

   
Vista:

ayuda con botonera

Publicado por gabriel (2 intervenciones) el 19/12/2013 13:26:39
hola me llano gabriel y ando necesitando ayuda
yo estoy haciendo un programa de ingreso de productos y facturación para pequeñas empresa sea de ropa, calzado
o como me lo solicito un amigo polirubros o despensar.
a la ves este programa lo tengo que presentar como proyecto final para mi carrera.

paso a comentar mis problemas y dudas que son varias una es tengo un form con "txt de descrip, cantidad, punitario y total. un grid que esta vinculada a la tabla con los datos del txt, y una seria de botones nuevo, eliminar, modificar, guardar y salir.

tengo problema con el botón eliminar. yo pongo nuevo ingreso los datos de un producto los guardo y cuando quiero efectuar la eliminación no me elimina lo que quiero del grid sino me elimina todo los datos del grid pero yo pongo browse all. y voy a la tabla y están todo los datos. yo lo que quiero es que en el grid se borre el elemento que yo quiero y a la ves que ese elemento se elimine de la tabla. espero que se pueda entender lo que me esta sucediento

aca les dejo el comando que yo hice

SET DELETED ON
select alta_baja_modificacion
("desea eliminar este elemento",4,"aviso")=6
DELETE
go top
ENDIF

espero que me pueda ayudar yo soy re novato en esto y a mi profesor que me lo enseño nunca le entendí
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

ayuda con botonera

Publicado por Fidel José (558 intervenciones) el 19/12/2013 15:46:34
1) Normalmente pones SET DELETED ON en la configuración general (main.prg). De esa forma te aseguras que los datos que estas viendo no están marcados para borrar. Cambiarás a SET DELETE OFF cuando quieras ver registros marcados para borrar, quizá para recuperarlos.

Acá, lo que puede estar pasando es que, en realidad, todos los datos de la tabla están marcados para borrar, pero los estás viendo por que trabajas con SET DELETE OFF. Cuando pones SET DELETE ON, antes de borrar, Visual Fox filtra automáticamente todos los borrados y te muestra solamente los que no están marcados para borrar.
Fijate si cuando haces el browse a la tabla tienes una casilla pequeña bien a la izquierda, que está en negro. Si haces click allí se quita la marca de borrado.

Si quieres quitar todas las marcas de borrado:
SET DELETE OFF
RECALL ALL
SET DELETE ON

Si quieres eliminar todos los registros marcados para borrar
PACK && (únicamente en tablas y en modo exclusivo)

2) El código (aunque le falta un pedazo) es correcto si la tabla asociada al control grid es la que pones ahí.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ayuda con botonera

Publicado por gabriel (2 intervenciones) el 19/12/2013 18:15:37
hola jose mil gracias por responder
hace un rato puse lo que vos me decías de
poner
set delete off
recall all
set delete on
select alta_baja_modificacion

if messagebox ("desea eliminar este elemento",4,"aviso")=6
DELETE
go top
endif


lo ingrese al botón eliminar y no a modificado en nada solo que no eliminar nada del grid y voy a ver a la tabla y los datos estan lo que yo quiero es que desde el mismo grid borre se borre los datos que uno desea motivo porque el mismo cliente carga los datos y si los quiere eliminar que se eliminen del grid y de la tabla misma no que tenga q intervenir yo mismo para poder eliminar los datos no se si me logro explicar.
vos como harías o como lo harías..

cual seria la parte que vos decís que le falta a mi código porque yo no me doy cuenta de lo que me falta

mil gracias jose por ayudarme.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ayuda con botonera

Publicado por Fidel José (558 intervenciones) el 19/12/2013 19:36:40
Ahora bien, dime gabriel, tu tabla de productos se llama "alta_baja_modificacion" ? o le has puesto semejante Alias?

Si lees con atención tu propio post, de darás cuenta que hay un pequeño error de copy & paste: la función Messagebox no aparece.

En general, a la tabla de productos la llamamos "PRODUCTOS.DBF" o algo parecido, como para saber en qué cosa estamos metiendo mano al programar. Si la tabla se llama productos, arranco con:

USE PRODUTOS IN 0 SHARED
luego sería, suponiendo que hay un control grid y quiero enlazar esa tabla.
Thisform.grid1.RecordSource="productos"
El control grid es una interfase que me permite visualizar y (si lo permito) modificar datos del cursor o tabla asociada a través del RecordSource. No elimino ni agrego ni modifico datos del grid, sino del cursor o tabla asociada.

Siguiendo con mi nombre de tabla, para borrar algo sería así:
* Evento Click del CommandButton
* El código es básicamente como lo escribes, solo que un poco más seguro
* Me aseguro de que la tabla o cursor es el que está asociado al grid con este código
lcFile=Thisform.grid1.recordsource
SELECT (lcFile)
&& código para prevenir sobre eof() (no estoy señalando ningún registro). Si el cursor está en EOF, el comando delete no dará error, pero tampoco borrará nada.
IF EOF()
Messagebox("Señale un registro en la cuadrícula",0,"Mensaje")
thisform.grid1.setfocus
RETURN
ENDIF
nMess=Messagebox("Desea eliminar este producto?", 4 , "Borrando Productos")
IF nMess#6
Thisform.grid1.SEtFocus
RETURN
ENDIF
IF RLOCK() && BLOQUE MANUAL DE TABLA (APERTURA SHARED)
DELETE
* Acá puedes poner GO TOP, o no ponerlo. Es una elección

ENDIF
WITH THISFORM.GRID1
.REFRESH && ACTUALIZA EL CONTROL GRID
.SETFOCUS && ENVIA EL CURSOR AL CONTROL GRID.
ENDWITH

Si en lugar de abrir las tablas explícitamente utilizas el entorno de datos, tal vez estés trabajando con Buffering. En ese caso solamente se guardarán los datos si efectúas un TableUpdate(.t.) después de agregar, modificar o borrar.

Si el botón de Nuevos productos funciona como esperas, échale una mirada y tal vez te revele algo.
Si no puedes solucionar el problema, pega en el post el código del evento click del botón de nuevo producto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar