FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Misma consulta sobre bd distintas. No actualiza info obtenida.
Hola a todos,
Por falta de experiencia creo que me estoy dejando algo sin hacer. A ver si me podéis ayudar. Estoy haciendo un programa con Delphi 5 sobre Access 97. Tengo 7 bases de datos access, una para cada año, 2000.mdb, 2001.mdb etc. Todas estas bd las conectaba al iniciar el programa, pero ahora quiero conectar el programa a la bd correspondiente según el año indicado en un combo. Al cambiar del año, en un dbgrid se muestra la info correspondiente a ese año. El problema que tengo es que si selecciono 2007, muestra la info de 2007, y al cambiar a 2006, me sigue mostrando la info de 2007. Lo que hago cuando vario el año es desconectar la bd de 2007 y conectarle la de 2006, pero parece que no tengo algo en cuenta porque parece que mantiene la conexión con 2006. KeepConection está a false. Este es el código. Os añado las propiedades de la bd para que veáis como la tengo configurada por si falla algo: if dbContabilidad.Conected = true then begin dbContabilidad.Conected = false; dbContabilidad.CloseDatasets; dbContabilidad.Close; end dbContabilidad.params.add('DATABASE NAME=' + rutaBD); //Es la ruta a la bd segun el año dbContabilidad.databasename := 'BDContabilidad'; dbContabilidad.drivername := 'MSACCESS'; dbContabilidad.exclusive := false; dbContabilidad.HandleShared := false; dbContabilidad.KeepConnection := false; dbContabilidad.LoginPrompt := false; dbContabilidad.Name := 'dbConta'; dbContabilidad.ReadOnly := false; dbContabilidad.SessionName := 'Default'; dbContabilidad.Tag := 0; dbContabilidad.TransIsolation := tiReadCommitted; dbContabilidad.connected := true; Luego ejecuto la qry que muestra los datos en el grid. Como no conseguía que fuera he pensado crear la bd en ejecución cada vez que hacía la consulta a la bd. Pero de nuevo vuelvo a hacer algo mal, porque al seleccionar un nuevo año trato de liberar la anterior antes de crear la nueva pero no la encuentra: He probado de dos formas: if Assigned(dbConta) then FreeAndNil(dbConta), pero siempre me da falso. y, por probar (un poco bruto), buscando el componente en la aplicación: Al código anterior le añado: dbContabilidad := TDataBase.Create(self); var dbContabilidadAux: TDataBase; //declaro. dbContabilidadAux := Application.FindComponent('dbConta') as TDataBase; if Assigned(dbContabilidadAux) then begin dbContabilidad.connected := false; dbContabilidad.CloseDatasets; dbContabilidad.Close; freeandnil(dbContabilidad); freeandnil(dbContabilidadAux) end; Pero no localizo el conponente. No se si lo estoy creando mal o que. Otra opción que sí funciona es crear en mi bd tablas adjuntas al resto de bd y hacer la qry sobre ella, pero es justo lo que trato de evitar. Bueno, un poco lioso, pero seguro que tiene que ser una tontería. Gracias de antemano.
__________________
Setry2 Eres un bit? www.lafesta.com |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Info sobre XML en Delphi 5 | ebeltete | Varios | 2 | 19-09-2005 09:28:37 |
pasar de una tabla1 a una tabla2 la misma info | el_barto | Conexión con bases de datos | 7 | 31-08-2005 18:58:44 |
donde bajar info, tutoriales sobre delphi .net? | Pascual Montes | .NET | 2 | 09-05-2005 19:28:10 |
info sobre firebird | JoseQ | Firebird e Interbase | 2 | 13-08-2004 09:29:16 |
distintas picklists en la misma columna de dbgrid | arc22 | Varios | 4 | 28-06-2004 16:10:30 |
|