Registro no FB com IBQuery

Delphi

29/01/2009

Tenho as seguintes linhas:

 
 with dados.IBQuery1 do   //Dados é um data module
 begin
    insert;
    FieldByname(´Registro´).Value:=VariavelNumerica;
    FieldByname(´Nome´).value:=Edit1.Text;
    FieldByname(´Enderco´).value:=Edit2.Text;
    Post;
 end;


Dá erro: ´Canot modify a readonly dataset´

Obrigado.


Abelha

Abelha

Curtidas 0

Respostas

Abelha

Abelha

29/01/2009

sobe....


GOSTEI 0
Woinch

Woinch

29/01/2009

Experimente vincular essa Query a um DataSetProvider e vincular um ClientDataSet e este DataSetProvider. Verifique se executando os comandos nesse ClientDataSet não resolve seu problema.


GOSTEI 0
Abelha

Abelha

29/01/2009

Obriogado pela dica.

funcionou só usando o clientdataset, setando ele para o IBQuery: [b:aae5f7adb7]Assign Data From[/b:aae5f7adb7] = IBQuery1.

Vou ter que colocar um ClientDataSet para cada tabela? São 10 tabelas.

Por enquanto está rodando em máquina local, depois vou passar para servidor, aê acho que vou ter que usar o DataSetProvider?

Valeu.


GOSTEI 0
Abelha

Abelha

29/01/2009

Ops!
Falei que rodou, mas os dados não foram enviados para a tabela no banco de dados. Só eram visulizados na aplicação. Quando abri o projeto novamente, os dados já haviam sumido. :?


GOSTEI 0
Woinch

Woinch

29/01/2009

Utilize os seguintes eventos para enviar os dados para o banco:

procedure TDM1.cdsPadraoAfterCancel(DataSet: TDataSet);
begin
  if (DataSet as TClientDataSet).ChangeCount > 0 then
    (DataSet as TClientDataSet).CancelUpdates;
end;

procedure TDM1.cdsPadraoAfterDelete(DataSet: TDataSet);
begin
  if (DataSet as TClientDataSet).ApplyUpdates(-1) > 0 then
    (DataSet as TClientDataSet).CancelUpdates;
end;

procedure TDM1.cdsPadraoAfterPost(DataSet: TDataSet);
begin
  if (DataSet as TClientDataSet).ApplyUpdates(-1) > 0 then
    DataSet.Edit;
end;



GOSTEI 0
Abelha

Abelha

29/01/2009

Desculpe a ignorância, mas esses eventos estão associados a qual objeto?

Outra dúvida: Por enquanto está em localhost, mas depois irei usar o mesmo sistema in client/server. vou ter problemas na migração?

Obrigado pela paciência.


GOSTEI 0
Woinch

Woinch

29/01/2009

Desculpe utilizo uma nomenclatura padrão acho que nem todos conhecem... hehehe

cds = TClientDataSet
Vincule esses eventos a todos os ClientDataSet´s.

Referente a outra pergunta. Se você manter o mesmo ambiente de banco de dados não vai haver problema algum na migração.


Abraços...


GOSTEI 0
Abelha

Abelha

29/01/2009

Obrigado.


GOSTEI 0
Abelha

Abelha

29/01/2009

Woinch, obrigado pelas dicas, mas ainda tenho problemas:

Agora dá erro: ´CDS Missing dataprovider or datapackge´.

O arquivo que uso é um ´bancodedados.fdb´ e estou o fbclient.


GOSTEI 0
Woinch

Woinch

29/01/2009

Primeiro vincule a propriedade DataSet do DataSetProvider ao Query. Depois vincule a propriedade ProviderName do ClientDataSet ao DataSetProvider.

PS.: O Query já está vinculado a um componente de conexão, correto?
Isso irá resolver...


GOSTEI 0
POSTAR