Não aparece registros no DBGRID

Delphi

12/12/2013

Olá pessoal,

Estou com um DBGrid adicionado no meu form. Esta configurado meu DATASOURCE esta configurado corretamente. O DBgrid a propriedade DATASOURCE esta configurada corretamente. Mesmo assim não aparece os registros (Tem 5 registros no Banco). o que pode ser?
Adriano Pinheiro

Adriano Pinheiro

Curtidas 0

Respostas

Francine Melo

Francine Melo

12/12/2013

Você está ativando o DATASET ligado ao DATASOURCE? se sim tenta ver com a propriedade RECORDCOUNT o números de registros.
GOSTEI 0
Járabe Emanuel

Járabe Emanuel

12/12/2013

Se o DataSource está linkado ao DBgrid e as informações não aparecem, é hora de verificar o link da tua babela com DataSource,
Se tudo isso está correto, uma provável explicação seria a forma de como vc está linkando os campos com o DBGrid,
Se vc criou manualmente as colunas no DBGrid Precisa linkar os campos da tabela com as colunas que vc criou.

Se foi o caso, Dê dois cliks em cima do dbgrid irá aparecer a janela Editing, Clik na coluna que vc criou e na propriedade FieldName selecione o campo da tabela correspondente aquela coluna.
GOSTEI 0
Adriano Pinheiro

Adriano Pinheiro

12/12/2013

eu refis os passos desde o começo...desde a criação do dataset até a conexão do datasource. mesmo assim não funcionou!
GOSTEI 0
Járabe Emanuel

Járabe Emanuel

12/12/2013

Vc criou manualmente as colunas no DBGrid? se sim apague-as e compile o pra ver se resolveu o problema.
GOSTEI 0
Rodolpho Silva

Rodolpho Silva

12/12/2013

Poste aqui o código que você está usando
GOSTEI 0
Adriano Pinheiro

Adriano Pinheiro

12/12/2013

   procedure novoClick(Sender: TObject);
    procedure salvarClick(Sender: TObject);
    procedure cancelarClick(Sender: TObject);
    procedure editarClick(Sender: TObject);
    procedure excluirClick(Sender: TObject);
    procedure ToolButton5Click(Sender: TObject);
    procedure primeiroClick(Sender: TObject);
    procedure anteriorClick(Sender: TObject);
    procedure proximoClick(Sender: TObject);
    procedure ultimoClick(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure btnAdicionarClick(Sender: TObject);
    procedure btnEntradaClick(Sender: TObject);
    procedure btnSaidaClick(Sender: TObject);
    procedure btnPesquisarClick(Sender: TObject);
    procedure ativarBotoes;
    procedure desativarBotoes;
    procedure limparEdit;
    procedure corEdit;
    procedure Panel1Click(Sender: TObject);
    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
  private
    { Private declarations }
  public

    { Public declarations }
  end;

var
  formCont_Acesso: TformCont_Acesso;
  contador : integer = 0;
implementation

uses UDM_ControleDeAcesso, SqlExpr;// ADD "UMD" (BANCO DE DADOS)

{$R *.dfm}
procedure TformCont_Acesso.btnPesquisarClick(Sender: TObject);
begin
  //desabilitarEdit;
  ativarBotoes;
  limparEdit;
  novo.Enabled:=false;
  salvar.Enabled:=false;
  btnAdicionar.Enabled:=false;
  edtNome.Color:=clMenuBar;
  cbbMotivo.Color:=clMenuBar;
  edtTelefone.Color:=clMenuBar;
  edtEndereco.Color:=clMenuBar;
  edtDocumento.Color:=clMenuBar;
  edtEntrada.Color:=clMenuBar;
  edtSaida.Color:=clMenuBar;
  btnEntrada.Enabled:=false;
  btnSaida.Enabled:=false;
end;

procedure TformCont_Acesso.novoClick(Sender: TObject);
var i : integer;

begin
  // INSERINDO CADASTRO NO BANCO
  DM_Controle.Query.Close;
  DM_Controle.Query.SQL.Text := 'SELECT MAX(COD_ACESSO) AS crescente FROM CONT_ACESSO'; // PEGA O ULTIMO REGISTRO
  DM_Controle.query.OPEN;
  //DM_Controle.Query.SQL.Text := 'INSERT INTO CONT_ACESSO (HORA_SAI) VALUES (NULL)'; // ADICIONA VALOR NULO AO CAMPO HORA_SAI NO BANCO
  //DM_Controle.Query.ExecSQL;
  //DM_Controle.query.fieldbyname('HORA_SAI').AsString := 'null';
  contador := 1;
  if DM_Controle.query.fieldbyname('crescente').asinteger >0 then  // VERIFICA SE É ZERO
    contador := DM_Controle.query.fieldbyname('crescente').asinteger + 1;  //ACRESCENTA +1
  DM_Controle.cdsControleDeAcesso.Insert;
  DM_Controle.cdsControleDeAcessoCOD_ACESSO.Value := contador; //INSERE O VALOR DO CONTADO NO BANCO
  desativarBotoes;
  limparEdit;
  corEdit;
  salvar.Enabled:=true;
  cancelar.Enabled:=true;
  btnAdicionar.Enabled:=true;
  btnEntrada.Enabled:=true;
  Panel1.Enabled:=true;
  edtNome.Enabled:=true;
  mensagem.Caption:='Novo Cadastro';
end;

procedure TformCont_Acesso.salvarClick(Sender: TObject);
begin
  // SALVANDO CADASTRO NO BANCO
  DM_Controle.cdsControleDeAcesso.ApplyUpdates(0);
  desativarBotoes;
  limparEdit;
  corEdit;
  novo.Enabled:=true;
  btnSaida.Enabled:=false;
  btnPesquisar.Enabled:=true;
  mensagem.Caption:='Cadastro Salvo!';
  mensagem.Color:= clBlack;
end;

procedure TformCont_Acesso.cancelarClick(Sender: TObject);
begin
  // CANCELANDO CADASTRO
  DM_Controle.cdsControleDeAcesso.Cancel;
  limparEdit;
  desativarBotoes;
  corEdit;
  novo.Enabled:=true;
  btnPesquisar.Enabled:=true;
  btnEntrada.Enabled:=false;
  btnSaida.Enabled:=false;
  mensagem.Caption:='Cancelado!';
  mensagem.Color:= clNavy;
end;

procedure TformCont_Acesso.editarClick(Sender: TObject);
begin
  // EDITANDO CADASTRO NO BANCO
  DM_Controle.cdsControleDeAcesso.Edit;
  desativarBotoes;
  salvar.Enabled:=true;
  cancelar.Enabled:=true;
  btnAdicionar.Enabled:=true;
  corEdit;
  mensagem.Caption:='Editar Cadastro';
  mensagem.Color:= clGreen;
  btnSaida.Enabled:= true;
  btnEntrada.Enabled:=false;
end;

procedure TformCont_Acesso.excluirClick(Sender: TObject);
begin
  //  CADASTRO NO BANCO
  DM_Controle.cdsControleDeAcesso.Delete;
  mensagem.Caption:='Cadastro Deletado!';
  mensagem.Color:= clRed;
end;

procedure TformCont_Acesso.ToolButton5Click(Sender: TObject);
begin
  // ATUALIZANDO CADASTRO NO BANCO
  DM_Controle.cdsControleDeAcesso.Refresh;
  mensagem.Caption:='Atualizado!';
  mensagem.Color:= clNavy;
end;

procedure TformCont_Acesso.primeiroClick(Sender: TObject);
begin
  // INDO PARA O PRIMEIRO CADASTRO NO BANCO
  DM_Controle.cdsControleDeAcesso.First;
  mensagem.Caption:='Primeiro Cadastro';
  mensagem.Color:= clNavy;
end;

procedure TformCont_Acesso.anteriorClick(Sender: TObject);
begin
  // INDO PARA O CADASTRO ANTERIOR NO BANCO
  DM_Controle.cdsControleDeAcesso.Prior;
  mensagem.Caption:='Cadastro Anterior';
  mensagem.Color:= clNavy;
end;

procedure TformCont_Acesso.proximoClick(Sender: TObject);
begin
  // INDO PARA O CADASTRO PRÓXIMO NO BANCO
  DM_Controle.cdsControleDeAcesso.Next;
  mensagem.Caption:='Próximo Cadastro';
  mensagem.Color:= clNavy;
end;

procedure TformCont_Acesso.ultimoClick(Sender: TObject);
begin
  // INDO PARA O ÚLTIMO CADASTRO NO BANCO
  DM_Controle.cdsControleDeAcesso.Last;
  mensagem.Caption:='Último Cadastro';
  mensagem.Color:= clNavy;
end;

procedure TformCont_Acesso.FormActivate(Sender: TObject);
begin
  Panel1.Enabled:=true;
end;

procedure TformCont_Acesso.btnAdicionarClick(Sender: TObject);
begin
  // VAI PARA TELA NOVO MOTIVO
  formNovo_Motivo.ShowModal;
end;

procedure TformCont_Acesso.btnEntradaClick(Sender: TObject);
begin
  //ADICIONA DATA E HORA NO EDIT
  DM_Controle.cdsControleDeAcessoHORA_ENT.Text:= edtEntrada.Text;
  edtEntrada.Text:= datetimetostr(now);
  btnEntrada.Enabled:=false;
  btnSaida.Enabled:=true;
  edtEntrada.ReadOnly:= true;
  edtSaida.ReadOnly:= true;
  mensagem.Caption:='Horário da Entrada';
  mensagem.Color:= clNavy;
end;

procedure TformCont_Acesso.btnSaidaClick(Sender: TObject);
begin
  //ADICIONA DATA E HORA NO EDIT
  DM_Controle.cdsControleDeAcessoHORA_SAI.Text:= edtSaida.Text;
  edtSaida.Text:= datetimetostr(now);
  btnEntrada.Enabled:=false;
  btnSaida.Enabled:=true;
  edtEntrada.ReadOnly:= true;
  edtSaida.ReadOnly:= true;
  mensagem.Caption:='Horário da Saída';
  mensagem.Color:= clNavy;
end;



procedure TformCont_Acesso.ativarBotoes;
begin
  // ATIVAR BOTÕES
  salvar.Enabled:= true;
  novo.Enabled:= true;
  cancelar.Enabled:=true;
  editar.Enabled:=true;
  excluir.Enabled:=true;
  primeiro.Enabled:=true;
  anterior.Enabled:=true;
  proximo.Enabled:=true;
  ultimo.Enabled:=true;
  btnPesquisar.Enabled:=true;
  btnAdicionar.Enabled:=true;
end;

procedure TformCont_Acesso.desativarBotoes;
begin
  // DESATIVAR BOTÕES
  salvar.Enabled:= false;
  novo.Enabled:= false;
  cancelar.Enabled:=false;
  editar.Enabled:=false;
  excluir.Enabled:=false;
  primeiro.Enabled:=false;
  anterior.Enabled:=false;
  proximo.Enabled:=false;
  ultimo.Enabled:=false;
  btnPesquisar.Enabled:=false;
  btnAdicionar.Enabled:=false;
end;

procedure TformCont_Acesso.limparEdit;
begin
  // LIMPANDO EDIT
  edtNome.Text:='';
  edtDocumento.Text:='';
  edtTelefone.Text:='';
  edtEndereco.Text:='';
  cbbMotivo.Text:='';
  edtEntrada.Text:='';
  edtSaida.Text:='';
end;

procedure TformCont_Acesso.corEdit;
begin
  // COLORINDO EDIT
  edtNome.Color:=clWhite;
  edtDocumento.Color:=clWhite;
  edtTelefone.Color:=clWhite;
  edtEndereco.Color:=clWhite;
  edtEntrada.Color:=clWhite;
  edtSaida.Color:=clWhite;
  cbbMotivo.Color:=clWhite;
end;

procedure TformCont_Acesso.Panel1Click(Sender: TObject);
begin
  Panel1.Enabled:=true;
end;

procedure TformCont_Acesso.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
// FAZER LINHA ZEBRADA DO DBGRID
  with DBGrid1 do
    begin
      if Odd( DataSource.DataSet.RecNo) then
        Canvas.Brush.Color := clSilver
      else
        Canvas.Brush.Color := clMoneyGreen;
        Canvas.FillRect(Rect);
        DefaultDrawColumnCell(Rect,DataCol,Column,State);
      end;
end;

end.
GOSTEI 0
Adriano Pinheiro

Adriano Pinheiro

12/12/2013

refiz o DBgrid e não funcionou! Aparecem as colunar certas mas não aparece os registros. Quando eu crio um registro e salvo...ele fica na DBGrid....mas qdo eu fecho o programa e abro novamente os registros não aparecem....mas eles estão no banco...
GOSTEI 0
Adriano Pinheiro

Adriano Pinheiro

12/12/2013

[img]http://arquivo.devmedia.com.br/forum/imagem/351079-20131213-110123.jpg[/img]
GOSTEI 0
Járabe Emanuel

Járabe Emanuel

12/12/2013

Amigo axo que teu problema é o teu código do OnDrawColumnCell, comente ele e tente novamente.
procedure TformCont_Acesso.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
// FAZER LINHA ZEBRADA DO DBGRID
  with DBGrid1 do
    begin
      if Odd( DataSource.DataSet.RecNo) then
        Canvas.Brush.Color := clSilver
      else
        Canvas.Brush.Color := clMoneyGreen;
        Canvas.FillRect(Rect);
        DefaultDrawColumnCell(Rect,DataCol,Column,State);
      end;
end;


Espero ter ajudado
GOSTEI 0
Adriano Pinheiro

Adriano Pinheiro

12/12/2013

Não funcionou...comentei...tirei o DBGrid1DrawColumnCell...não funcionou...estou rachando a cabeça aqui! rsrs
GOSTEI 0
Claudio Andrade

Claudio Andrade

12/12/2013

Estou com um problema parecido, so que no meu caso é o TUsers que esta causando o erro

https://www.devmedia.com.br/forum/dbedit-apagando-os-dados-ao-sair-um-pouco-de-urgencia/448470
GOSTEI 0
Bueno

Bueno

12/12/2013

olá, tudo bom? , então não sei se vai funcionar, no meu caso deu certo.
1-Clique duas vezes na DBgrid( vai abrir uma janela com todos seus campos , certo?)
2-coloque em excluir
nesse momento sua DBgrid vai "atualizar" e dessa forma aparece todos seus dados que estão inseridos em seu Banco.
No meu caso deu certo, espero q no seu também.
Espero ter ajudado!!!!!!
GOSTEI 0
Carlos Bernardo

Carlos Bernardo

12/12/2013

Desativa o ClientDataSet no Data Module .
e no seu formulario, no OnShow vc coloca
DM_Controle.cdsControleDeAcesso.Close;
DM_Controle.cdsControleDeAcesso.Open;

e ve se funciona
GOSTEI 0
Carlos Bernardo

Carlos Bernardo

12/12/2013

Desativa o ClientDataSet no Data Module .
e no seu formulario, no OnShow vc coloca
DM_Controle.cdsControleDeAcesso.Close;
DM_Controle.cdsControleDeAcesso.Open;

e ve se funciona
GOSTEI 0
Thiago

Thiago

12/12/2013

refiz o DBgrid e não funcionou! Aparecem as colunar certas mas não aparece os registros. Quando eu crio um registro e salvo...ele fica na DBGrid....mas qdo eu fecho o programa e abro novamente os registros não aparecem....mas eles estão no banco...
<br />
<br />
Tbm esta acontecendo cmg porem o meu é C# eu criei um formulário(cadastro de consultas) e um banco de dados (ja criei td), e quando compilo e vou inserir dados nele e salvo não aparece no datagrid, começou a dar esse problema dps que configurei o TableAdapter. É que eu faço curso de C# e agr to repetindo os passos pela apostila que é interativa para não esquecer quando avançar para outro módulo. help me, please
GOSTEI 0
Dirceu Morais

Dirceu Morais

12/12/2013

Bom Dia Colegas,

O tópico é antigo porém não apresentou solução (ou não postaram).

Bem, eu também estava com este problema, aliás, deve ser algum bug do dbgrid ou Delphi ou ainda alguma falha minha, porque de vez em quando isso acontece comigo.

Sempre que acontece, eu faço o seguinte, removo o DBGRID, coloco outro e faço as ligações com Datasource que sempre resolve.

Desta vez porém, foi diferente, eu eliminei o DBGRID, refiz as ligações, troquei o Datasource. Tirei Datasource do DATAMODULE e coloquei no FORM, e nada. Limpei o Client, troquei o client, sem sucesso. O que mais me intrigava é que, eu abria o banco de dados na programação e aparecia os dados, mas quando compilava não aparecia. No form, no ONShow eu fechava a tabela e abria novamente e nada de aparecer os dados. Executava "debugando" e nenhum erro.


ATÉ QUE.... ia desistir, procurar outro meio sei lá, e por sorte fui dar uma olhada no meu projeto.DPR é lá estava o problema.

begin
   Application.Initialize;
   TStyleManager.TrySetStyle('Luna');
   Application.Title := '..:: PROJETO DO BEM ::..';
   Application.CreateForm(TDM, DM);      ////OBSERVE AQUI
   Application.CreateForm(TFormPrincipal, FormPrincipal);
   Screen.Cursor := -11;
   ...... instruções
   Try
        dm.DB.Open;
     Except
         KDialog('Caminho de rede não foi encontrado'+#13+'Erro ao conectar ao banco de dados','Alerta','ERRO',3);
         Application.Terminate;
          Exit;
     end;
     ...    instruções......
    .......   tinha mais instruções, tirei só para entenderem  
   Application.CreateForm(TDM, DM);      ////OBSERVE AQUI  DE NOVO
Screen.Cursor := 0;
   Application.Run;


Se você observou, viu que havia criado o DM 2 vezes, era ai o meu erro.
Retirei a segunda linha que "Application.CreateForm(TDM, DM);" e pronto.


Espero que seja o problema de alguém e que ajude, pois perdi muito tempo procurando ajuda, quebrando a cabeça.


Brigadú
GOSTEI 0
POSTAR