Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Não consigo abrir o DataSet


nsouza

Pergunta

Colegas,

Meu problema é o seguinte:

Tenho um formulário que ao pressionar F4 chama um pequeno formulário que contém um grid.

Esta grid esta vinculado a um DataSource que recebe dados do clientDataSet, pois uso o DBExpress.

No evento OnCellClick coloquei o código abaixo:

procedure TF_ImportaMorador.DBGrid1CellClick(Column: TColumn);

begin

if Column.ID = 0 then

begin

if DMConsultas.Q_ImportaMoradorarquivo.asstring = 'X' then

begin

DMConsultas.CDs_ImportaMorador.Edit;

DMConsultas.CDs_ImportaMoradorarquivo.asstring := '';

DMConsultas.CDs_ImportaMorador.post;

end

else

begin

DMConsultas.CDs_ImportaMorador.Edit;

DMConsultas.CDs_ImportaMoradorarquivo.asstring := 'X';

DMConsultas.CDs_ImportaMorador.post;

end;

end;

end;

A idéia é que ao clicar no coluna ele marque com um "X" o linha e depois quando eu clicar em confirmar, os dados serão importados

para a tabela, "arquivar_morador".

No entando, quando eu clico ao invés de marcar o X, da a persistente mensagem: Traduzindo:"você não pode realizar esta operação em

um dataset fechado"

já fiz várias coisas.

Já coloquei no evento OnCreate do form

DMConsultas.CDs_ImportaMorador.Close;

DMConsultas.CDs_ImportaMorador.Open;, para abrir a dataset e não resolveu.

Alguém poderia me ajudar por favor. Já passei horas tentando resolver.

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

Coloque no evento OnActive do Form

DMConsultas.CDs_ImportaMorador.Active := true;

procedure TF_ImportaMorador.DBGrid1CellClick(Column: TColumn);
begin


if Column.ID = 0 then
begin
if DMConsultas.Q_ImportaMoradorarquivo.asstring = 'X' then
begin

DMConsultas.CDs_ImportaMorador.Edit;
DMConsultas.CDs_ImportaMoradorarquivo.asstring := '';
DMConsultas.CDs_ImportaMorador.post;

DMConsultas.CDs_ImportaMorador.ApplyUpdates(-1);


end
else
begin

DMConsultas.CDs_ImportaMorador.Edit;
DMConsultas.CDs_ImportaMoradorarquivo.asstring := 'X';
DMConsultas.CDs_ImportaMorador.post;

DMConsultas.CDs_ImportaMorador.ApplyUpdates(-1);


end;
end;
end;

OBS: Não esqueça de ativar a Query tambem

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Coloque no evento OnActive do Form

DMConsultas.CDs_ImportaMorador.Active := true;

procedure TF_ImportaMorador.DBGrid1CellClick(Column: TColumn);
begin


if Column.ID = 0 then
begin
if DMConsultas.Q_ImportaMoradorarquivo.asstring = 'X' then
begin

DMConsultas.CDs_ImportaMorador.Edit;
DMConsultas.CDs_ImportaMoradorarquivo.asstring := '';
DMConsultas.CDs_ImportaMorador.post;

DMConsultas.CDs_ImportaMorador.ApplyUpdates(-1);


end
else
begin

DMConsultas.CDs_ImportaMorador.Edit;
DMConsultas.CDs_ImportaMoradorarquivo.asstring := 'X';
DMConsultas.CDs_ImportaMorador.post;

DMConsultas.CDs_ImportaMorador.ApplyUpdates(-1);


end;
end;
end;

OBS: Não esqueça de ativar a Query tambem

abraço

Jhonas,

fiz o que você orientou de ativar a query, mas da a mensagem abaixo.

Messagem Q_ImportaMorador: Cannot modify a read only dataset

Como posso resolver esta problema. Desculpe por insistir em erros que pra você talvez sejam basicos.

procedure TF_ImportaMorador.DBGrid1CellClick(Column: TColumn);

begin

DMConsultas.Q_ImportaMorador.Close;

DMConsultas.Q_ImportaMorador.Open;

DMConsultas.Q_ImportaMorador.Active:=false;

DMConsultas.Q_ImportaMorador.Active:=true;

if Column.ID = 0 then

begin

if DMConsultas.Q_ImportaMoradorarquivo.asstring = 'X' then

begin

DMConsultas.Q_ImportaMorador.Edit;

DMConsultas.Q_ImportaMoradorarquivo.asstring := '';

DMConsultas.Q_ImportaMorador.post;

end

else

begin

DMConsultas.Q_ImportaMorador.Edit;

DMConsultas.Q_ImportaMoradorarquivo.asstring := 'X';

DMConsultas.Q_ImportaMorador.post;

end;

end;

end;

Link para o comentário
Compartilhar em outros sites

  • 0

Jhonas,

fiz o que você orientou de ativar a query, mas da a mensagem abaixo.

Messagem Q_ImportaMorador: Cannot modify a read only dataset

Como posso resolver esta problema. Desculpe por insistir em erros que pra você talvez sejam basicos.

procedure TF_ImportaMorador.DBGrid1CellClick(Column: TColumn);
begin

DMConsultas.Q_ImportaMorador.Close;
DMConsultas.Q_ImportaMorador.Open;

DMConsultas.Q_ImportaMorador.Active:=false;
DMConsultas.Q_ImportaMorador.Active:=true;

if Column.ID = 0 then
begin
if DMConsultas.Q_ImportaMoradorarquivo.asstring = 'X' then
begin
DMConsultas.Q_ImportaMorador.Edit;
DMConsultas.Q_ImportaMoradorarquivo.asstring := '';
DMConsultas.Q_ImportaMorador.post;
end
else
begin
DMConsultas.Q_ImportaMorador.Edit;
DMConsultas.Q_ImportaMoradorarquivo.asstring := 'X';
DMConsultas.Q_ImportaMorador.post;
end;
end;
end;
Seu codigo está estranho ... voce esta usando Query ou ClientDataSet ???
procedure TF_ImportaMorador.DBGrid1CellClick(Column: TColumn);
begin


if Column.ID = 0 then
begin
if DMConsultas.Q_ImportaMoradorarquivo.asstring = 'X' then
begin

DMConsultas.CDs_ImportaMorador.Edit;
DMConsultas.CDs_ImportaMoradorarquivo.asstring := '';
DMConsultas.CDs_ImportaMorador.post;

DMConsultas.CDs_ImportaMorador.ApplyUpdates(-1);


end
else
begin

DMConsultas.CDs_ImportaMorador.Edit;
DMConsultas.CDs_ImportaMoradorarquivo.asstring := 'X';
DMConsultas.CDs_ImportaMorador.post;

DMConsultas.CDs_ImportaMorador.ApplyUpdates(-1);


end;
end;
end;

Veja a diferença dos 2 ... se estiver usando somente a Query a propriedade RequestLive deverá estar como true

para não ocorrer esse erro:

Messagem Q_ImportaMorador: Cannot modify a read only dataset

Não pode modificar um dataset somente como leitura

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Jhonas,

fiz o que você orientou de ativar a query, mas da a mensagem abaixo.

Messagem Q_ImportaMorador: Cannot modify a read only dataset

Como posso resolver esta problema. Desculpe por insistir em erros que pra você talvez sejam basicos.

procedure TF_ImportaMorador.DBGrid1CellClick(Column: TColumn);
begin

DMConsultas.Q_ImportaMorador.Close;
DMConsultas.Q_ImportaMorador.Open;

DMConsultas.Q_ImportaMorador.Active:=false;
DMConsultas.Q_ImportaMorador.Active:=true;

if Column.ID = 0 then
begin
if DMConsultas.Q_ImportaMoradorarquivo.asstring = 'X' then
begin
DMConsultas.Q_ImportaMorador.Edit;
DMConsultas.Q_ImportaMoradorarquivo.asstring := '';
DMConsultas.Q_ImportaMorador.post;
end
else
begin
DMConsultas.Q_ImportaMorador.Edit;
DMConsultas.Q_ImportaMoradorarquivo.asstring := 'X';
DMConsultas.Q_ImportaMorador.post;
end;
end;
end;
Seu codigo está estranho ... voce esta usando Query ou ClientDataSet ???
procedure TF_ImportaMorador.DBGrid1CellClick(Column: TColumn);
begin


if Column.ID = 0 then
begin
if DMConsultas.Q_ImportaMoradorarquivo.asstring = 'X' then
begin

DMConsultas.CDs_ImportaMorador.Edit;
DMConsultas.CDs_ImportaMoradorarquivo.asstring := '';
DMConsultas.CDs_ImportaMorador.post;

DMConsultas.CDs_ImportaMorador.ApplyUpdates(-1);


end
else
begin

DMConsultas.CDs_ImportaMorador.Edit;
DMConsultas.CDs_ImportaMoradorarquivo.asstring := 'X';
DMConsultas.CDs_ImportaMorador.post;

DMConsultas.CDs_ImportaMorador.ApplyUpdates(-1);


end;
end;
end;

Veja a diferença dos 2 ... se estiver usando somente a Query a propriedade RequestLive deverá estar como true

para não ocorrer esse erro:

Messagem Q_ImportaMorador: Cannot modify a read only dataset

Não pode modificar um dataset somente como leitura

abraço

Estou usando o DBExpress com o cliente dataset. Mas

no evento deste Grid estou usando uma query Q_ImportaMorador porque a função dela é somente gravar os dados

e unidirecional. Quando usei o cliente dataset deu o mesmo erro.

Abaixo o codigo do evento OnCellClick.. Fiz desta maneira com o intuito de abrir ou ativar a query.

Ai deu a mensagem que enviei anteriormente.

Messagem Q_ImportaMorador: Cannot modify a read only dataset

procedure TF_ImportaMorador.DBGrid1CellClick(Column: TColumn);

begin

DMConsultas.Q_ImportaMorador.Close;

DMConsultas.Q_ImportaMorador.Open;

DMConsultas.Q_ImportaMorador.Active:=false;

DMConsultas.Q_ImportaMorador.Active:=true;

if Column.ID = 0 then

begin

if DMConsultas.Q_ImportaMoradorarquivo.asstring = 'X' then

begin

DMConsultas.Q_ImportaMorador.Edit;

DMConsultas.Q_ImportaMoradorarquivo.asstring := '';

DMConsultas.Q_ImportaMorador.post;

end

else

begin

DMConsultas.Q_ImportaMorador.Edit;

DMConsultas.Q_ImportaMoradorarquivo.asstring := 'X';

DMConsultas.Q_ImportaMorador.post;

end;

end;

end

Link para o comentário
Compartilhar em outros sites

  • 0

Na Query a propriedade RequestLive deverá estar como true

procedure TF_ImportaMorador.DBGrid1CellClick(Column: TColumn);
begin

DMConsultas.Q_ImportaMorador.Active:=false;
DMConsultas.Q_ImportaMorador.Active:=true;

if Column.ID = 0 then
begin
   if DMConsultas.Q_ImportaMoradorarquivo.asstring = 'X' then
     begin
        DMConsultas.Q_ImportaMorador.Edit;
        DMConsultas.Q_ImportaMoradorarquivo.asstring := '';
        DMConsultas.Q_ImportaMorador.post;
        DMConsultas.Q_ImportaMorador.ApplyUpdates;
     end
  else
     begin
        DMConsultas.Q_ImportaMorador.Edit;
        DMConsultas.Q_ImportaMoradorarquivo.asstring := 'X';
        DMConsultas.Q_ImportaMorador.post;
        DMConsultas.Q_ImportaMorador.ApplyUpdates;
     end;
end;

end.

Verifique ... porque fiz um teste aqui e funcionou corretamente

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Na Query a propriedade RequestLive deverá estar como true

procedure TF_ImportaMorador.DBGrid1CellClick(Column: TColumn);
begin

DMConsultas.Q_ImportaMorador.Active:=false;
DMConsultas.Q_ImportaMorador.Active:=true;

if Column.ID = 0 then
begin
   if DMConsultas.Q_ImportaMoradorarquivo.asstring = 'X' then
     begin
        DMConsultas.Q_ImportaMorador.Edit;
        DMConsultas.Q_ImportaMoradorarquivo.asstring := '';
        DMConsultas.Q_ImportaMorador.post;
        DMConsultas.Q_ImportaMorador.ApplyUpdates;
     end
  else
     begin
        DMConsultas.Q_ImportaMorador.Edit;
        DMConsultas.Q_ImportaMoradorarquivo.asstring := 'X';
        DMConsultas.Q_ImportaMorador.post;
        DMConsultas.Q_ImportaMorador.ApplyUpdates;
     end;
end;

end.

Verifique ... porque fiz um teste aqui e funcionou corretamente

abraço

Jhonas,

estou usando um TSQLQuery, e não encontrei esta propriedade, você usou este componente quando fez o teste?

Link para o comentário
Compartilhar em outros sites

  • 0

Tenta Assim:

procedure TF_ImportaMorador.DBGrid1CellClick(Column: TColumn);
begin

if Column.ID = 0 then
begin
CDs_ImportaMorador.open;

   if DMConsultas.CDs_ImportaMorador.text = 'X' then
     begin
        DMConsultas.CDs_ImportaMorador.edit;
        DMConsultas.Q_ImportaMoradorarquivo.text := '';
        DMConsultas.CDs_ImportaMorador.post;
        DMConsultas.CDs_ImportaMorador.ApplyUpdates(0);
     end
  else
     begin
        DMConsultas.CDs_ImportaMorador.Edit;
        DMConsultas.CDs_ImportaMorador.text := 'X';
        DMConsultas.CDs_ImportaMorador.post;
        DMConsultas.CDs_ImportaMorador.ApplyUpdates(0);
     end;
end;

end.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Tenta Assim:

procedure TF_ImportaMorador.DBGrid1CellClick(Column: TColumn);
begin

if Column.ID = 0 then
begin
CDs_ImportaMorador.open;

   if DMConsultas.CDs_ImportaMorador.text = 'X' then
     begin
        DMConsultas.CDs_ImportaMorador.edit;
        DMConsultas.Q_ImportaMoradorarquivo.text := '';
        DMConsultas.CDs_ImportaMorador.post;
        DMConsultas.CDs_ImportaMorador.ApplyUpdates(0);
     end
  else
     begin
        DMConsultas.CDs_ImportaMorador.Edit;
        DMConsultas.CDs_ImportaMorador.text := 'X';
        DMConsultas.CDs_ImportaMorador.post;
        DMConsultas.CDs_ImportaMorador.ApplyUpdates(0);
     end;
end;

end.

Abraços

Obrigado, funcionou

(Resolvido) Não consigo abrir dataset

Link para o comentário
Compartilhar em outros sites

  • 0
ahahah o problema era q você tava botando seucds.astring, e na verdade era seucds.text, eu num sei a explicação lógica, mas é isso ai, ahuahuahua

Abraços!

Pelo contrário, o text deu erro, mas enfim concertou e estou rodando normal. obrigado de novo.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...