Ir para conteúdo
Fórum Script Brasil
  • 0

Duvidas Com Codigo E Relacionamento De Tabelas


vms

Pergunta

ola pessoal

stou tentando fazer um sistema de estoque (pra mercadinho)

tenho as seguintes tabelas (paradox)

1_ Estoque:

Cod A

Mercadoria A

QTD I

preço $

2_ Venda

Cod_Mercadoria A

Mercadoria A

QTD I

preço $

Total $

queria fazer algo que de acordo com QTD da saida da venda

fosse diminuindo a QTD do estoque

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
Guest --felipe --
ola pessoal

stou tentando fazer um sistema de estoque (pra mercadinho)

tenho as seguintes tabelas (paradox)

1_ Estoque:

Cod A

Mercadoria A

QTD I

preço $

2_ Venda

Cod_Mercadoria A

Mercadoria A

QTD I

preço $

Total $

queria fazer algo que de acordo com QTD da saida da venda

fosse diminuindo a QTD do estoque

pra isso você pode usar TRIGGERS, ou alterar em tempo real no próprio delphi..

trigger eu não sei fazer em paradox..

em tempo real, você pode criar uma query auxiliar que faça só isso,

por exemplo: quando o usuário do soft. apertar o botão "Confirmar Venda".

supondo que sua query para a venda é VendaQuery e o módulo é dm

e que os campos de relacionamento entre elas são cod_mercadoria - Cod

s:='update estoque set qtd=qtd-'+dm.VendaQuery.fields[1].asstring+' where cod_mercadoria='+dm.VendaQuery.fields[0].asstring;
dm.auxquery.sql.clear;
dm.auxquery.sql.add(s);
dm.auxquery.open;
dm.auxquery.close;

mas eu acho que o canal mesmo é com trigger... no próprio paradox

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
pra isso você pode usar TRIGGERS, ou alterar em tempo real no próprio delphi..

trigger eu não sei fazer em paradox..

exatamente felipe, paradox não sá suporte a TRIGGERS - tem que ser no código mesmo.

s:='update estoque set qtd=qtd-'+dm.VendaQuery.fields[1].asstring+' where cod_mercadoria='+dm.VendaQuery.fields[0].asstring;
dm.auxquery.sql.clear;
dm.auxquery.sql.add(s);
dm.auxquery.open;
dm.auxquery.close;

apenas um adendo: para instruções como INSERT, UPDATE e DELETE no SQL (ou seja, instruções que não tenham resultado - como um SELECT) você deve utilizar o método ExecSQL e não Open. Assim, a linha:

dm.auxquery.Open;

deve ser substituida por

dm.auxquery.ExecSQL;

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
qual o comando que eu usaria na propriedade SQL dessa query auxiliar?
vms, está lá na primeira linha do exemplo: um UPDATE.

Mas, como sempre, gosto de sugerir que não seja utilizado concatenação dos valores. Trabalhe com parametrização (parâmetros) - isto pode evitar muita dor de cabeça em alguns casos. Então, cultivar este hábito pode ser salutar.

Link para o comentário
Compartilhar em outros sites

  • 0
Micheus, perdoe a ignorancia, mas você poderia ser mais claro

coloco apenas UPDATE?

Veja o exemplo que o felipe citou:

s:='update estoque set qtd=qtd-'+dm.VendaQuery.fields[1].asstring+' where cod_mercadoria='+dm.VendaQuery.fields[0].asstring;

dm.auxquery.sql.clear;

dm.auxquery.sql.add(s);

Percebeu? Uma instrução UPDATE atribuida a propriedade SQL da sua query.

sintax da instrução UPDATE:

UPDATE nome_table // ** esta indica em que tabela ocorre o update (atualização)

SET nome_campo1 = novo_valor1[, nome_campoN = novo_valorN] // ** esta faz a atribuição.

WHERE nome_campo = algum_valor //** esta linha limita a ação do update

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...