Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

paulo_roll

Criar pedidos

Recommended Posts

Boa tarde.

Gostaria de saber como criar pedidos no delphi. Uso Banco de dados Access.

A estrutura da tabela pedidos é a seguinte:

 

ID_pedido

ID_cliente

ID_produto

largura

altura

quantidade

 

não consegui achar na internet, nem em livros. Como se faz isso tendo controle de cada pedido?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde paulo..

 

Uma das maneiras que eu conheço, se não a única...é da seguinte forma:

 

você deve ter duas tabelas uma pai que terá o cabeçalho do pedido e uma filha com os itens

 

Ex:

 

tabela pai

 

ID_pedido_pai

ID_cliente

data

situação

 

 

tabela filha

 

id_pedido_filho

id_pedido_pai ----> este deve ser uma chave estrangeira

id_produto

quantidade

valor_unitario

valor_total

.

.

.

demais campos

 

 

ou seja você lança a tabela pai, depois a filha contendo os codigo da do pai..esta poderá ser lançada varias veses mas sempre com o codigo da tabela pai..para depois você conseguir filtrar varios produtos em um unico pedido.

Ex:

 

select * from tabela filha

inner join tabela pai on filha.id_pedido_pai = pai.id_pedido_filha

 

 

espero ter ajudado..

 

qualquer coisa poste aí..

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ve se entendi.

O ID_Pedido_pai da tabela pai é autonumeração e deve ser atribuida a uma variável global para

toda vez que inserir na tabela filho inserir esse valor. a tela do projeto esta assim:

 

Imagem Postada

 

O que devo alterar no código do botão incluir? ele está assim:

procedure TForm5.Button1Click(Sender: TObject);

begin

{with ADOQuery3 do

begin

sql.Clear;

sql.Text := 'Select max (pedidos) from pedidos';

parameters. //falta pegar o id para gerar uma sessão

sql.Clear;

sql.Text := 'Insert into pedidos(id_pedido,id_cliente,id_produto,altura,largura,quantidade) values(:id_pedido,:id_cliente,:id_produto,:altura,:largura,:quantidade)';

parameters.ParamByName('id_pedido') :=;

parameters.ParamByName('id_cliente') := DBLookupcombobox1.keyvalue;

parameters.ParamByName('id_produto') := DBLookupcombobox2.keyvalue;

parameters.ParamByName('altura') := edAltura.Text;

parameters.ParamByName('largura') := edLargura.Text;

parameters.ParamByName('quantidade') := edQuantidade.text;

end; }

end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ve se entendi.

O ID_Pedido_pai da tabela pai é autonumeração e deve ser atribuida a uma variável global para

toda vez que inserir na tabela filho inserir esse valor. a tela do projeto esta assim:

sim, isto mesmo, toda vez que você for fazer um insert na tabela filha, terá de atribuir também o id da tabela pai, existe outras formas de fazer sem ser com esta variável global..mas faça assim mesmo primeiro..depois você otimiza.

 

O que devo alterar no código do botão incluir? ele está assim:

procedure TForm5.Button1Click(Sender: TObject);

begin

{with ADOQuery3 do

begin

sql.Clear;

sql.Text := 'Select max (pedidos) from pedidos';

parameters. //falta pegar o id para gerar uma sessão

sql.Clear;

sql.Text := 'Insert into pedidos(id_pedido,id_cliente,id_produto,altura,largura,quantidade) values(:id_pedido,:id_cliente,:id_produto,:altura,:largura,:quantidade)';

parameters.ParamByName('id_pedido') :=;

parameters.ParamByName('id_cliente') := DBLookupcombobox1.keyvalue;

parameters.ParamByName('id_produto') := DBLookupcombobox2.keyvalue;

parameters.ParamByName('altura') := edAltura.Text;

parameters.ParamByName('largura') := edLargura.Text;

parameters.ParamByName('quantidade') := edQuantidade.text;

end; }

end;

te aconselharia a ter um botão para gravar primeiro a tabela pai..

e somente depois dela estar gravada, aí sim você poderia gravar a filha.

da forma que seu codigo esta, não tem como identificar o que vem da tabela pai, e o que vem da tabela filha

crie as duas tabelas, seus relacionamentos...

faça inserções de testes na tabela pai..

e depois na filha..

se tudo der certo..

depois você tenta os pedidos..

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.