Inquiridor
Preciso saber dentro do pedido, informando 1º o cliente qual o proximo numero do pedido

Pergunta
-
Olá, pessoal!
Sou novato nessa área, utilizo SQL Server 2008 R2, e estou precisando efetuar um busca, dentro da tabela Pedidos, no qual o código do cliente e o nº do pedido são as chaves primarias.
Ex:
Cod. Cliente:______ Nº Pedido:____
(Então informando o código do cliente preciso saber qual o proximo pedido a ser utilizado.)Obrigado.
Eloy
Todas as Respostas
-
-
Eloi, bom dia,
Nesse caso existem duas situações,
Onde o número de pedidos é sequencial independende do código do cliente ou o número de pedido é sequencial para cada cliente, da forma que um cleinte não pode ter o mesmo número de pedido ( segunda situação) ou o pedido não pode existei para mais de um cliente( primeira situação).
Independente do caso acredito que você possa utilizar esse código:
--retona o ultimo pedido emitido para o cliente e o proximo SELECT MAX (cod_pedido) AS Ultimo_emitido , MAX(cod_pedido) + 1 AS Proximo_pedido FROM PEDIDOS WHERE cod_cliente = x
abs.
Espero ter ajudado.
-
Olá Gustavo bom dia!
No caso estou usando em que o pedido é sequencial para cada cliente, da forma que o cliente não pode ter o mesmo nº de pedido, fiz conforme vc mostrou, mas não deu certo veja o que estou errando. Desde já agradeço a atenção...
Private Sub txtCliente_LostFocus()
Dim rsCliente As New ADODB.Recordset
Dim rsProximo As New ADODB.Recordset
On Error Resume Next
If txtCliente <> "" Then
lbCliente = ""
rsCliente.Open "Select Cli_Nome from Clientes where Cli_Codigo = " & txtCliente, dbbanco, adOpenDynamic, adLockOptimistic
If rsCliente.RecordCount <> 0 Then
lbCliente = rsCliente("Cli_Nome")
Else
MsgBox "Cliente informado não cadastrado", vbOKOnly, "Aviso"
txtCliente.SetFocus
End If
rsCliente.Close
txtNumero.SetFocus
Else
btLocalizar_Grupo_Click
End If
rsProximo.Open "select max(Venda_Numero)as Ultimo_Emitido, max(Venda_Numero) + 1 as Proximo_Pedido from Vendas where Venda_CodCliente = txtCliente"
rsProximo.Close
End Sub
-
-
Eloy,
O exemplo que o Gustavo te passou funciona no seu caso, mas acredito que você tem que modificar a linha que faz a consulta para o seguinte:
Uma observação: Neste seu caso, clientes diferentes poderão ter o mesmo número de pedido. Como a chave primária da sua tabela deve ser composta, não irá dar erro, mas isso não é inadequado para a lógica do negócio?rsProximo.Open "select max(Venda_Numero) + 1 as Proximo_Pedido from Vendas where Venda_CodCliente = txtCliente"
[]'s
Philipe Souza
E-mail: Philipe.s.souza@hotmail.com- Editado Philipe Souza quinta-feira, 31 de maio de 2012 12:56
-
-
-
Eloy,
A alteração que sugeri deu certo?
Para tentar entender melhor seu cenário, como você está querendo?
Cliente | Pedido
1 1
1 2
1 3
2 1
2 2
2 3
ou
Cliente | Pedido
1 1
1 2
1 3
2 4
2 5
2 6
[]'s
Philipe Souza
E-mail: Philipe.s.souza@hotmail.com -
Eloy bom dia,
Acredito que a informação que o Philipe passou esteja correta e pode te ajudar, pois uma vez que a sequencia de pedidos é única por cliente , sempre que você passar o cliente como chave de condição na pesquias e somar mais 1 ao retorno máximo o mesmo irá te trazer o proximo pedido para o cliente, que é caso descrito acima.
Abs.
att.
Gustavo Pierobom
-