Como utilizar o comando Execute do SQLCOnnection?

Delphi

06/05/2005

Pessoal ,

Estou tentando utilizar o comando Execute do SQLConnection para retornar um pequeno resultset.

Vi que ele tem a opção de passar o Result set no terceiro parâmetro. Mas isso está dando um acess violation em meu código.

No Help fala, pode utilizar um TCustomSQLDataSet.
Meu codigo é o seguinte.

var
  ComandoSQL: string;
  vDataSet: TCustomSQLDataSet;
begin
    vDataSet := TCustomSQLDataSet.Create(nil);
    vDataSet.SQLConnection := SQLConnection1;
    ComandoSQL := ´select * from COMOSOUBEDAESCOLA´;
    SQLConnection1.Execute(ComandoSQL, nil,vDataSet);
    vDataSet.Open;
    ShowMessage(IntToStr(vDataSet.RecordCount));


Alguem tem ideia de como passo?


Yallebr

Yallebr

Curtidas 0

Respostas

Kotho

Kotho

06/05/2005

Duas coisas:

1) Não crie o objeto...

2) passe o objeto como ponteiro (@vDataSet)


GOSTEI 0
Vinicius2k

Vinicius2k

06/05/2005

Colega,

Se vc verificar o parametro ´ResultSet´ do método irá perceber que é um ponteiro e também que vc não precisa criar o TCustomSQLDataSet, já que o método se encarregará disso.
Só falta o [b:36b446abc7]@[/b:36b446abc7]... :wink:

...
var
  ComandoSQL: string;
  vDataSet: TCustomSQLDataSet;
begin
  ComandoSQL := ´select * from COMOSOUBEDAESCOLA´; 
  SQLConnection1.Execute(ComandoSQL, nil, @vDataSet);
  vDataSet.Open;
  ShowMessage(IntToStr(vDataSet.RecordCount));
  vDataSet.Free;
end;


T+


GOSTEI 0
Yallebr

Yallebr

06/05/2005

Vinicius2K e Kotho,


Obrigado.
Eu reparei no método que o parâmetro é um ponteiro.
Mas agora minha dúvida é, um objeto é um ponteiro? Se ele é, não era suficiente eu apenas colocar o objeto?

Qual é a diferença do @ nesse caso?
Por exemplo se eu utilizar o comando abaixo não irá aceitar o parametro. Sendo que espera um mesmo parametro (tipo pointer) que o Execute, pq ?

New(@vSQLDataSet)


obrigado.


GOSTEI 0
POSTAR