*antes de guardar los datos tenemos que asegurarnos de que sean validos.
*--------------------------------------------------------------------------
* VALIDACION DE REGISTROS
*--------------------------------------------------------------------------
*guardamos los datos en mayusculas
palabra = upper(thisform.txtValor.value)
*vamos a usar flags, o indicadores logicos que nos ayudaran a determinar si
*el dato ingresado es correcto
local posible
local elerror1
local elerror2
local tipodeerror
*el campo de texto esta vacio?
if empty(thisform.txtValor.value) then
posible = .F.
elerror1 = 'el campo de texto se encuentra vacio'
tipodeerror = 1
else
posible = .T.
endif
*si la primera validacion ha pasdo con exito, seguimos con la segunda:
*¿cabe la posibilidad de duplicado?
if posible = .T. then
eltipo = upper(alltrim(thisform.txtValor.value))
*para evitar que se encuentre a si mismo
registroactual = tipotelef.idtipotel
select tipotelefono.tipotel, tipotelefono.idtipotel;
from tipotelefono;
where alltrim(tipotelefono.tipotel) = eltipo .AND. registroactual <> tipotelefono.idtipotel ;
into cursor 'test'
*si no es fin, es decir, encontro algo, y si ese algo no es el mismo.
if .NOT. eof('test') and .NOT. (test.idtipotel=registroactual) then
elerror2 = 'ya se encuentra ese registro'
tipodeerror = 2
posible = .F.
endif
endif
if posible = .F. then
do case tipodeerror
case tipodeerror = 1
messagebox(elerror1, 0 + 64, 'Información')
case tipodeerror = 2
messagebox(elerror2, 0 + 48, 'Cuidado!')
endcase
thisform.activate
endif
*si todo esta bien podemos seguir
if posible = .T. then
*--------------------------------------------------------------------------
* ALTA DE REGISTROS
*--------------------------------------------------------------------------
if thisform.lalta = .T. then
*creamos una variable local idest, la cual incrementará en 1
*el valor del campo "idtipotel", para evitar la no-unicidad.
local idest
*indicamos que lleve el cursor al ultimo registro.
set deleted off
select max(tipotelefono.idtipotel) as iddeltipo;
from tipotelefono;
into cursor 'iddeltipot'
set deleted on
idest = iddeltipo + 1
lapalabra = thisform.txtValor.value
palabra = upper(alltrim(lapalabra))
*aca decimos que ingrese los nuevos valores dentro de la tabla
*(el estado va a ser el valor del txtValor, y el id va a ser
*el contenido de la variable idest.
insert into tipotelefono(tipotel,idtipotel) value (palabra, idest)
thisform.activate
*vaciamos la caja de texto para que no muestre el ultimo valor ingresado
*y volvemos a ocultar el contenedor junto con sus objetos.
thisform.txtValor.value = ''
thisform.contenedor.visible = .F.
thisform.label1.visible = .F.
thisform.txtValor.visible = .F.
thisform.cmdGuardar.visible = .F.
thisform.cmdCancelar.visible = .F.
endif
*--------------------------------------------------------------------------
* MODIFICACION DE REGISTROS
*--------------------------------------------------------------------------
if thisform.lmodificacion = .T. then
*guardamos en mayusculas.
*valor contendra el valor del campo "tipotel" al momento de actualizar.
valorTipoTel = upper(thisform.txtValor.value)
*idetipoactual va a ser el valor que indicara a cual registro modificar.
idtipoactual = tipotelef.idtipotel
*hacemos la actualizacion mediante el comando update
update tipotelefono;
set tipotel = valorTipoTel;
where idtipotel = idtipoactual
*actualizamos el grid
thisform.activate
*vaciamos la caja de texto para que no muestre el ultimo valor ingresado
*y volvemos a ocultar el contenedor junto con sus objetos.
thisform.txtValor.value = ''
thisform.contenedor.visible = .F.
thisform.label1.visible = .F.
thisform.txtValor.visible = .F.
thisform.cmdGuardar.visible = .F.
thisform.cmdCancelar.visible = .F.
endif
endif