www.clarioneros.com

El rincón de los desarrolladores
Fecha actual Mié Ago 23, 2017 11:10 pm

Todos los horarios son UTC




Nuevo tema Responder al tema  [ 1 mensaje ] 
Autor Mensaje
NotaPublicado: Mié Mar 08, 2017 2:18 pm 
Desconectado

Registrado: Dom Abr 17, 2011 6:07 pm
Mensajes: 93
BUENAS A TODOS, UNA CONSULTA, TENIENDO 3 TABLAS PADRE, HIJOS Y NIETOS REALIZO LO SIGUIENTE AL INSERTAR REGISTROS:

!*****************************************************************************
DO InsertandoFichaInscripcion
DO InsertandoAsignaturasCarrera
DO InsertandoAsignaturasCorrelativas

¡INSERTANDO FICHA INSCRIPCION A LA CARRERA
InsertandoFichaInscripcion ROUTINE

LOC:Texto = 'INSERT INTO ALUMNOSFichaCarrera (IdAlumnosLegajo, ' &|
'IdCarrerasDetalle, ' &|
'FechaDeIngreso, ' &|
' VALUES (<39>'&clip(ALFC:IdAlumnosLegajo)&'<39>,'&|
' <39>'&clip(ALFC:IdCarrerasDetalle)&'<39>,' &|
' <39>'&clip(FORMAT(ALFC:FechaDeIngreso,@D2))&'<39>)'


ALUMNOSFichaCarrera{PROP:SQL}= LOC:Texto

!BUSCANDO ULTIMO ID DE DBO.ALUMNOSFichaCarrera PARA MANTENER INTEGRIDAD REFERENCIAL
!CON DBO.ALUMNOSAsignaturas
ALUMNOSFichaCarrera{PROP:SQL} = 'SELECT @@IDENTITY'
IF NOT ACCESS:ALUMNOSFichaCarrera.NEXT()
LOC:IDAlumnosFichaCarrera = ALFC:IDAlumnosFichaCarrera
END


InsertandoAsignaturasCarrera ROUTINE
!ACTUALIZANDO QUEUEU CON EL VALOR "IDAlumnosFichaCarrera "
!para mantener la integridad referencial cuando se inserten los registros
!en la tabla DBO.ALUMNOSAsignaturas
LOOP X# = 1 to records(QUEUECarreraAsignaturas)
GET (QUEUECarreraAsignaturas,X#)
QIDAlumnosFichaCarrera = LOC:IDAlumnosFichaCarrera
PUT(QUEUECarreraAsignaturas)
END !END LOOP

!INSERTANDO ASIGNATURAS EN LA DBO.ALUMNOSAsignaturas
LOOP X# = 1 to records(QUEUECarreraAsignaturas)
GET (QUEUECarreraAsignaturas,X#)
DO InsertandoAsignaturaXasignatura

END !END LOOP
!ESTE CODIGO ESTA EL LA QUEUE DE LAS MATERIAS PARA IR TRAYENDO LAS CORRELATIVAS EN FUNCION
!DE DONDE SE ENCUENTRA EL FOCO DEL CURSOR O AL HACER CLICK EN CUALQUIER REGISTRO
!GET(QUEUECarreraAsignaturas,CHOICE(?List1))


!-------------------------------------------------------------------------
InsertandoAsignaturaXasignatura ROUTINE

!INSERTANDO ASIGNATURAS
LOC:Texto =''
LOC:Texto = 'INSERT INTO ALUMNOSAsignaturas (IdAlumnosFichaCarrera, ' &|
'IdCarrerasAsignatura, ' &|
' VALUES (<39>'&clip(QIDAlumnosFichaCarrera)&'<39>,'&|
' <39>'&clip(QIdCarrerasAsignatura)&'<39>)'
ALUMNOSAsignaturas{PROP:SQL}= LOC:Texto

!GUARDANDO ID DEL REGISTRO INSERTADO PARA MANTENER LA INTEGRIDAD REFERENCIAS
!CUANDO SE AGREGUEN LAS CORRELATIVAS
ALUMNOSAsignaturas{PROP:SQL} = 'SELECT @@IDENTITY'
IF NOT ACCESS:ALUMNOSAsignaturas.NEXT()
QIdAlumnosAsignatura = ALUAs:IdAlumnosAsignatura
PUT(QUEUECarreraAsignaturas)
END

InsertandoAsignaturasCorrelativas ROUTINE

LOOP X# = 1 to records(QUEUECarreraAsignaturas)
GET (QUEUECarreraAsignaturas,X#)
LOC:IdAlumnoAsignatura = QIdAlumnosAsignatura
DO TrayendoCorrelativas
END !END LOOP

TrayendoCorrelativas ROUTINE

CARRERASCorrelatividades{PROP:SQL}= 'SELECT *' &|
'FROM CARRERASCorrelatividades' &|
' WHERE (IdCarrerasAsignatura = <39>'&clip(QUEUECarreraAsignaturas.QIdCarrerasAsignatura)&'<39>)'


IF ERRORCODE() THEN STOP (FILEERROR()). !FILEERROR ES EL ERROR DEL SQL
!FREE(QUEUECarrerasCorrelatividades)
LOOP
NEXT(CARRERASCorrelatividades)
IF ERRORCODE() THEN BREAK.
QIdCarrerasCorrelatividades = CCORR:IdCarrerasCorrelatividades
ADD(QUEUECarrerasCorrelatividades)
DO InsertandoCorrelativa
END

InsertandoCorrelativa ROUTINE
!INSERTANDO ASIGNATURAS
LOC:Texto =''
LOC:Texto = 'INSERT INTO ALUMNOSCorrelativas (IdAlumnosAsignatura, ' &|
'IdAsignaturaCorrelativa, ' &|
' VALUES (<39>'&clip(LOC:IdAlumnoAsignatura)&'<39>)'

ALUMNOSCorrelativas{PROP:SQL}= LOC:Texto

!*****************************************************************************
FUNCIONA TODO OK. MI CONSULTA ES LA SIGUIENTE, COMO SERIA HACER PARA UN LOGOUT - COMMIT - ROLLBACK?

LEI UNA AYUDA QUE SUGIERE LO SIGUIENTE
PlanillaDescuentoDetalle{PROP:SQL} = 'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED'
PlanillaDescuentoDetalle{PROP:SQL} = 'BEGIN TRANSACTION'

COMMIT:
PlanillaDescuentoDetalle{PROP:SQL} = 'COMMIT TRANSACTION'
PlanillaDescuentoDetalle{PROP:SQL} = 'SET TRANSACTION ISOLATION LEVEL READ COMMITTED'

PERO NO SE COMO UTILIZARLA EN ESTE CASO. GRACIAS

CLARION 8 - SQL SERVER 2008 R2


Arriba
 Perfil Email  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 1 mensaje ] 

Todos los horarios son UTC


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Saltar a:  
cron
Powered by phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com