Mostrar Dados Dbgrid

Delphi

03/09/2015

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

Curtidas 1

Respostas

Raimundo Pereira

Raimundo Pereira

03/09/2015

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
GOSTEI 0
Bruno Henrique

Bruno Henrique

03/09/2015

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
GOSTEI 0
Mateus Carvalho

Mateus Carvalho

03/09/2015

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!
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

03/09/2015

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.
GOSTEI 0
Bruno Henrique

Bruno Henrique

03/09/2015

Boa tarde!!!

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

Obrigado
GOSTEI 0
Bruno Henrique

Bruno Henrique

03/09/2015

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]
GOSTEI 0
Bruno Henrique

Bruno Henrique

03/09/2015

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
GOSTEI 0
Bruno Henrique

Bruno Henrique

03/09/2015

Ajuda???
GOSTEI 0
Bruno Henrique

Bruno Henrique

03/09/2015

Ajuda?
GOSTEI 0
Bruno Henrique

Bruno Henrique

03/09/2015

Ajuda?
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

03/09/2015

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.
GOSTEI 0
Bruno Henrique

Bruno Henrique

03/09/2015

Ainda sem solução!!!Ajuda
GOSTEI 0
Bruno Henrique

Bruno Henrique

03/09/2015

Sem solução ainda!!!
GOSTEI 0
Bruno Henrique

Bruno Henrique

03/09/2015

Topo
GOSTEI 0
Mateus Carvalho

Mateus Carvalho

03/09/2015

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.
GOSTEI 0
Bruno Henrique

Bruno Henrique

03/09/2015

Mac, boa noite!!!

Isso mesmo tem que aparecer em um dbgrid!!!! Estou sem solução até agora
GOSTEI 0
Mateus Carvalho

Mateus Carvalho

03/09/2015

É cara, o filter vai filtrar todos com o resultado parecido. Você pode tentar o locate, mais acho que não vai ajudar. Se realmente não funcionar, tente via sql.


dataset1.Locate('NOME',Edit1.Text,[loCaseInsensitive]);
GOSTEI 0
Bruno Henrique

Bruno Henrique

03/09/2015

Então com lo ate e filtrar ñ deu certo!

Como posso fazer por sql?
GOSTEI 0
Mateus Carvalho

Mateus Carvalho

03/09/2015

Tenta basear no exemplo do "P2". Se vc não conseguir, da um toque.

"
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.
"
GOSTEI 0
Bruno Henrique

Bruno Henrique

03/09/2015

O código do P2 não deu certo 😭😭
GOSTEI 0
Bruno Henrique

Bruno Henrique

03/09/2015

Alguém?
GOSTEI 0
Christiano Vasconcellos

Christiano Vasconcellos

03/09/2015

Senhores,

Sei que este tema não tem haver com o fórum mas estou precisando de uma ajuda com urgência.

Alguém teria o componente JVaviCapture em algum local para que eu possa fazer o Download.

Atenciosamente,

Christiano Vasconcellos 21 33221859
chrsitianovasconcellos0@gmail.com
GOSTEI 0
Bruno Henrique

Bruno Henrique

03/09/2015

RESOLVIDO
GOSTEI 0
POSTAR