uno a muchos

HMG en Español

Moderator: Rathinagiri

Post Reply
User avatar
Renegado
Posts: 88
Joined: Tue Mar 11, 2014 11:59 pm

uno a muchos

Post by Renegado »

Buenos días, alguien podrá decirme si hay alguna solución mas simple que la que hice para eliminar un registro del archivo alumnos alumnos->alum_id y todas sus coincidencias del archivo lista lista->alum_id donde tengo guardadas todas las inasistencias.
este es el código.
Si me funciona bien, solo quiero saber si hay una forma mas práctica, sin tanto código, tal vez un set relation uno a mucho, no sé.
Por su atención muchas gracias de antemano.

Code: Select all

//Elimina alumno
Procedure elim_Al()
sele alumnos
alumnos->(DBSETORDER(1))
cCodigo := ValorDeColumna1( "Grid_1" ,  "Bus_alum" , 1 )
if cCodigo==""
    MsgBox("Elija una alumno" + cCodigo)
    Return nil
endif	
alumnos->(DBSeek( cCodigo,.T. ))
// ------- a partir de aquí es mi duda ------ 
If MsgYesNo ("¿Está seguro?")
    delete      //----- Borro el alumno ----
    pack
    MsgBox( "Alumno con No. de lista "+ cCodigo + "Borrado")   
//---------Ahora borro todos los registros que tienen el mismo id -----
    sele lista
    lista->(DBGOTOP())	
    set filter to lista->alum_id=cCodigo
    lista->(DBGOTOP())	
    do while .not. lista->(Eof())
	    delete
            pack 
    	    lista->(DBSkip())
    enddo
    set filter to
//--------------
EndIf
llenAlum2()
Return nil
User avatar
danielmaximiliano
Posts: 2625
Joined: Fri Apr 09, 2010 4:53 pm
Location: Argentina
Contact:

Re: uno a muchos

Post by danielmaximiliano »

Hola Renegado :

creo que la funcion Pack borra todos los registros marcados (Delete .T.), necesitarias sacarlos del Lazo While .

Code: Select all

do while .not. lista->(Eof())
       delete          
           lista->(DBSkip())
    enddo
 pack
use //cierro la tabla.
sino por cada DELETE hace un (Pack) borrado de todos los registros marcados.
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
User avatar
Renegado
Posts: 88
Joined: Tue Mar 11, 2014 11:59 pm

Re: uno a muchos

Post by Renegado »

creo que la funcion Pack borra todos los registros marcados (Delete .T.), necesitarias sacarlos del Lazo While .

Si, toda la razón danielmaximiliano. Muchas gracias.
Post Reply