none
Preciso saber dentro do pedido, informando 1º o cliente qual o proximo numero do pedido RRS feed

  • 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

    

    quarta-feira, 30 de maio de 2012 04:42

Todas as Respostas

  • Eloy,

    Não entendi muito bem a sua dúvida.

    Você quer buscar o código do pedido que já existe na tabela para o cliente ou quer gerar um novo código?


    []'s
    Philipe Souza
    E-mail: Philipe.s.souza@hotmail.com

    quarta-feira, 30 de maio de 2012 04:47
  • 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.

    quarta-feira, 30 de maio de 2012 11:52
  • 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

    quinta-feira, 31 de maio de 2012 12:25
  • Ola Felipe, bom dia!

    Eu preciso de uma forma que o cliente não pode ter o mesmo nº de pedido gerando para esse cliente um novo pedido a ser utilizado. Desde já agradeço a atenção..

    quinta-feira, 31 de maio de 2012 12:29
  • 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:

    rsProximo.Open "select max(Venda_Numero) + 1 as Proximo_Pedido from Vendas where Venda_CodCliente = txtCliente"  

    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?

    []'s
    Philipe Souza
    E-mail: Philipe.s.souza@hotmail.com


    quinta-feira, 31 de maio de 2012 12:55
  • Eloy, uma dúvida, como está o cenário da sua aplicação?

    Exemplo :

    Clinte    pedido

    1            1

    1            2

    1            3

    ou

    Clinte    pedido

    1            10

    1            23

    1            35

    ?

    Obrigado ,

    att.

    Gustavo

    quinta-feira, 31 de maio de 2012 13:07
  • Philipe,

    No caso preciso de cada cliente com uma sequencia de pedido.

    Obrigado pela atençäo.

    Eloy Maldonado
    eloymaldonado@hotmail.com

    quinta-feira, 31 de maio de 2012 13:17
  • 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

    quinta-feira, 31 de maio de 2012 13:22
  • 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

    quinta-feira, 31 de maio de 2012 13:29
  • Ola Gustavo,

    Esta na forma de seu primeiro exemplo?

    Clinte    pedido

    1            1

    1            2

    1            3

    Eloy Maldonado


    quinta-feira, 31 de maio de 2012 20:05