Jump to content
Fórum Script Brasil
  • 0

Duvidas Com Codigo E Relacionamento De Tabelas


vms
 Share

Question

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 to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.2k
    • Total Posts
      647.5k
×
×
  • Create New...