Fórum COMO PREENCHER UM DBGrid com DADOS DO BD? #431994
05/01/2013
0
pessoar estou tentando PREENCHER UM DBGrid com DADOS DO BD mas o codigo não da certo?
arguem pode me dar uma dica?
ja tentei varias codigos ma sem sucesso...
Obrigardo!!!
Elisangela Silva
Curtir tópico
+ 0Posts
06/01/2013
André Celestino
Pra Preencher a DBGrid com os dados de uma tabela, basta ligar a propriedade DataSource do DBGrid em um Dataset.
Por exemplo, você tem um Dataset (ClientDataSet ou Query) com os dados da tabela. Ligue este componente a um DataSource, e em seguida a DBGrid neste DataSource. Os dados já serão exibidos automaticamente.
Gostei + 0
06/01/2013
Elisangela Silva
Pra Preencher a DBGrid com os dados de uma tabela, basta ligar a propriedade DataSource do DBGrid em um Dataset.
Por exemplo, você tem um Dataset (ClientDataSet ou Query) com os dados da tabela. Ligue este componente a um DataSource, e em seguida a DBGrid neste DataSource. Os dados já serão exibidos automaticamente.
Ola Amigo correto seu raciocinio mas o que eu quero é:
Bom, o que eu quero na verdade é fazer que medida que eu realizar a busca no banco, ou seja, digitar o codigo do cliente que quero no Edit1 e clicar no botão pesquisar,então o DBgrid seja preenchido somente com os dados deste cliente.
eu até tenho o select pronto mas o erro ocorre na hora de inserir os dados no DBGrid.
Se alguem puder dar uma dica...
Obrigado
Gostei + 0
07/01/2013
Lucas Chagas
Pelo que eu entendi você quer que ao digitar o sistema busque na base os dados. É isso?
Se for no edit1 use o evento "onChange", nele vc irá repassar ao componente de pesquisa no banco o parâmetro da pesquisa, assim atualizando o seu grid.
A query deve ter na sua sintaxe filtro do campo pelo like.
Caso resolva não remontar toda vez a query, pode através do clientdataset utilizar um locate e ele posiciona no primeiro registro posicionado.
Boa sorte abraços.
Gostei + 0
07/01/2013
Elisangela Silva
Pelo que eu entendi você quer que ao digitar o sistema busque na base os dados. É isso?
Se for no edit1 use o evento "onChange", nele vc irá repassar ao componente de pesquisa no banco o parâmetro da pesquisa, assim atualizando o seu grid.
A query deve ter na sua sintaxe filtro do campo pelo like.
Caso resolva não remontar toda vez a query, pode através do clientdataset utilizar um locate e ele posiciona no primeiro registro posicionado.
Boa sorte abraços.
Ok Obrigado pela dica ...mas o select da pesquisa eu ja fiz usando like e sem usar o like ambos funcionam quando testo pelo iboconsole mas no delphi o que esta dando eerrro não é o select é na hora de inserção dos dados no grid...engraçado que estou fazendo dois exercicios simultaneamente e testei este pedaço de codigo:
DBGridPedidos.Columns[1].FieldName := 'CLIENTE' ;
DBGridPedidos.Columns[2].FieldName := 'DATAPEDIDO' ;
DBGridPedidos.Columns[3].FieldName := 'FORMAPAGTO' ;
em um deu certo mas em outro da o seguinte erro:
List index out of bounds(1)
mais uma vez obrigado pelas respostas...
Gostei + 0
08/01/2013
Daniel Santos
Gostei + 0
08/01/2013
Wellington Menezes
Gostei + 0
10/01/2013
Elisangela Silva
segue o código, se alguem puder ajudar.
if EditPedido.Text = '' then
begin
Showmessage('Digite o numero do pedido');
EditPedido.SetFocus;
exit;
end;
try
with DM.SQLConnPedidos do begin
DM.qryPedidos.Close;
DM.qryPedidos.SQL.Clear;
DM.qryPedidos.SQL.Add (' SELECT ');
DM.qryPedidos.SQL.Add (' NUMEROPEDIDO, ');
DM.qryPedidos.SQL.Add (' CLIENTE, ');
DM.qryPedidos.SQL.Add (' DATAPEDIDO, ');
DM.qryPedidos.SQL.Add (' FORMAPAGTO ');
DM.qryPedidos.SQL.Add (' FROM PEDIDOS ');
if(EditPedido.Text <> '') then
begin
DM.qryPedidos.SQL.Add('WHERE NUMEROPEDIDO LIKE' + QuotedStr(EditPedido.Text));
end;
DM.qryPedidos.Open;
end;
DBGridPedidos.Columns[0].FieldName := 'NUMEROPEDIDO';
DBGridPedidos.Columns[1].FieldName := 'CLIENTE' ;
DBGridPedidos.Columns[2].FieldName := 'DATAPEDIDO' ;
DBGridPedidos.Columns[3].FieldName := 'FORMAPAGTO' ;
except
on E:Exception do
ShowMessage(E.Message);
end;Obrigado
Gostei + 0
10/01/2013
Elisangela Silva
Gostei + 0
10/01/2013
André Celestino
Outra observação: já que o número do pedido é um valor exato, então ao invés de LIKE, utilize o sinal de igual mesmo ( = ):
DM.qryPedidos.SQL.Add('WHERE NUMEROPEDIDO = ' + EditPedido.Text); Gostei + 0
10/01/2013
Elisangela Silva
Outra observação: já que o número do pedido é um valor exato, então ao invés de LIKE, utilize o sinal de igual mesmo ( = ):
DM.qryPedidos.SQL.Add('WHERE NUMEROPEDIDO = ' + EditPedido.Text); fiz o que vc falou mas o erro esta aqui qdo executo
DBGridPedidos.Columns[0].FieldName := 'NUMEROPEDIDO'; DBGridPedidos.Columns[1].FieldName := 'CLIENTE' ; DBGridPedidos.Columns[2].FieldName := 'DATAPEDIDO' ; DBGridPedidos.Columns[3].FieldName := 'FORMAPAGTO' ;
Gostei + 0
11/01/2013
Elisangela Silva
List index out of bounds(1)
Gostei + 0
11/01/2013
André Celestino
Experimente comentar essas 4 linhas e ver se funciona.
Caso funcionar, verifique a quantidade de colunas que são retornadas.
Gostei + 0
11/01/2013
Landerson Santos
O seu select, caso o campo numero do pedido seja numérico vc deve passar o com
... NUMPEDIDO = ' + edit1.text;
Após isso apenas no evento o click do seu buton de um ClientDataset.OPEN; (acredito eu que vc esteja usando um ClientDataset)
Com isso o dbgrid vai abrir, mesmo que vazio, caso de vc estar digitando um pedido que não exista.
Gostei + 0
11/01/2013
Landerson Santos
if EditPedido.Text = '' then
begin
Showmessage('Digite o numero do pedido');
EditPedido.SetFocus;
exit;
end;
try
with DM.SQLConnPedidos do begin
DM.qryPedidos.Close;
DM.qryPedidos.SQL.Clear;
DM.qryPedidos.SQL.Add (' SELECT ');
DM.qryPedidos.SQL.Add (' NUMEROPEDIDO, ');
DM.qryPedidos.SQL.Add (' CLIENTE, ');
DM.qryPedidos.SQL.Add (' DATAPEDIDO, ');
DM.qryPedidos.SQL.Add (' FORMAPAGTO ');
DM.qryPedidos.SQL.Add (' FROM PEDIDOS ');
if(EditPedido.Text <> '') then
begin
DM.qryPedidos.SQL.Add('WHERE NUMEROPEDIDO LIKE' + QuotedStr(EditPedido.Text));
end;
//Aqui vamos definir que o dataset do datasource é o dataset da sua query
DATASOURCE1.DATASET := DM.qryPedidos;
//Aqui vamos garantir que seu dbgrid está com o datasource associado
DBGridPedidos.datasource := DATASOURCE1
DM.qryPedidos.Open;
end;
// Comentamos essas linhas aqui abaixo
{
DBGridPedidos.Columns[0].FieldName := 'NUMEROPEDIDO';
DBGridPedidos.Columns[1].FieldName := 'CLIENTE' ;
DBGridPedidos.Columns[2].FieldName := 'DATAPEDIDO' ;
DBGridPedidos.Columns[3].FieldName := 'FORMAPAGTO' ;
}
except
on E:Exception do
ShowMessage(E.Message);
end;Confirme por favor.
Gostei + 0
13/01/2013
Elisangela Silva
tentando assim da esse erro:
Operation not allowed on a unidirectional dataset
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)