Fórum Problema com dbgrid #424632

25/09/2012

0

amigos..vou explicar a situação..

tenho um form com dbgrid ok

no form tem um botão consultar outro para excluir e outro para ver todos os registros..

o que acontece..limpo meu banco de dados certo? apago todos os registros..fica limpo..ok

ai eu entro no meu sistema..entro no form cadastrar e cadastro 3 itens em sequencia ok

dou um executar dentro do mysql para atualizar o banco ok

ai eu faço um consulta, uma exclução consulto de novo apenas um registro selecionando na combobox o item relacionado ok

só que se eu faço isso 3 ou 4 vezes o dbgrid não retorna mais o que tá no banco de dados..mesmo havendo dados lá

em tempo de execução é como eles se perdessem depois de algumas consultas ou alterações entendem..

o curioso é que tenho outro form que faz a mesma coisa e isso não acontece..

tenho datasets separados query e clientedataset providername connection datasource tudo certo e ligado..

não entendo porque acontece isso..preciso de ajuda..é urgente amigos..meu tempo para terminar o tcc tá acabando..
grato.
Mauricio Nicoli

Mauricio Nicoli

Responder

Posts

26/09/2012

Alisson Santos

O que geralmente ocorre é que em algum momento o seu dataset não está sendo aberto.
tentou debugar o programa para verificar se ele executa todos os comando corretamente.
Responder

Gostei + 0

26/09/2012

Ricardo Araujo

caro amigo pode colocar alguns print e como esta a sua rotina?
Responder

Gostei + 0

26/09/2012

Mauricio Nicoli

procedure Tfrmsuporteteccons.btnpesquisarClick(Sender: TObject);
begin
 DM.ClientDataSetconstec.close;
 DM.ADOQuerySQLconstec.SQL.CLEAR;
 DM.ADOQuerySQLconstec.SQL.ADD('select codatend, filial,setor, nomepc, ip, datasup, nomefunc, descricaosup from suportetecnico where filial like :filial');
 DM.ADOQuerySQLconstec.Parameters.ParamByName('filial').Value:= comboboxpesq.text;
 DM.ClientDataSetconstec.Open;
 frmsuporteteccons.DBGrid.Refresh;
end;


usei o comando refresh da forma correta?

um amigo de outro forum disse...
as tabelas do mysql precisam que voce de um comando refresh para que elas sejam atualizadas


fiz certo?
Responder

Gostei + 0

26/09/2012

Leonardo Xavier

procedure Tfrmsuporteteccons.btnpesquisarClick(Sender: TObject);
begin
DM.ClientDataSetconstec.close;
DM.ADOQuerySQLconstec.SQL.CLEAR;
DM.ADOQuerySQLconstec.SQL.ADD('select codatend, filial,setor, nomepc, ip, datasup, nomefunc, descricaosup from suportetecnico where filial like :filial');
DM.ADOQuerySQLconstec.Parameters.ParamByName('filial').Value:= comboboxpesq.text;
DM.ClientDataSetconstec.Open;
frmsuporteteccons.DBGrid.Refresh;
end;

Eu faria da seguinte forma, não mudaria em nada seu código apenas acrescentaria a propriedade Prepared.

procedure Tfrmsuporteteccons.btnpesquisarClick(Sender: TObject);
begin
DM.ClientDataSetconstec.close;
DM.ADOQuerySQLconstec.SQL.CLEAR;
DM.ADOQuerySQLconstec.SQL.ADD('select codatend, filial,setor, nomepc, ip, datasup, nomefunc, descricaosup from suportetecnico where filial like :filial');
DM.ADOQuerySQLconstec.Parameters.ParamByName('filial').Value:= comboboxpesq.text;
DM.ClientDataSetconstec.Prepared;
DM.ClientDataSetconstec.Open;
frmsuporteteccons.DBGrid.Refresh;
end;

Verifique se o seu datasource não setá se perdendo, perdendo a propriedade DAtaset após muitas consultas...acontece as vezes, é só excluir o componente e colocar outro.
Responder

Gostei + 0

27/09/2012

Alisson Santos

Fiz alguns testes aqui e conversei com outro desenvolvedor e fui informado que realmente trocando o componente resolveria, devido ele estar perdendo a referencia.
Agora existe um curso do luciano pimenta na devmedia que ensina um procedimento para isso não ocorrer.
Responder

Gostei + 0

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

Aceitar