Inserir registro em um dbgrid
Tenho um dbgrid editavel com os campos Descrição, Quantidade, Valor Unitario, Valor Total, onde o campo Valor Total = Quantidade * Valor Unitario, e os dados desse dbgrid vai ser salvo numa tabela itens (PARADOX), como faço para inserir dados no dbgrid de um cliente e salvar e quando eu clicar no botão novo e colocar um outro cliente o dbgrid fica limpo e pronto para inserir novos dados?
Exemplo:
Cliente: Fulano
Descrição Quantidade Valor Unitario Valor Total
1---------------------2---------------1,00--------------2,00
2---------------------1---------------0,50--------------0,50
3---------------------1---------------3,00--------------3,00
4---------------------3---------------2,00--------------6,00 :cry: :cry:
Exemplo:
Cliente: Fulano
Descrição Quantidade Valor Unitario Valor Total
1---------------------2---------------1,00--------------2,00
2---------------------1---------------0,50--------------0,50
3---------------------1---------------3,00--------------3,00
4---------------------3---------------2,00--------------6,00 :cry: :cry:
Kalleby Garcia
Curtidas 0
Respostas
Dbergkamps10
23/01/2008
Olá,
Nesse caso, a tabela itens deve estar relacionada a tabela de clientes. Quanto ao campo Valor Total, vc deve calcular manualmente após a digitação dos valores de qtd e Valor unitario.
Espero ter ajudado
Att
Dalton
Nesse caso, a tabela itens deve estar relacionada a tabela de clientes. Quanto ao campo Valor Total, vc deve calcular manualmente após a digitação dos valores de qtd e Valor unitario.
Espero ter ajudado
Att
Dalton
GOSTEI 0
Kalleby Garcia
23/01/2008
ela ja esta linkado a tabela cliente, mas o calculo eu ja fiz o que não estou conseguindo é limpar o dbgrid na hora de inserir novos itens para outro cliente. OBS estou usando um query.
GOSTEI 0
Kalleby Garcia
23/01/2008
o dbgrid é editavel...
GOSTEI 0
Ferreia2
23/01/2008
eu faço isso da seguinte forma:
eu tenho uma query Pedido e outra itemPedido
eu coloco no evento afterscrool da query Pedido uma outra query filtrando a ItemPedido, porque toda vez que eu mudar o Pedido ele filtra o ItemPedido, portanto quando você clicar em novo pedido ele vai filtrar o item pedido passando o parâmetro número do pedido como não vai ter nenhum item ele traz o DBGrid Limpo.
Obs. a Unica restrição é que você precisa gerar um Número do pedido no evento onnewrecord da query pedido.
eu tenho uma query Pedido e outra itemPedido
eu coloco no evento afterscrool da query Pedido uma outra query filtrando a ItemPedido, porque toda vez que eu mudar o Pedido ele filtra o ItemPedido, portanto quando você clicar em novo pedido ele vai filtrar o item pedido passando o parâmetro número do pedido como não vai ter nenhum item ele traz o DBGrid Limpo.
Obs. a Unica restrição é que você precisa gerar um Número do pedido no evento onnewrecord da query pedido.
GOSTEI 0
Kalleby Garcia
23/01/2008
Galera muito obrigado pela dica, qualquer duvida eu retorno..
GOSTEI 0
Kalleby Garcia
23/01/2008
Essa e a strutura da tabela Mestre de Pedidos
CREATE TABLE TBMPEDIDO (
CODIGO INTEGER NOT NULL,
DATAPEDIDO DATE,
ATENDENTE VARCHAR(20),
IDREQUISITANTE1 INTEGER,
REQUISITANTE1 VARCHAR(100),
IDREQUISITANTE2 INTEGER,
REQUISITANTE2 VARCHAR(100),
IDREQUISITANTE3 INTEGER,
REQUISITANTE3 VARCHAR(100)
);
Essa e a strutura da tabela Detalhes de Pedidos ou Itens do Pedido
CREATE TABLE TBDPEDIDO (
CODIGO INTEGER NOT NULL,
IDMESTRE INTEGER NOT NULL,----> (Esse campo q faz a ligação com a tabela mestre tbMPedido.Codigo)
IDPRODUTO INTEGER,
DESCPRODUTO VARCHAR(100),
QTDE DOUBLE PRECISION,
UNIDADE VARCHAR(3),
PRECOUNIT NUMERIC(16,4)
);
Dentro do Delhi vc faz assim
procedure TfPedidos.FormCreate(Sender: TObject);
begin
dsMestre.DataSet.Close; dmControle.qryMPedido.Sql.Text :=
´Select *From tbMPedido Where Codigo = :pCodigo Order By Codigo´;
dmControle.qryMPedido.ParamByName(´pCodigo´).AsInteger := 0;
dsMestre.DataSet.Open;
//
dsDetalhe.DataSet.Close; dmControle.qryDPedido.DataSource := dsMestre; dmControle.qryDPedido.Sql.Text :=
´Select *From tbDPedido Where IdMestre = :Codigo Order By Codigo´;
dsDetalhe.DataSet.Open;
End;
CREATE TABLE TBMPEDIDO (
CODIGO INTEGER NOT NULL,
DATAPEDIDO DATE,
ATENDENTE VARCHAR(20),
IDREQUISITANTE1 INTEGER,
REQUISITANTE1 VARCHAR(100),
IDREQUISITANTE2 INTEGER,
REQUISITANTE2 VARCHAR(100),
IDREQUISITANTE3 INTEGER,
REQUISITANTE3 VARCHAR(100)
);
Essa e a strutura da tabela Detalhes de Pedidos ou Itens do Pedido
CREATE TABLE TBDPEDIDO (
CODIGO INTEGER NOT NULL,
IDMESTRE INTEGER NOT NULL,----> (Esse campo q faz a ligação com a tabela mestre tbMPedido.Codigo)
IDPRODUTO INTEGER,
DESCPRODUTO VARCHAR(100),
QTDE DOUBLE PRECISION,
UNIDADE VARCHAR(3),
PRECOUNIT NUMERIC(16,4)
);
Dentro do Delhi vc faz assim
procedure TfPedidos.FormCreate(Sender: TObject);
begin
dsMestre.DataSet.Close; dmControle.qryMPedido.Sql.Text :=
´Select *From tbMPedido Where Codigo = :pCodigo Order By Codigo´;
dmControle.qryMPedido.ParamByName(´pCodigo´).AsInteger := 0;
dsMestre.DataSet.Open;
//
dsDetalhe.DataSet.Close; dmControle.qryDPedido.DataSource := dsMestre; dmControle.qryDPedido.Sql.Text :=
´Select *From tbDPedido Where IdMestre = :Codigo Order By Codigo´;
dsDetalhe.DataSet.Open;
End;
GOSTEI 0
Paullsoftware
23/01/2008
Um conselho de quem já passou por problemas relacionado a nomes de campos...
de preferência ao usu dos nomes iguais para fazer o relacionamento, pois, o dbexpress não aceita relacionamento parametrizado com nomes de campos diferentes, ou pelo menos comigo não funcionou :roll:
CREATE TABLE TBMPEDIDO (
CODIGO INTEGER NOT NULL, //arqui seria melhor assim: CODPEDIDO
DATAPEDIDO DATE,
ATENDENTE VARCHAR(20),
IDREQUISITANTE1 INTEGER,
REQUISITANTE1 VARCHAR(100),
IDREQUISITANTE2 INTEGER,
REQUISITANTE2 VARCHAR(100),
IDREQUISITANTE3 INTEGER,
REQUISITANTE3 VARCHAR(100)
);
CREATE TABLE TBDPEDIDO (
CODIGO INTEGER NOT NULL,
IDMESTRE INTEGER NOT NULL,//arqui seria melhor assim: CODPEDIDO
IDPRODUTO INTEGER,
DESCPRODUTO VARCHAR(100),
QTDE DOUBLE PRECISION,
UNIDADE VARCHAR(3),
PRECOUNIT NUMERIC(16,4)
);
no SQL basta usar a mesma lógica que vc fez e vai fucionar perfeitamente... :wink:
de preferência ao usu dos nomes iguais para fazer o relacionamento, pois, o dbexpress não aceita relacionamento parametrizado com nomes de campos diferentes, ou pelo menos comigo não funcionou :roll:
CREATE TABLE TBMPEDIDO (
CODIGO INTEGER NOT NULL, //arqui seria melhor assim: CODPEDIDO
DATAPEDIDO DATE,
ATENDENTE VARCHAR(20),
IDREQUISITANTE1 INTEGER,
REQUISITANTE1 VARCHAR(100),
IDREQUISITANTE2 INTEGER,
REQUISITANTE2 VARCHAR(100),
IDREQUISITANTE3 INTEGER,
REQUISITANTE3 VARCHAR(100)
);
CREATE TABLE TBDPEDIDO (
CODIGO INTEGER NOT NULL,
IDMESTRE INTEGER NOT NULL,//arqui seria melhor assim: CODPEDIDO
IDPRODUTO INTEGER,
DESCPRODUTO VARCHAR(100),
QTDE DOUBLE PRECISION,
UNIDADE VARCHAR(3),
PRECOUNIT NUMERIC(16,4)
);
no SQL basta usar a mesma lógica que vc fez e vai fucionar perfeitamente... :wink:
GOSTEI 0
Kalleby Garcia
23/01/2008
Valew amigo são dicas assim que dinamiza os nosso sistema...
GOSTEI 0