FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
ALmacenar Un Campo En 3 tablas diferentes
Antes que nada un salu2 a todos y disculpen por las molestias ocasionadas de mi parte ... pero hasta ahora nadie ha podido resolver mi problema que tengo con DELPHI7 e Interbase 7.1...
Alguien me puede decir como puedo Almacenar el valor de un campo de en 3 tablas distintas???... Miren este es el problema:: Tengo 4 tablas (IBTalumnos, IBTalumnos_carrera, IBTalumnos_semestre,IBTAlumnos_doc) mi Tabla padre es la tabla IBTalumnos, Y las 3 ultimas son las tablas HIJO,, como todos saben en la propiedad MASTERSOURCE de estas 3 ultimas tablas va el nombre de la tabla PADRE es decir:: IBTalumnos y en su propiedad MASTERKEYS los campos que hacen referencia a mi tabla PADRE es decir:: DNI_alumno(TABLAHIJO)-->DNI(TABLAPADRE) ¿ME EXPLICO???? Entonces tengo un formulario en donde capturare la informacion de los alumnos en las tablas antes mencionadas... Pero el problema es ¿¿como almaceno el DNI del alumno en las diferentes tablas al mismo tiempo??? Se puede hacer esto???? como???? de que manera??? en realidad me urge una respuesta y si alguien sabe como hacerle se los agradeceria mucho.... SALE2 |
#2
|
||||
|
||||
Has un trigger en la tabla que sea el formulario y al momento de guardar que el trigger te lo guarde en las demas tablas...
__________________
El Fracaso tiene mil explicaciones el Éxito no necsita explicación |
#3
|
|||
|
|||
Oye geovany me puedes dar un ejemplo de como quedaria el TRIGGER por que la verdad no se como se hacen.....
SALU2 |
#4
|
||||
|
||||
ejemplos como estos encontraras en las ayudas del interactive sql de interbase o en el siguiente link si quieres saber mas de los trigger en interbase Interbase Chao espero te sirva de algo
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas |
#5
|
|||
|
|||
ok ok entonces realizare mi trigger y si tengo algunos problemas se los hare saber para que puedan ayudarme... ahhh y otra pregunta..
cuando se almacenan los datos en los IBTAbles desde formularios de Delphi tambien se almacenan en mi base de datos??? o sea puedo ver lo qe almacene en mis tablas desde INTERBASE???? |
#6
|
||||
|
||||
Si haces commit en la transaccion lo puedes ver en Interbase
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas |
#7
|
||||
|
||||
Como yo no sé de triggers quizá haga una pregunta muy tonta. ¿Por qué no se puede simplemente hacer:
0. empezar transacción 1. Insertar al alumno 2. Obtener el dni asignado 3. insertar carrera con el dni obtenido 4. insertar semestre con el dni obtenido 5. insertar doc con el dni obtenido 6. terminar transacción Sé que son varias consultas sql pero cada una de ellas debe ser muy rápida. // Saludos |
#8
|
|||
|
|||
AYUDAAAA!!!!!!
Miren ya quite todos mis DBedits de mi formulario y meti los TEDITs entonces en el edit1 es en donde se encuentra la matricula del alumno y todos mis datos los voy a almacenar de la siguiente manera: Cita:
Pero me marca error acerca de que el 'FIELD 'DNI_ALUMNO' MUST HAVE A VALUE' ... a que se debe este mensaje????? sera que no puedo guardar la informacion de un edit en diferentes tablas??? acaso cuando lo guardo en la primera se borra la informacion del EDIT...??? que es lo que pasa??? ayudenme.. |
#9
|
||||
|
||||
Cita:
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas |
#10
|
||||
|
||||
[quote=(VIH)Lestat]
Pero me marca error acerca de que el 'FIELD 'DNI_ALUMNO' MUST HAVE A VALUE' ... a que se debe este mensaje?????QUOTE] evidentemente es que en el campo DNI_ALUMNO no hay dato que guardar posiblemente sea por lo que stu dices no estoy seguro pero si es por eso por que no guardas el dato que tiene en el edit1.text y lo asignas despues de que haces esto
es una solucion muy mediocre pero creo que funciona.. Cita:
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas |
#11
|
|||
|
|||
Pues me sigue marcando el mismo error BARTO..
mira ya probe con esto... Código:
var dni_a:string; begin cni_a:=edit1.text; IBtable1.fieldbyname.('dni'):=dni_a; IBtable2.fieldbyname('dni_alumno):=dni_a; Probe tambien con lo que me digiste y sigue marcando error... |
#12
|
||||
|
||||
como creaste la tabla dni_alumno es que hay una cosa que debes saber si tienes dos tablas
alumno materia y en alumno tienes los atributos (*)nombre, (*)apellido, (*)dni, telefono por decir algo y en materia tienes los atributos (*)nom_materia, (*)cod_materia, (*)dni_alumno en donde los que tienen (*) son campos obligatorios y si tu le pides a el edit que inserte el dato desde la tabla alumno sacara error siempre por que llenas el campo dni_alumno y los demas campos no los estas llenando siendo ellos obligatorios Verifica tu teoria de llenar datos en distintas tablas depronto lo que necesitas no es eso
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas |
#13
|
||||
|
||||
Cita:
// Saludos |
#14
|
||||
|
||||
Cita:
lodeclaras asi pero lo usas asi
El error en este caso se puede producir por esto no??? lo usas como cni_a y lo declaraste dni_a Cita:
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas |
#15
|
||||
|
||||
Cita:
En cuanto a lo segundo, quizá justamente el trigger le esté metiendo ruido. Tal como lo plantea ahora pareciera no requerir el trigger pero quizá lo sigue teniendo activo y puede ser que no esté bien definido y sea el que esté metiendo valores en blanco. // Saludos |
#16
|
||||
|
||||
Sip por que como muestra nuestro amigo vih lo hace mediante codigo normalito es decir sin hacer uso del trigger, seria bueno mirar como armaste el trigger,
puede que el trigger si tiene un before insert no este guardando el valor de DNI_ALUMNO y por eso se dispara la excepcion
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas |
#17
|
|||
|
|||
MIren... Por el momento no estoy utilizando triggers, pero ya se como funcionan... no los utilizo por que el valor que quiero insertar automaticamente o por medio del trigger es el DNI del alumno pero los demas campos los debe jalar de los DBEDits que tenia... pero todos mis DBEDITS ya los elimine y decidi almacenar los datos directamente en la tabla o sea por medio de la propiedad FIELDBYNAME.. si me entienden???? entonces declare la variable como me sugirio el BARTO y almaceno la DNI del alumno que esta en el edit en la variable..... luego esa misma variable la utilizo para almacenar los datos en las diferentes tablas y estoy checando la variable y si almacena el valor del EDIT.. pero me marca error al guardar los datos ....por que despues de utilizar el FIELDBYNAME.asstring:=dni_a; tengo puesto IBtalbe1.post para guardar los datos....
pero tengo una duda.... si estoy utilizando la propiedad de la tabla FIELDBYNAME para introducir los datos ... ya no tengo que utilizar el POST para guardar los cambios???? porque he visto otros ejemplos cuando almacenan los datos con dicha propiedad y no los utilizan pero hay otros que si...entonces no se que hacer???? |
#18
|
|||
|
|||
Para ser mas especifico aqui les pongo el codigo que utilizo para almacenar informacion en las tablas antes mencionadas... espero puedan encontrar el error que me aqueja....todo este codigo lo tengo puesto para un boton..
Código:
procedure TIngresar_alum.BitBtn3Click(Sender: TObject); var dni_a:string; apellidopa:string; apellidoma:string; nombre:string; sex:string; dir:string; local:string; ciud:string; tele:string; fecha_ing:variant; statu:string; imagen:variant; edoc:string; carrera:string; sem:integer; cert:integer; fot:integer; act:integer; cur:integer; begin dni_a:=matricula.Text; apellidopa:=apaterno.Text; apellidoma:=amaterno.Text; nombre:=nombres.Text; sex:=sexo.Text; dir:=direccion.Text; local:=localidad.Text; ciud:=municipio.Text; tele:=telefono.Text; edoc:=edocivil.Text; carrera:=DBLcarrera.KeyValue; fecha_ing:=fecha.Text; statu:=status.Text; sem:=strtoint(semestre.Text); cert:=strtoint(certificado.ValueChecked); act:=strtoint(acta.ValueChecked); fot:=strtoint(fotos.ValueChecked); cur:=strtoint(curp.ValueChecked); //Se ponen en modo Editar las Tablas para empezar a recibir datos ModuloSID.IBTalumnos.Edit; ModuloSID.IBTalumno_carrera.Edit; ModuloSID.IBTsemestre.Edit; ModuloSID.IBTalum_doc.Edit; //Se captura la informacion directamente de las cajas de Texto ModuloSID.IBTalumnos.FieldByName('dni').AsString:=dni_a; ModuloSID.IBTalumnos.FieldByName('apellido_pa').AsString:=apellidopa; ModuloSID.IBTalumnos.FieldByName('apellido_ma').AsString:=apellidoma; ModuloSID.IBTalumnos.FieldByName('nombre').AsString:=Nombre; ModuloSID.IBTalumnos.FieldByName('sexo').AsString:=Sex; ModuloSID.IBTalumnos.FieldByName('direccion').AsString:=Dir; ModuloSID.IBTalumnos.FieldByName('localidad').AsString:=Local; ModuloSID.IBTalumnos.FieldByName('ciudad').AsString:=ciud; ModuloSID.IBTalumnos.FieldByName('telefono').AsString:=Tele; ModuloSID.IBTalumnos.FieldByName('fecha_ingreso').Value:=fecha_ing; ModuloSID.IBTalumnos.FieldByName('edo_civil').AsString:=edoc; MOduloSID.IBTalumnos.FieldByName('status').AsString:=statu; ModuloSID.IBTalumnos.Post; ModuloSID.IBTalumno_carrera.FieldByName('dni_alumno').AsString:=dni_a; ModuloSID.IBTalumno_carrera.FieldByName('dni_carrera').AsString:=carrera; ModuloSID.IBTalumno_carrera.Post; ModuloSID.IBTsemestre.FieldByName('dni_alumno').AsString:=dni_a; ModuloSID.IBTsemestre.FieldByName('semestre').AsInteger:=sem; ModuloSID.IBTsemestre.Post; ModuloSID.IBTalum_doc.FieldByName('dni_alumno').AsString:=dni_a; ModuloSID.IBTalum_doc.FieldByName('certificado').AsInteger:=cert; ModuloSID.IBTalum_doc.FieldByName('acta').AsInteger:=act; ModuloSID.IBTalum_doc.FieldByName('fotos').AsInteger:=fot; ModuloSID.IBTalum_doc.FieldByName('curp').AsInteger:=cur; ModuloSID.IBTalum_doc.Post; ahh y otra cosa tengo declarado variables para almacenar la informacion de los EDITS y luego pasarselas a mis tablas ... estas variables "SI" almacenan la informacion porque ya le hice pruebas y si me la retiene.. el problema esta en las clausulas POST SUPONGO!!!! |
#19
|
|||
|
|||
k pasa tio?a ver si ahora puedo ayudarte yo con esta duda que t surge. creo que el error se puede deber a k para abrir la base de datos para recibir datos lo hagas con "edit". si los datos que vas a introducir son nuevos porque no pruebas a guardar los datos usando el comando "insert" para preparar la base de datos para recibirlos. yo pondría el codigo de insertar en cada tabla debajo de su correspondiente "edit", por el hecho de que cuanto menos tiempo este modificando las tablas supongo será mejor, pero ya esto solo es una idea.
espero haya suerte y sirva esto!! |
|
|
|