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
Insertar registros en 3 tablas
-
- Al nivel de RZ
- Mensajes: 108
- Registrado: Dom Abr 17, 2011 6:07 pm
- Contactar:
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 16 invitados