Re: [delphi-br] Missing Data Provider(Classe)
Não adiantou, mas eu utilizei o método SetProviderName da seguinte forma: cds.SetProvider(dsp); O erro parou, mas agora o está dando outro erro: Missing DriverName Property Alguém? Vlw. - Original Message - From: Anderson RB To: delphi-br@yahoogrupos.com.br Sent: Wednesday, February 28, 2007 11:29 AM Subject: Re: [delphi-br] Missing Data Provider(Classe) Teste alterar //Configura ClientDataSet cds.ProviderName := 'dsp'; para cds.ProviderName:= ObjetoProvider.Name; - Original Message - From: Humberto To: delphi-br@yahoogrupos.com.br Sent: Tuesday, February 27, 2007 3:11 PM Subject: [delphi-br] Missing Data Provider(Classe) Caros colegas, estou criando uma classe de acesso a banco de dados, e ela irá funcionar da seguinte forma: Dentro dela defino um SqlConnection, um ClientDataSet, um SqlDataSet, um DataSetProvider e um Datasource. para ter certeza que estaria fazendo tudo certo, adicionei um DataModulo em um projeto de teste e liguei os componentes entre si e o SqlConnection à base de dados. Depois fiz as mesmas ligações em código. O SqlConnection conectou normalmente, porém ao tentar dar o Open no ClientDataSet (com o Select já colocado no CommandText), ele da o seguinte erro: Project Teste.exe raised exception class EDatabaseError with message: 'Missing data provider or data packet'. Segue abaixo o código da Classe para tirarem suas dúvidas e como a utilizo: Obrigado. Unit clsBancodeDados; interface uses Classes,DBXpress, WideStrings, FMTBcd, Provider, DBClient, DB, SqlExpr; type TBancodeDados = class(TComponent) private { Private declarations } sPathBD : String; bConectado : Boolean; sc : TSQLConnection; sds : TSQLDataSet; dsp : TDataSetProvider; cds : TClientDataSet; ds : TDataSource; public { Public declarations } constructor Create(AOwner: TComponent); destructor Destroy; function Conectar : Boolean; function ComandoSql (qSql : String) : Boolean; property Conectado: Boolean read bConectado; procedure SetDirBanco(Value: string); property DirBanco : String read sPathBD write SetDirBanco; published protected end; implementation {$Region 'Construtor e Destrutor'} constructor TBancodeDados.Create(AOwner: TComponent); begin inherited Create(AOwner); //Instancia Objetos de Conexão ao Banco. sc := TSQLConnection.Create(Self); cds := TClientDataSet.Create(Self); sds := TSQLDataSet.Create(Self); dsp := TDataSetProvider.Create(Self); ds := TDataSource.Create(Self); //< //Configura SQLConnection With sc.Params do Begin Clear; Add('DriverName= UIB FireBird15'); Add('Pasword=masterkey'); Add('User_Name=SYSDBA'); End; //< //Configura SqlDataSet With sds do Begin DataSource := ds; MaxBlobSize := -1; SQLConnection := sc; End; //< //Configura DataSource ds.DataSet := cds; //< //Configura ClientDataSet cds.ProviderName := 'dsp'; //< //Configura DataSetProvider dsp.DataSet := sds; dsp.Options := [poAllowCommandText, poUseQuoteChar]; //< end; destructor TBancodeDados.Destroy; begin inherited Destroy; sc.Free; sc := nil; cds.Free; cds := nil; sds.Free; sds := nil; dsp.Free; dsp := nil; ds.Free; ds := nil; end; {$EndRegion} {$Region 'Métodos da Classe'} procedure TBancodeDados.SetDirBanco(Value: string); Begin sPathBD := Value; sc.Params.Add('Database='+sPathBD); End; function TBancodeDados.Conectar : Boolean; Var bRetorno : Boolean; Begin bRetorno := True; try sc.Connected; bConectado := True; Except bRetorno := False; end; Result := bRetorno; End; function TBancodeDados.ComandoSql (qSql : String) : Boolean; Var bRetorno : Boolean; Begin bRetorno := True; try With cds do Begin Close; CommandText := qSql; Open; End; Except bRetorno := False; end; Result := bRetorno; End; {$EndRegion} end. Utilizo ela assim: procedure TForm1.FormCreate(Sender: TObject); var BD: TBancodeDados; begin BD := TBancodeDados.Create(Self); With BD do Begin DirBanco := 'PROG4:C:\Documents and Settings\Humberto\Meus documentos\Banco\HUMB.fdb'; If Conectar Then ShowMessage('Conectou') Else ShowMessage('Não Conectou'); ComandoSql('SELECT * FROM CLIENTE'); End; end; [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.5.446 / Virus Database: 268.18.4/703 - Release Date: 26/2/2007 14:56 [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] Missing Data Provider(Classe)
Teste alterar //Configura ClientDataSet cds.ProviderName := 'dsp'; para cds.ProviderName:= ObjetoProvider.Name; - Original Message - From: Humberto To: delphi-br@yahoogrupos.com.br Sent: Tuesday, February 27, 2007 3:11 PM Subject: [delphi-br] Missing Data Provider(Classe) Caros colegas, estou criando uma classe de acesso a banco de dados, e ela irá funcionar da seguinte forma: Dentro dela defino um SqlConnection, um ClientDataSet, um SqlDataSet, um DataSetProvider e um Datasource. para ter certeza que estaria fazendo tudo certo, adicionei um DataModulo em um projeto de teste e liguei os componentes entre si e o SqlConnection à base de dados. Depois fiz as mesmas ligações em código. O SqlConnection conectou normalmente, porém ao tentar dar o Open no ClientDataSet (com o Select já colocado no CommandText), ele da o seguinte erro: Project Teste.exe raised exception class EDatabaseError with message: 'Missing data provider or data packet'. Segue abaixo o código da Classe para tirarem suas dúvidas e como a utilizo: Obrigado. Unit clsBancodeDados; interface uses Classes,DBXpress, WideStrings, FMTBcd, Provider, DBClient, DB, SqlExpr; type TBancodeDados = class(TComponent) private { Private declarations } sPathBD : String; bConectado : Boolean; sc : TSQLConnection; sds : TSQLDataSet; dsp : TDataSetProvider; cds : TClientDataSet; ds : TDataSource; public { Public declarations } constructor Create(AOwner: TComponent); destructor Destroy; function Conectar : Boolean; function ComandoSql (qSql : String) : Boolean; property Conectado: Boolean read bConectado; procedure SetDirBanco(Value: string); property DirBanco : String read sPathBD write SetDirBanco; published protected end; implementation {$Region 'Construtor e Destrutor'} constructor TBancodeDados.Create(AOwner: TComponent); begin inherited Create(AOwner); //Instancia Objetos de Conexão ao Banco. sc := TSQLConnection.Create(Self); cds := TClientDataSet.Create(Self); sds := TSQLDataSet.Create(Self); dsp := TDataSetProvider.Create(Self); ds := TDataSource.Create(Self); //< //Configura SQLConnection With sc.Params do Begin Clear; Add('DriverName= UIB FireBird15'); Add('Pasword=masterkey'); Add('User_Name=SYSDBA'); End; //< //Configura SqlDataSet With sds do Begin DataSource := ds; MaxBlobSize := -1; SQLConnection := sc; End; //< //Configura DataSource ds.DataSet := cds; //< //Configura ClientDataSet cds.ProviderName := 'dsp'; //< //Configura DataSetProvider dsp.DataSet := sds; dsp.Options := [poAllowCommandText, poUseQuoteChar]; //< end; destructor TBancodeDados.Destroy; begin inherited Destroy; sc.Free; sc := nil; cds.Free; cds := nil; sds.Free; sds := nil; dsp.Free; dsp := nil; ds.Free; ds := nil; end; {$EndRegion} {$Region 'Métodos da Classe'} procedure TBancodeDados.SetDirBanco(Value: string); Begin sPathBD := Value; sc.Params.Add('Database='+sPathBD); End; function TBancodeDados.Conectar : Boolean; Var bRetorno : Boolean; Begin bRetorno := True; try sc.Connected; bConectado := True; Except bRetorno := False; end; Result := bRetorno; End; function TBancodeDados.ComandoSql (qSql : String) : Boolean; Var bRetorno : Boolean; Begin bRetorno := True; try With cds do Begin Close; CommandText := qSql; Open; End; Except bRetorno := False; end; Result := bRetorno; End; {$EndRegion} end. Utilizo ela assim: procedure TForm1.FormCreate(Sender: TObject); var BD: TBancodeDados; begin BD := TBancodeDados.Create(Self); With BD do Begin DirBanco := 'PROG4:C:\Documents and Settings\Humberto\Meus documentos\Banco\HUMB.fdb'; If Conectar Then ShowMessage('Conectou') Else ShowMessage('Não Conectou'); ComandoSql('SELECT * FROM CLIENTE'); End; end; [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
[delphi-br] Missing Data Provider(Classe)
Caros colegas, estou criando uma classe de acesso a banco de dados, e ela irá funcionar da seguinte forma: Dentro dela defino um SqlConnection, um ClientDataSet, um SqlDataSet, um DataSetProvider e um Datasource. para ter certeza que estaria fazendo tudo certo, adicionei um DataModulo em um projeto de teste e liguei os componentes entre si e o SqlConnection à base de dados. Depois fiz as mesmas ligações em código. O SqlConnection conectou normalmente, porém ao tentar dar o Open no ClientDataSet (com o Select já colocado no CommandText), ele da o seguinte erro: Project Teste.exe raised exception class EDatabaseError with message: 'Missing data provider or data packet'. Segue abaixo o código da Classe para tirarem suas dúvidas e como a utilizo: Obrigado. Unit clsBancodeDados; interface uses Classes,DBXpress, WideStrings, FMTBcd, Provider, DBClient, DB, SqlExpr; type TBancodeDados = class(TComponent) private { Private declarations } sPathBD: String; bConectado : Boolean; sc : TSQLConnection; sds: TSQLDataSet; dsp: TDataSetProvider; cds: TClientDataSet; ds : TDataSource; public { Public declarations } constructor Create(AOwner: TComponent); destructor Destroy; function Conectar : Boolean; function ComandoSql (qSql : String) : Boolean; property Conectado: Boolean read bConectado; procedure SetDirBanco(Value: string); property DirBanco : String read sPathBD write SetDirBanco; published protected end; implementation {$Region 'Construtor e Destrutor'} constructor TBancodeDados.Create(AOwner: TComponent); begin inherited Create(AOwner); //Instancia Objetos de Conexão ao Banco. sc := TSQLConnection.Create(Self); cds := TClientDataSet.Create(Self); sds := TSQLDataSet.Create(Self); dsp := TDataSetProvider.Create(Self); ds := TDataSource.Create(Self); //< //Configura SQLConnection With sc.Params do Begin Clear; Add('DriverName= UIB FireBird15'); Add('Pasword=masterkey'); Add('User_Name=SYSDBA'); End; //< //Configura SqlDataSet With sds do Begin DataSource := ds; MaxBlobSize := -1; SQLConnection := sc; End; //< //Configura DataSource ds.DataSet := cds; //< //Configura ClientDataSet cds.ProviderName := 'dsp'; //< //Configura DataSetProvider dsp.DataSet := sds; dsp.Options := [poAllowCommandText, poUseQuoteChar]; //< end; destructor TBancodeDados.Destroy; begin inherited Destroy; sc.Free; sc := nil; cds.Free; cds := nil; sds.Free; sds := nil; dsp.Free; dsp := nil; ds.Free; ds := nil; end; {$EndRegion} {$Region 'Métodos da Classe'} procedure TBancodeDados.SetDirBanco(Value: string); Begin sPathBD := Value; sc.Params.Add('Database='+sPathBD); End; function TBancodeDados.Conectar : Boolean; Var bRetorno : Boolean; Begin bRetorno := True; try sc.Connected; bConectado := True; Except bRetorno := False; end; Result := bRetorno; End; function TBancodeDados.ComandoSql (qSql : String) : Boolean; Var bRetorno : Boolean; Begin bRetorno := True; try With cds do Begin Close; CommandText := qSql; Open; End; Except bRetorno := False; end; Result := bRetorno; End; {$EndRegion} end. Utilizo ela assim: procedure TForm1.FormCreate(Sender: TObject); var BD: TBancodeDados; begin BD := TBancodeDados.Create(Self); With BD do Begin DirBanco := 'PROG4:C:\Documents and Settings\Humberto\Meus documentos\Banco\HUMB.fdb'; If Conectar Then ShowMessage('Conectou') Else ShowMessage('Não Conectou'); ComandoSql('SELECT * FROM CLIENTE'); End; end; [As partes desta mensagem que não continham texto foram removidas]