Olá pessoal, Estou fazendo um framework de persistência no delphi mas estou me deparando com o seguinte erro que ainda não consegui resolver.
Minha classe de gerência tem o seguinte método construtor: constructor TGerente.Create; begin inherited; aMapeamentoAtributos := TList.Create; //adiciona chave primária - toda tabela precisa ter este campo adicionarMapeamento(tpInteiro, 'ID', false); //cria objetos de conexão aClientDataSet := TClientDataSet.Create(nil); aSqlDataSet := TSQLDataSet.Create(nil); aDataSetProvider := TDataSetProvider.Create(nil); //define nomes aClientDataSet.Name := 'CDS'; aSqlDataSet.Name := 'SDS'; aDataSetProvider.Name := 'DSP'; //define atributos do SDS aSqlDataSet.DbxCommandType := 'Dbx.SQL'; aSqlDataSet.CommandType := ctQuery; aSqlDataSet.SQLConnection := aConexao.conexaoSql; aSqlDataSet.CommandText := ''; //define atributos do DSP aDataSetProvider.DataSet := aSqlDataSet; aDataSetProvider.UpdateMode := TUpdateMode.upWhereKeyOnly; aDataSetProvider.Options := [poAllowCommandText,poUseQuoteChar,poPropogateChanges,poCascadeDeletes,poCascadeUpdates]; aDataSetProvider.Exported := true; //define atributos do CDS aClientDataSet.ProviderName := aDataSetProvider.Name; aClientDataSet.StoreDefs := True; aClientDataSet.SetProvider(aDataSetProvider); end; Até ai tudo bem. Mas após criar um campo chave primária no meu clientDataSet e dar um open no clientDataSet , ocorre um access violation: procedure TGerente.adicionarCampoChave(nomeCampo: String; tipoCampo: TFieldKind); var campo: TIntegerField; begin campo := TIntegerField.Create(aClientDataSet); with campo do begin FieldName := nomeCampo; FieldKind := tipoCampo; DisplayLabel := nomeCampo; Name := aSqlDataSet.Name + nomeCampo; ProviderFlags := [pfInUpdate, pfInWhere, pfInKey]; end; with aSqlDataSet.Fields do begin //Add(campo.Name, ftAutoInc, 0, False); Add(campo); end; with aClientDataSet.Fields do begin //Add(campo.Name, ftAutoInc, 0, False); Add(campo); end; end; Eu chamo esse metodo ai e faço: aClientDataSet.Open; <- access violation A Query contida no sqlDataSet é (select * from clientes) -- Atenciosamente, Paulo Coutinho. Blog: www.prsolucoes.com/blog Site: www.prsolucoes.com Msn: pa...@prsolucoes.com [As partes desta mensagem que não continham texto foram removidas]