Não aparece registros no DBGRID
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?
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
Curtidas 0
Respostas
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
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.
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
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
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
12/12/2013
Poste aqui o código que você está usando
GOSTEI 0
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
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
12/12/2013
[img]http://arquivo.devmedia.com.br/forum/imagem/351079-20131213-110123.jpg[/img]
GOSTEI 0
Járabe Emanuel
12/12/2013
Amigo axo que teu problema é o teu código do OnDrawColumnCell, comente ele e tente novamente.
Espero ter ajudado
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
12/12/2013
Não funcionou...comentei...tirei o DBGrid1DrawColumnCell...não funcionou...estou rachando a cabeça aqui! rsrs
GOSTEI 0
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
https://www.devmedia.com.br/forum/dbedit-apagando-os-dados-ao-sair-um-pouco-de-urgencia/448470
GOSTEI 0
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!!!!!!
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
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
e no seu formulario, no OnShow vc coloca
DM_Controle.cdsControleDeAcesso.Close;
DM_Controle.cdsControleDeAcesso.Open;
e ve se funciona
GOSTEI 0
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
e no seu formulario, no OnShow vc coloca
DM_Controle.cdsControleDeAcesso.Close;
DM_Controle.cdsControleDeAcesso.Open;
e ve se funciona
GOSTEI 0
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
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.
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ú
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