Fórum Mostrar Dados Dbgrid #530620

03/09/2015

0

Gente, bom dia!!!

Tenho um form com um dbgrid que me mostra as minhas vendas dessa forma


Abaixo como meu dbgrid mostra os registros

CODIGOVENDA | CLIENTE | VALOR
1 JOSE 10,00
2 MARIA 20,00
3 JOAO 30,00


Quero clicar em cima da linha para selecionar e em um botão eu coloquei no capiton escrito PRODUTOS, quando eu selecionar a linha 1( 1/JOSE/10,00) e clicar em cima do botão PRODUTOS me trazer outro form com uma DBgrid com os produtos que originaram essa venda de 10,00 e mostrar o valor total da compra em um edit.


Exemplos

[img:descricao=Dbgrid Com as Vendas do Dias]http://arquivo.devmedia.com.br/forum/imagem/316964-20150903-112108.jpg[/img]

Ao clicar no botão PRODUTOS me mostra os produtos da venda em outra dbgrid

[img:descricao=Dbgrid com produtos]http://arquivo.devmedia.com.br/forum/imagem/316964-20150903-112204.jpg[/img]

Obs.: Estou usando SqlDataSet ligado a um DataSetProvider ligado a um ClientDataSet ligado a um DataSource ligado a um DbGrid
Bruno Henrique

Bruno Henrique

Responder

Posts

03/09/2015

Raimundo Pereira

Bom dia, Bruno.

Exemplo:

Tela Consulta Produtos, que será chamada pela tela de Orçamento.

No click ou enter da linha do GRID da tela de consulta, ele irá preencher alguns EDITS do form Orçamento.


FRM_DAV.EDIT_COD_PRODUTO.TEXT:=DM.QPRODUTOS.FIELBYNAME('CÓDIGO').ASSTRING;
DM.QPRODUTOS.CLOSE;

NO FRM_DAV, QUE É SUA TELA DE ORÇAMENTO.

DEPOIS DOS EDITS VOCÊ COLOCA UM BUTTON_ADD_PRODUTO >> ESSE VAI INSERIR OS DADOS DOS EDITS >>FRM_DAV.EDIT_COD_PRODUTO.TEXT;
NO GRID ORÇAMENTO_ITENS.

Não testei, foi apenas citação.
Veja ai e me dê um retorno qual quer coisa.

AT: P2
Responder

Gostei + 0

03/09/2015

Bruno Henrique

P2, não quero trazer as informações para os edits!!!

Estou considerando que as vendas já foram efetuadas e mostro em um dbgrid igual está nas imagens, ao clicar em cima do botão PRODUTOS, me mostra um outro dbgrid os produtos que são referentes a venda
Responder

Gostei + 0

03/09/2015

Mateus Carvalho

Você deve ter algum dado atrelado entra as informações da venda e os produtos, correto?

Pensando nisso, você pode usar um filtro, assim você consegue exibir apenas o necessário (o que você utilizou como filtro) no dbgrid.

Exemplo

Tenho 2 tabelas: 1 - Informações básicas de venda
2 - Produtos vendidos

Na tabela 1, tenho 3 campos:
ID, CLIENTE, VALOR

Na tabela 2, tenho 3 campos:
ID_VENDA, PRODUTO, VALOR

Suponhamos que o campo ID da venda, seja usado para atrelar os produtos à uma venda, logo, para exibir os registros, irei usar um filtro

Exemplo:

Dados da tabela 1:
ID | CLIENTE | VALOR
1 | PEDRO | 50,00
2 | MARIA | 25,00
3 | JOSÉ | 150,00

Dados da tabela 2:
ID_VENDA | PRODUTO | VALOR
1 | ARROZ | 10,00
1 | FILTRO | 40,00
2 | ALCATRA | 20,00
2 | MOLHO | 5,00
3 | FILTRO | 40,00
3 | ARROZ | 10,00
3 | VENTILADOR | 50,00
3 | BATEDEIRA | 50,00

Vamos ao código:
Assim que o usuário clicar em produto, você pode colocar o código de filtro para a tabela 2, assim, no dbgrid, será exibido apenas resultados encontrados:
tabela2.Filtered := False;
tabela2.Filter   := 'ID_VENDA LIKE ' + QuotedStr( '%' + EDIT_ID_VENDA.Text + '%' ); //Onde "ID_VENDA" é o nome do campo que eu quero pesquisar e o "EDIT_ID_VENDA" é o conteúdo que eu quero filtrar.
tabela2.Filtered := True;


Acho que depois disso, é só dar uns ajustes. Lembrando que esse é apenas uma forma de realizar essa ação.

Att!
Responder

Gostei + 0

03/09/2015

Raimundo Pereira

Entendi,

Exemplo:

Você terá um Form_Consulta_Venda >>

EDT_NUMERO_VENDA
DBGRID_>>

Q_VENDA_ITENS_
Q_VENDA_ITENS_CLOSE;
Q_VENDA_ITENS_SQL.TEXT:='SELECT CODIGOVENDA,PRODUTOS,QTDE,VALOR FROM TABELA_VENDAS_ITENS WHERE CODIGOVENDA='''+EDT_NUMERO_VENDA.TEXT+''';
Q_VENDA_ITENS_OPEN;

OBSERVAÇÃO ESSA ROTINA ACIMA, MOSTRARÁ APENAS PRODUTOS DE UMA DETERMINADA VENDA ONDE ESSE NÚMERO DEVERÁ SER INFORMADO NO EDIT.
VOCÊ PODE MONTAR A TELA DE ACORDO COM A SUA NECESSIDADE, TRATANDO NO SELECT

IF Q_VENDA_ITENS_.RECORDCOUNT=0 THEN
BEGIN
SHOWMESSAGE('NENHUM REGISTRO ENCONTRADOS ['+EDT_NUMERO_VENDA+']');
END;

Não testei,

Aguardo resposta.
Responder

Gostei + 0

03/09/2015

Bruno Henrique

Boa tarde!!!

Vou tentar fazer aqui, se eu tiver dúvidas posto novamente!!!(Concerteza vou ter!!! rs)

Obrigado
Responder

Gostei + 0

04/09/2015

Bruno Henrique

Pessoal, boa noite!!!

Quase deu certo!!!

Como vocês pode ver na imagem eu filtrei o nome Bruno ele me trouxe todos os Brunos cadastrados eu cliquei no Bruno de código número 3 e cliquei no botão Cidade Que Reside ele posicionou o cursor(ficou selecionado) em cima da cidade referente ao Bruno de código 3(Acaua / PIAUI) , mais eu preciso que mostre apenas a cidade dele e não todas a cidades apenas a do registro que foi selecionado.Teria que aparecer apenas a cidade Acaua / Piaui !!!

Como faço isso?

[img:descricao=FormPesquisa]http://arquivo.devmedia.com.br/forum/imagem/316964-20150904-002133.jpg[/img]
[img:descricao=FormResideCidade]http://arquivo.devmedia.com.br/forum/imagem/316964-20150904-002558.jpg[/img]
Responder

Gostei + 0

04/09/2015

Bruno Henrique

Meu Código

Form1
procedure TForm1.Button1Click(Sender: TObject);
begin
CdsClientes.Filtered := false;
CdsClientes.Filter:= 'NOMERAZAO LIKE ' + QuotedStr( '%' + Edit1.Text + '%' );
CdsClientes.Filtered := true;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if DBGrid1.selectedindex = 0 then
SQLQuery1.Close;
SQLQuery1.SQL.Text:='SELECT CIDADENOME, ESTADO FROM CADCLIENTES';
Form2.ShowModal;
end;


Form 2
Tenho um dbgrid ligado ao um datasource que está ligado ao cdsclientes do form1
Responder

Gostei + 0

04/09/2015

Bruno Henrique

Ajuda???
Responder

Gostei + 0

04/09/2015

Bruno Henrique

Ajuda?
Responder

Gostei + 0

04/09/2015

Bruno Henrique

Ajuda?
Responder

Gostei + 0

04/09/2015

Raimundo Pereira

Bruno presumo que no cadastro de cliente você armazena o código da cidade.

com isso é só montar o select.

procedure TForm1.Button2Click(Sender: TObject);
begin
SQLQuery1.Close;
SQLQuery1.SQL.Text:='SELECT CIDADENOME, ESTADO,CODIGOCIDADE FROM CADCLIENTES WHERE CODIGOCIDADE='''+
INTTOSTR(CdsClientes.FIELBYNAME('CODIGOCIDADE').ASINTEGER)+''';
SQLQuery1.OPEN;

Form2.ShowModal;
end;

Aguardo retorno.
Responder

Gostei + 0

05/09/2015

Bruno Henrique

Ainda sem solução!!!Ajuda
Responder

Gostei + 0

05/09/2015

Bruno Henrique

Sem solução ainda!!!
Responder

Gostei + 0

05/09/2015

Bruno Henrique

Topo
Responder

Gostei + 0

05/09/2015

Mateus Carvalho

Mais tem que aparecer obrigatoriamente em um dbgrid?

Porque se você quer que aparece apenas a cidade de 1 cadastro, você pode colocar um edit ou uma label para mostrar esses dois valores.
Responder

Gostei + 0

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

Aceitar