Utilizar un mismo TDataBase para distintas db.
Hola a todos!
Me gustaría utilizar un solo TDAtaBAse para, en tiempo de ejecución, conectarme a distintas bd a elección. Para ello, cierro los datasets, desconecto la conexión previa y cierro la bd; luego le paso al TDataBase la ruta de la otra bd y la conecto. El problema es que hago la qry sobre la nueva bd y los resultados que muestro en el dbgrid pertenecen a la bd anterior. ¿Sabéis por donde puede ir el asunto? Gracias de antemano! |
BD Access 97 y Delphi 5.
Perdonad, no había mencionado la bd y la versión de Delphi. Sorry!
|
Hola!
Hola!
Te has asegurado bien de cerrar todos los componentes, incluida la query, antes de hacer el cambio de base de datos? Porqué en principio no veo problema alguno en lo que haces... deberia cogerte el cambio. Saludos! |
muestranos que haces...
Hola de nuevo!
Tambén podrías poner un poco de código para darnos alguna pista de lo que puede pasar :rolleyes: |
Código.
Primero gracias por tu respuesta. Fíjate que es lo que hago:
Tengo un objeto TDataBase en el formulario, que NO creo en ejecución. //Cojo del registro de windows la ruta a la bd en función del anyoContable que quiero consultar baseDatosConta := LeerRegistro('Bases de datos', 'BDconta'+anyoContable); //Se la paso a la bd y me contecto if dbContabilidad.connected = true then begin dbContabilidad.CloseDatasets; dbContabilidad.Close; dbContabilidad.connected = false end; dbContabilidad.params.add('DATABASE NAME=' + baseDatosConta); dbContabilidad.connected := true; //Libero la qry que contiene los datos que muestro en el grid. if Assigned(qryMayor) then FreeAndNil(qryMayor); qryMayor := TQuery.create(self); dsMayor.DataSet := qryMayor; //datasource with qryMayor do try DatabaseName := 'BDContabilidad'; RequestLive := true; SQL.Add(' laquery '); Open; if not isEmpty then begin dbgMayor.DataSource := dsMayor; //El grid y el data source. dsMayor.Autoedit := false; end; except On E: Exception do begin CapturaErrores(E); Cancel; end; end; El funcionamiento erróneo que me da es el siguiente: Selecciono del combo el AnyoContable 2006 pasando como parametro una cuenta contable del cliente 430000001-> Se muestra en el grid los datos referentes a 2006 para la cuenta contable de ese cliente. Selecciono del combo el AnyoContable 2007 pasando como parametro otra cuenta contable del mismo cliente 431000001 -> Se muestra en el grid los datos referentes a 2006 de la otra cuenta del cliente, en vez de 2007. Como ves, la qry es distinta cada vez, y los datos que muestran son distintos, pero siempre referidos a 2006. Si ahora buscara de la cuenta 432000001 para el 2004, me mostraría del 2006 la cuenta 432000001, es decir, el problema debe estar en la conexión con la bd, que no varía. Bueno, a ver si te he dado alguna pista. Gracias por tu tiempo! |
pa probar que no quede...
Hola!
:confused: La verdad es que no se me ocurre nada... a no ser... que aunque ya veo que destruyes y vuelves a crear la query... quede en memoria por alguna razón, la verdad és que... lo que me soluciona un montón de problemas siempre, és hacer un close y un open de la query,así siempre me refresca bien los datos. En tu caso: Siento no ser de + ayuda. Suerte! |
Lo hemos intentado.
Bueno, lo hemos intentado. Muchas gracias por tu tiempo. Un saludo.
|
La franja horaria es GMT +2. Ahora son las 09:25:43. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi