Ir para conteúdo

POWERED BY:

Arquivado

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

Ilano

Contador em tabelas relacionadas

Recommended Posts

Olá pessoal,

 

Para eu gerar um contador estou usando a seguinte SQL:

 

SELECT MAX(Ped_Codigo + 1) AS Contador FROM TB_Pedidos

O resultado é jogado para uma variável, caso o resultado retorne nulo a variável será igual a 1.

Até aí tudo bem, pois está fazendo o procedimento direitinho.

Porém, quando parto para a tabela de detalhes, como posso fazer com q o número daquele pedido seje enviado para essa segunda tabela (detalhes) caso o sistema esteja sendo usado por duas ou mais pessoas?

Por enquanto estou fazendo assim: o usuário cadastra o pedido, este vai para um DataGrid, daí o usuário seleciona aquele pedido q ele fez e o código do pedido é levado para uma variável, daí gero a sql SELECT MAX(Det_Codigo + 1) AS Contador FROM TB_Detalhes para criar o contador desta tabela e faço o pedido. Bom, o q eu gostaria de saber é se exisitiria uma forma de eu fazer isso de uma forma mais rápida, tipo, o usuário preencher pedidos e detalhes e num só clique co botão salvar já enviar tudo de uma vez pro banco, sem q ter q precisar cadastrar o pedido, selecionar o pedido cadastrado e cadastrar o detalhes do pedido, mas de uma forma q me garanta os relacionamentos.

 

Grato,

 

Ilano.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma pergunta importante: qual o banco utilizado?

 

No Access eu recomendaria a você criar uma tabela só para armazenar o próximo número de pedido. Desta maneira, quando um usuário começasse a fazer um pedido você iria nesta tabela, pegaria o valor atual e incrementaria mais um nele, gravando no banco. Esse valor atual você iria usar para o seu pedido. O esquema seria algo assim:

 

Usuário 1: pega o valor 51 do campo Pedido da tabela Contadores e grava o valor 52 neste mesmo campo;

Usuário 1: está digitando o pedido;

Usuário 2: pega o valor 52 do campo Pedido da tabela Contadores e grava o valor 53 neste mesmo campo;

Usuário 2: está digitando o pedido;

Usuário 1: finalizou o pedido (todos os itens são gravados com o nº de pedido 51)

Usuário 1: finalizou o pedido (todos os itens são gravados com o nº de pedido 52)

 

Agora, se você estiver usando o PostgreSQL como banco de dados não terá esse problema, já que você tem como obter o valor de um campo serial (autonumeração) logo após a inserção do registro.

 

Abraços,

 

Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilizo o SQLServer 2005.

No Access eu recomendaria a você criar uma tabela só para armazenar o próximo número de pedido. Desta maneira, quando um usuário começasse a fazer um pedido você iria nesta tabela, pegaria o valor atual e incrementaria mais um nele, gravando no banco. Esse valor atual você iria usar para o seu pedido.

Essa tabela seria algo do tipo:

Cont_Codigo (onde armazenará o número do pedido)Cont_Data (onde armazenará a data e hora do pedido dd/mm/yy hh:mm:ss)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilizo o SQLServer 2005.

No Access eu recomendaria a você criar uma tabela só para armazenar o próximo número de pedido. Desta maneira, quando um usuário começasse a fazer um pedido você iria nesta tabela, pegaria o valor atual e incrementaria mais um nele, gravando no banco. Esse valor atual você iria usar para o seu pedido.

Essa tabela seria algo do tipo:

Cont_Codigo (onde armazenará o número do pedido)Cont_Data (onde armazenará a data e hora do pedido dd/mm/yy hh:mm:ss)

Não precisa da data e hora, até porque esta tabela só terá 1 registro. E este é que será atualizado a cada pedido.Agora, será que no SQL Server não tem como fazer igual ao PostgreSQL? Ou seja, usando um campo do tipo auto-numeração?Abraços,Graymalkin

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.