![]() |
problemas con un IBDataSet que depende de otro!!!
Hola a todos,
Continuo con mi aplicación en Delphi6 interbase 7 y dialecto sql 3. en mi aplicación tengo un IBDataset, TbAlumnos, del que dependen en mayor o menor grado el resto de los IBDataSet. Hay concretamente uno, que es el TbAnotaALU que tiene varios registros por cada Alumno. Necesito que cada vez que se cambie el registro que se esté mostrando del TbAlumnos, también se cambie, en un DBGrid que tengo asociado a TbAnotaAlu, los registros relacionados con dicho alumno, Vamos, que pase a mostrar los del nuevo alumno activo. Si a TbAnotaALU, en la propiedad DataSource, lo relacionamos con TbAlumnos me muestra todos los registros de la tabla. Si no lo relaciono con TbAlumnos en la propiedad DataSource, y al abrir, guardar, Cancelar en el TbAlumnos, ejecuto este procedure: procedure TFrmDModule.TbAnotaALUInicial(DataSet: TDataSet); var str : String; begin TRY TbAnotaALU.DisableControls; TbAnotaALU.Close; TbAnotaALU.SelectSQL.Clear; TbAnotaALU.SelectSQL.Add(select CODIGO, NUMALU, NIC, TIPO, FECHA, DESCRIPCION from ANOTA); IF (TbAlumnos.Active = True) and (not TbAlumnosNUMALU.IsNull) THEN BEGIN TbAnotaALU.SelectSQL.Add('Where NUMALU =' + TbAlumnosNUMALU.AsString); TbAnotaALU.SelectSQL.Add('Order by NUMALU, FECHA'); END; try TbAnotaALU.Open; except on E: Exception do begin //guardamos en variable "str" el mensaje que queremos se muestre str := 'Error abriendo TbAnotaALU con el mensaje : ' + E.Message; Application.MessageBox(PChar(str), 'Atención', MB_OK); end; end; FINALLY TbAnotaALU.EnableControls; END; end; Se situa siempre en el registro 0, por tanto, esté en el alumno que esté, me muestra SÓLO los registros para el alumno 0. ¿Alguna idea de lo que estoy haciendo mal? ¿alguna idea de como conectar estas dos tablas, para que me muestre los registros que necesito? Muchas gracias Virginia |
¿Puede tener que ver con la asignación que se hace de SQL al IBDataset, en el selectSQL? Quiero decir, que tal vez sea necesario que se restituya después de cada consulta.?
Gracias Virginia |
Cita:
Código:
select * |
Hola,
Si, ayer a última hora, vi donde estaba el error. Estaba añadiendo el valor desde fuera del selectSQL, por lo que algunas veces consideraba que no había valor, cuando salía de la ventana "Selección de Alumno", tras hacer una consulta sin registros resultantes. Esto es, estaba poniendo en código: TbAnotaALU.SelectSQL.Add('Where NUMALU =' + TbAlumnosNUMALU.AsString); En vez de poner dentro del SelectSQL, y por defecto: where NUMALU = :NUMALU Gracias por la ayuda, Cadetill. :) Virginia |
La franja horaria es GMT +2. Ahora son las 03:11:24. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi