Fórum Ligar tabela temporária ao DataSource e liga-lo ao DBGrid #339459

28/03/2007

0

Olá a todos, uso Delphi 7 + Paradox + BDE.
Estou criando uma tabela temporária até ai tudo bem.
Preciso é ligar um DataSource a Tabela e Ligar o DBGrid ao DataSource.
Quando executo me retorna o ERRO: Access Violation at.......
Abaixo mostro o código que estou usando.

procedure CriaTabela;
Var
Tabela : TTable;
Origem : TDataSource;
begin
Tabela := TTable.Create(Self);
Origem := TDataSource(Self);
try
Tabela.DatabaseName := ´C:\´; { um alias BDE ou diretório}
Tabela.TableName := ´SGETEMP´; { extensão é opcional - será gerada automaticamente }
Tabela.Name := ´SGETEMP´;
Tabela.TableType := ttParadox;
with Tabela.FieldDefs do
begin
Add(´Codigo´, ftString, 5, true);
Add(´Favorecido´, ftString, 50, true);
Add(´Conta´, ftString, 6, true);
Add(´Vencimento´, ftDate, 0, false);
Add(´Valor´, ftFloat, 0, true);
end; { ´with Table2.FieldDefs´ }
Tabela.CreateTable;
// Agora o DataSource...
Origem.Name := ´STEMP´;
Origem.DataSet := Tabela; ///// aqui da o erro
// Agora o DBGrid
DbGridParcelas.DataSource := Origem;
Tabela.Open;
Tabela.Insert;
try
Tabela.FieldByName(´Codigo´).Value := ´00002´;
Tabela.FieldByName(´Favorecido´).Value := ´Micheus´;
Tabela.FieldByName(´Conta´).Value := ´010102´;
Tabela.FieldByName(´Vencimento´).Value := ´01/03/2007´;
Tabela.FieldByName(´Valor´).Value := ´134,56´;
Tabela.Post;
except
Tabela.Cancel;
end;
Tabela.Free;
Except
MessageDlg(´Error na Criação da Tabela´, mtError, [mbOK],0);
end; { try...except }
end;

Alguém poderia me dar uma dica.
Abraços a todos
Neto


Neto

Neto

Responder

Posts

28/03/2007

Neto

Pocha,
Nada pessoal????
Aguardo porque confio.
T+


Responder

Gostei + 0

30/04/2007

Carlos Bernardo

Amigo no seu caso origem.dataset := ´SGETEMP´;

Se quiser eu posso colocar um exemplo de como eu faço....


Responder

Gostei + 0

01/05/2007

Marco Salles

o erro de acesso violado esta ocorendo porque o Origem não foi criado...

De fato pela sua instrução

Tabela := TTable.Create(Self); Origem := TDataSource(Self);


isto não instancia o Origem... Troque por isso

Tabela := TTable.Create(nil); [u:7612dc86f6]Origem := TDataSource(nil)[/u:7612dc86f6];


O erro de acesso violado não deve mais existir.. Agora , olhando rápido o seu código , acho que voce não vai conseguir ver o resultado no seu dbdrid , porque voce destroe a instancia no final e portanto corta a alimentação do dbGrid......

Para que isso funcione entre outras sugestões como o uso de um TstringGrid é declarar Tabela e Origem fora do escopo desta Procedure
CriaTabela


Responder

Gostei + 0

01/05/2007

Marco Salles

Coorijindo :

o erro de acesso violado esta ocorendo porque o Origem não foi criado... De fato pela sua instrução Citação: [quote:7432fb9bb1]Tabela := TTable.Create(Self); Origem := TDataSource(Self);



isto não instancia o Origem... Troque por isso

Citação:
Tabela := TTable.Create(nil); Origem :=[b:7432fb9bb1] TDataSource.Create(nil);[/b:7432fb9bb1]
[/quote:7432fb9bb1]


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar