Quizás te falta volver a abrir los DataSets después de volver a reconectar la base de datos.
(Últimas dos líneas, como ejemplo)
Código Delphi
[-]
Procedure Cambiar (Sender: TObject);
begin
AdoConnection1.LoginPrompt := False;
AdoQuery1.Connection := AdoConnection1;
DataSource1.DataSet := AdoQuery1;
DBGrid1.DataSource := DataSource1;
DBNavigator1.DataSource := DataSource1;
StrConn:='Provider=MSDASQL.1;'+
'Persist Security Info=False;'+
'Extended Properties="DSN=MySQL;'+
'DESCRIPTION=Mi Aplicacion;UID=root;'+
'PWD=1234;'+
'DATABASE='+xDataBase+';'+'PORT=3306"';
AdoConnection1.Connected:=False;
AdoConnection1.ConnectionString:=strConn;
Try
AdoConnection1.Open;
Except
ShowMessage('Imposible Conectar a la Base de Datos '+xDataBase);
Raise;
End;
AdoQuery1.Open;
End;