Publicidad en el foro

Quiero anunciarles que a modo de prueba he habilitado anuncios de Adsense en el foro. La idea es ver si con ellos se puede solventar, de alguna manera, el costo que conlleva mantener el foro ya que el dominio y el servidor no son gratis.
También he agregado un botón de Donate en el menú, por si alguien se siente incentivado a colaborar :)

Espero que no tomen a mal esto, más que nada es una especie de experimento dado que siempre me pregunté si estas cosas sirven para solventar los gastos operativos que ya llevo 7 años pagando.

Si dentro de unos meses me compro una Ferrari, se los diré :)

Insertar registros en 3 tablas

SQL, mySQL, postgreSQL y otros motores
Responder
Cristian78
Ayudante de Santa
Mensajes: 98
Registrado: Dom Abr 17, 2011 6:07 pm
Contactar:

Insertar registros en 3 tablas

Mensaje por Cristian78 » Mié Mar 08, 2017 2:18 pm

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


Responder

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 1 invitado