Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-08-2014
blaiselaborde blaiselaborde is offline
Miembro
 
Registrado: nov 2006
Ubicación: Reino Unido
Posts: 40
Poder: 0
blaiselaborde Va por buen camino
DataSource desactivado

Hola Buenos días;

En Delphi XE6, tengo una simple conexión de una Query a un Grid por medio de un DataSource. Cuando abro la Query, no se muestra nada en el Grid a menos que active el DataSource: DataSource.DataSet.Active := True;

Hasta ahí solucionado el problema, pero al refrescar la Query con otros parámetros (Close y Open), no ha habido forma de que me muestre los nuevos datos en el Grid, ni desactivando y activando nuevamente el DataSource ni Enabled False y True.

Podrían darme una idéa de qué es lo que estoy haciendo mal?

Gracias.
Responder Con Cita
  #2  
Antiguo 14-08-2014
blaiselaborde blaiselaborde is offline
Miembro
 
Registrado: nov 2006
Ubicación: Reino Unido
Posts: 40
Poder: 0
blaiselaborde Va por buen camino
Otra pista es que reviso la Query y ésta sí modifica su resultado al cambiar los parámetros, lo que puede indicar que el problema está en el Datasource ó en el DBGrid.
Responder Con Cita
  #3  
Antiguo 14-08-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Debe funcionar bien si el dbgrid tiene asociado el datasource que recoge los datos del dataset.
Si no nos das más pistas...
Responder Con Cita
  #4  
Antiguo 14-08-2014
blaiselaborde blaiselaborde is offline
Miembro
 
Registrado: nov 2006
Ubicación: Reino Unido
Posts: 40
Poder: 0
blaiselaborde Va por buen camino
He encontrado algo muy extraño y es que si le asigno nuevamente al DataSource la Query, antes de habilitar los controles, funciona correctamente:

DataSource1.DataSet := DataModule.Query1;

No sé si por tener la Query en un DataModule tenga algo que ver que se desconecta. De todas formas, antes de hacer la asignación, verifico el valor del DataSource1.DataSet y su valor es correcto.
Responder Con Cita
  #5  
Antiguo 14-08-2014
engranaje engranaje is offline
Miembro
 
Registrado: may 2011
Posts: 163
Poder: 13
engranaje Va por buen camino
Poco conozco de xe6 pero en versiones antiguas de delphi cuando querias cerrar, modificar y abrir un dataset que tenía controles "enganchados" era recomendable siempre hacer un dataset.disablecontrols antes de cerrar el dataset y un dataset.enablecontrols despues de abrirlo. Lo digo solo por si sirve de ayuda, ya digo que no tengo idea de si en las últimas versiones de delphi es necesario hacer esto.
Responder Con Cita
  #6  
Antiguo 14-08-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Nunca ha hecho falta.
Pero vuelvo a repetir lo anterior, si no nos das más pistas...
Responder Con Cita
  #7  
Antiguo 14-08-2014
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Yo también discrepo. Lo de llamar a DisableControls y EnableControls nunca ha sido necesario para poder cerrar y reabrir un conjunto de datos con efectividad visual. De todas formas lo dicho por engranaje muestra lo que es tener el valor de ayudar.

blaiselaborde: Para salir de dudas te recomiendo que, a manera de prueba, hagas todas las operaciones empleando el objeto rejilla.
Código Delphi [-]
DBGrid1.DataSource.DataSet := ElQuery;
DBGrid1.DataSource.DataSet.Close;
TQuery (DBGrid1.DataSource.DataSet).LoQueSea;  // Si es que es de clase "TQuery"
DBGrid1.DataSource.DataSet.Open;
Responder Con Cita
  #8  
Antiguo 14-08-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
blaiselaborde,

Cita:
Empezado por blaiselaborde
...En Delphi XE6, tengo una simple conexión de una Query a un Grid por medio de un DataSource. Cuando abro la Query, no se muestra nada en el Grid...No sé si por tener la Query en un DataModule tenga algo que ver...


Revisa este código:
Código Delphi [-]
  unit Unit2;
  
  interface
  
  uses
    System.SysUtils, System.Classes, Data.DB, IBX.IBDatabase, IBX.IBCustomDataSet,
    IBX.IBQuery;
  
  type
    TDM = class(TDataModule)
      IBTransaction1: TIBTransaction;
      IBDatabase1: TIBDatabase;
      IBQuery1: TIBQuery;
      DataSource1: TDataSource;
      procedure DataModuleCreate(Sender: TObject);
    private
      { Private declarations }
    public
      { Public declarations }
    end;
  
  var
    DM : TDM;
  
  implementation
  
  {%CLASSGROUP 'Vcl.Controls.TControl'}
  
  {$R *.dfm}
  
  procedure TDM.DataModuleCreate(Sender: TObject);
  begin
  
     IBDatabase1.Params.Clear;
     IBDatabase1.DatabaseName := 'D:\DB\FireBird\EMPLOYEE.FDB';
     IBDatabase1.LoginPrompt := False;
     IBDatabase1.Params.Add('User_Name=SYSDBA');
     IBDatabase1.Params.Add('Password=masterkey');
     IBDatabase1.DefaultTransaction := IBTransaction1;
     IBDatabase1.Connected := True;
  
     IBTransaction1.DefaultDatabase := IBDatabase1;
     IBQuery1.Database := IBDatabase1;
     IBQuery1.Transaction := IBTransaction1;
     DataSource1.DataSet := IBQuery1;
  
  end;
  
  end.
Código Delphi [-]
  unit Unit1;
  
  interface
  
  uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, IBX.IBDatabase, Vcl.StdCtrls,
    IBX.IBCustomDataSet, IBX.IBQuery, Vcl.Grids, Vcl.DBGrids;
  
  type
    TForm1 = class(TForm)
      DBGrid1: TDBGrid;
      Button1: TButton;
      Edit1: TEdit;
      Edit2: TEdit;
      Label1: TLabel;
      Label2: TLabel;
      procedure Button1Click(Sender: TObject);
      procedure FormCreate(Sender: TObject);
    private
      { Private declarations }
    public
      { Public declarations }
    end;
  
  var
    Form1: TForm1;
  
  implementation
  
  uses
     Unit2;
  
  {$R *.dfm}
  
  procedure TForm1.Button1Click(Sender: TObject);
  begin
     with DM.IBQuery1 do
     begin
  
        Close;
  
        SQL.Clear;
  
        SQL.Text := 'Select * From EMPLOYEE';
  
        if (Edit1.Text <> EmptyStr) and (Edit2.Text = EmptyStr) then
        begin
           SQL.Add(' Where Lower(FIRST_NAME) = :P1');
           ParamByName('P1').Value := LowerCase(Edit1.Text);
        end;
  
        if (Edit1.Text = EmptyStr) and (Edit2.Text <> EmptyStr) then
        begin
           SQL.Add(' Where Lower(LAST_NAME) = :P2');
           ParamByName('P2').Value := LowerCase(Edit2.Text);
        end;
  
        if (Edit1.Text <> EmptyStr) and (Edit2.Text <> EmptyStr) then
        begin
           SQL.Add(' Where Lower(FIRST_NAME) = :P1');
           SQL.Add(' Or Lower(LAST_NAME) = :P2');
           ParamByName('P1').Value := LowerCase(Edit1.Text);
           ParamByName('P2').Value := LowerCase(Edit2.Text);
        end;
  
        Open;
  
     end;
  end;
  
  procedure TForm1.FormCreate(Sender: TObject);
  begin
     DBGrid1.DataSource := DM.DataSource1;
  end;
  
  end.
El código anterior en Delphi XE6 bajo Windows 7 Professional x32, permite realizar consultas en un componente TDBGrid a una base de datos en FireBird (Tabla EMPLOYEE), por medio de un DataModule con los InterBase Data Access Components (IBDAC), como se muestra en las siguientes imagenes:





Espero sea útil

Nelson.

Última edición por Casimiro Notevi fecha: 14-08-2014 a las 23:22:37.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
wireless desactivado ebanibaldo Redes 3 16-05-2012 22:15:58
Botón run desactivado NovaG8 Varios 3 29-07-2010 22:19:46
autovacuum desactivado juanes31516 PostgreSQL 3 07-02-2010 01:41:43
win xp pro '' desactivado restaurar sistema ' botones67 Windows 3 26-01-2005 12:31:08


La franja horaria es GMT +2. Ahora son las 11:37:01.


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
Copyright 1996-2007 Club Delphi