MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


3 participantes

    [Resolvido]Codigo cobrindo dados existentes.

    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Codigo cobrindo dados existentes. Empty [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Cláudio Machado 11/11/2013, 17:59

    Boa tarde meu amigos.
    Estou desesperado !! há algum tempo atrás, o JPaulo me ajudou com este código abaixo neste tópico.

    http://maximoaccess.forumeiros.com/t6231-resolvidonumeracao-automatica-personalizada?highlight=autonumera%C3%A7%C3%A3o+personalizada


    Ele gera uma numeração na tabela, se quiser posso te enviar o exemplo para estudo, acontece que até hoje tudo bem , só que agora ele está cobrindo alguns pedidos que foram feitos. Não consigo entender porquê, deveria criar um novo registro e adicionar estes dados

    Dim numeroencontrado As String, proximoNumero As Integer
           'By JPaulo ® Maximo Access
           'encontrar o ultimo numero na tabela
           numeroencontrado = Nz(DMax("Número_Pedido_Gerado", "PEDIDO_COMPRAS", "[Número_RE] = " & Me.Número_RE.Value), 0)
               If IsNull(numeroencontrado) Or numeroencontrado = "" Or numeroencontrado = "0" Then
               'se não existir numeração, insere o Número do Pedido + 001 para iniciar
                   numeroencontrado = Me.Número_RE.Value & "-" & "001"
               'devolve ao campo a nova numeração
                   Me.Número_Pedido_Gerado.Value = numeroencontrado

    DoCmd.RunCommand acCmdSaveRecord
               
               Else
               'se já existir numeração na tabela, acrescenta +1
                   proximoNumero = Right(DMax("Número_Pedido_Gerado", "PEDIDO_COMPRAS", "[Número_RE] = " & Me.Número_RE.Value), 3) + 1
               'devolve ao campo a nova numeração
                   Me.Número_Pedido_Gerado.Value = Me.Número_RE.Value & "-" & Format(proximoNumero, "000")

    DoCmd.RunCommand acCmdSaveRecord
               
               End If


    Por favor se puder me ajudar lhe agradeço muito.


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Codigo cobrindo dados existentes. 90dssg para agradecer a dica que solucionou seu problema.
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Codigo cobrindo dados existentes. Empty Codigo cobrindo dados existentes.

    Mensagem  good guy 11/11/2013, 19:40

    Olá Claudio,

    Troque a variável pelo nome do campo ao detectar se o campo está vazio ou não. Vê se funfa...

    Dim numeroencontrado As String, proximoNumero As Integer
    'By JPaulo ® Maximo Access
    'encontrar o ultimo numero na tabela
    numeroencontrado = Nz(DMax("Número_Pedido_Gerado", "PEDIDO_COMPRAS", "[Número_RE] = " & Me.Número_RE.Value), 0)
    If IsNull(Número_Pedido_Gerado) Or Número_Pedido_Gerado = "" Or Número_Pedido_Gerado = "0" Then
    'se não existir numeração, insere o Número do Pedido + 001 para iniciar
    numeroencontrado = Me.Número_RE.Value & "-" & "001"
    'devolve ao campo a nova numeração
    Me.Número_Pedido_Gerado.Value = numeroencontrado

    DoCmd.RunCommand acCmdSaveRecord

    Else
    'se já existir numeração na tabela, acrescenta +1
    proximoNumero = Right(DMax("Número_Pedido_Gerado", "PEDIDO_COMPRAS", "[Número_RE] = " & Me.Número_RE.Value), 3) + 1
    'devolve ao campo a nova numeração
    Me.Número_Pedido_Gerado.Value = Me.Número_RE.Value & "-" & Format(proximoNumero, "000")

    DoCmd.RunCommand acCmdSaveRecord

    End If
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Cláudio Machado 11/11/2013, 22:44

    Boa noite Good.

    Modifiquei, mas não vai nem á pau.

    O problema está na geração do primeiro e do segundo pedido, quando já existe uma numeração no Campo Número_Pedido que é automático, ele cobre todos os dados neste registro e quando gero outros pedidos utilizando o mesmo número de R.E., tipo 7565-001 ele gera o segundo pedido perfeitamente, só que cobre o 001 com o 7565-002.

    Estou fincando louco, se puder ajudar fico muito grato.


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Codigo cobrindo dados existentes. 90dssg para agradecer a dica que solucionou seu problema.
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Codigo cobrindo dados existentes. Empty Codigo cobrindo dados existentes

    Mensagem  good guy 12/11/2013, 11:59

    Olá Claudio,

    Posta então o teu bd para darmos uma olhada e ver o que é possível fazer para ajudá-lo.
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Cláudio Machado 12/11/2013, 12:13

    Ok, Good vou postar ele agora.
    Obrigado pela ajuda.


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Codigo cobrindo dados existentes. 90dssg para agradecer a dica que solucionou seu problema.
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Cláudio Machado 12/11/2013, 12:25

    Ai vai o link.

    Não deu pra postar aqui, porquê está um pouco maior do que o permitido.


    Última edição por Cláudio Machado em 12/11/2013, 12:52, editado 1 vez(es)


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Codigo cobrindo dados existentes. 90dssg para agradecer a dica que solucionou seu problema.
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Cláudio Machado 12/11/2013, 12:51

    Good baixa este aqui, que está mais completo, veja que os pedidos que começam com 75.. estão sendo cobertos pelos novo pedidos.

    http://www.4shared.com/zip/R-dN6BSb/COMPRAS_MAXIMOACCESSII_2000_GO.html


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Codigo cobrindo dados existentes. 90dssg para agradecer a dica que solucionou seu problema.
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Codigo cobrindo dados existentes. Empty Codigo cobrindo dados existentes.

    Mensagem  good guy 13/11/2013, 15:40

    Olá Claudio,

    Teste algumas modificações que fiz no formulário Form_6 - GERAR_PEDIDOS_PRODUTOS(Código)

    Dim numeroencontrado As String, proximoNumero As Integer
           'By JPaulo ® Maximo Access
           'encontrar o ultimo numero na tabela
           numeroencontrado = Nz(DMax("Número_Pedido_Gerado", "PEDIDO_COMPRAS", "[Número_RE] = " & Me.Número_RE.Value), 0)
           proximoNumero = Nz(Right(DMax("Número_Pedido_Gerado", "PEDIDO_COMPRAS", "[Número_RE] = " & Me.Número_RE.Value), 3)) + 1
               If IsNull(numeroencontrado) Or numeroencontrado = "" Then         '<===
               'se não existir numeração, insere o equipamento + 001 para iniciar
                   numeroencontrado = Me.Número_RE.Value & "-" & proximoNumero      '<===
               'devolve ao campo a nova numeração
                   Me.Número_Pedido_Gerado.Value = numeroencontrado

    DoCmd.RunCommand acCmdSaveRecord
               
               Else
               'se já existir numeração na tabela, acrescenta +1
                   proximoNumero = Nz(Right(DMax("Número_Pedido_Gerado", "PEDIDO_COMPRAS", "[Número_RE] = " & Me.Número_RE.Value), 3)) + 1
               'devolve ao campo a nova numeração
                   Me.Número_Pedido_Gerado.Value = Me.Número_RE.Value & "-" & Format(proximoNumero, "000")

    CurrentDb.Execute "UPDATE Orçamentos_Sub SET Id_Pedido = '" & Me.Número_Pedido_Gerado & "' WHERE Orçamentos_Sub.Selecionado=-1 And Id_Sub_Orçamentos=" & Me.Id_Orçamento & ""

    DoCmd.RunCommand acCmdSaveRecord

               End If


    FICOU ASSIM O RESULTADO:

    Nº Pedido Nº R.E. Nº Pedido Número_Pedido_Atual Data Fornecedor Fornecedor E-mail Endereço Telefone
    013225 7520 7520-003 11/11/2013 GIPSY COMERCIO DE MATERIAL DE LIMPEZA GIPSY COMERCIO DE MATERIAL DE LIMPEZA RUA CALIFÓRNIA, 580 (21) 3867-0456
    013227 7206 7206-002 7/11/2013 CASA TUPIARA DE PARAFUSOS LTDA CASA TUPIARA DE PARAFUSOS LTDA tupiara.parafusos@ig.com.br AVENIDA LOBO JÚNIOR, 1322 - LOJA B (21) 2290-5922
    013228 7507 7507-001 11/11/2013 C.J.A. REFRIGERAÇÃO C.J.A. REFRIGERAÇÃO cjarefri@uol.com.br RUA GUATEMALA, 339 (21) 3977-0849
    013229 7507 7507-002 11/11/2013 RANOVA RIO COMERCIO RANOVA RIO COMERCIO faturamento@ranova.com.br RUA GERSON FERREIRA, 232 (21) 2560-7798
    013230 7507 7507-003 11/11/2013 GIPSY COMERCIO DE MATERIAL DE LIMPEZA GIPSY COMERCIO DE MATERIAL DE LIMPEZA RUA CALIFÓRNIA, 580 (21) 3867-0456
    013232 7510 7510-001 11/11/2013 C.J.A. REFRIGERAÇÃO C.J.A. REFRIGERAÇÃO cjarefri@uol.com.br RUA GUATEMALA, 339 (21) 3977-0849
    013233 7510 7510-002 11/11/2013 RANOVA RIO COMERCIO RANOVA RIO COMERCIO faturamento@ranova.com.br RUA GERSON FERREIRA, 232 (21) 2560-7798
    013234 7510 7510-003 11/11/2013 GIPSY COMERCIO DE MATERIAL DE LIMPEZA GIPSY COMERCIO DE MATERIAL DE LIMPEZA RUA CALIFÓRNIA, 580 (21) 3867-0456
    013235 6724 6724-001 11/11/2013 C.J.A. REFRIGERAÇÃO C.J.A. REFRIGERAÇÃO cjarefri@uol.com.br RUA GUATEMALA, 339 (21) 3977-0849
    013236 6723 6723-001 11/11/2013 C.J.A. REFRIGERAÇÃO C.J.A. REFRIGERAÇÃO cjarefri@uol.com.br RUA GUATEMALA, 339 (21) 3977-0849
    013237 6722 6722-001 11/11/2013 C.J.A. REFRIGERAÇÃO C.J.A. REFRIGERAÇÃO cjarefri@uol.com.br RUA GUATEMALA, 339 (21) 3977-0849
    013238 7336 7336-001 11/11/2013 CLIMA RIO 2004 REFRIGERAÇÃO CLIMA RIO 2004 REFRIGERAÇÃO AV.LOBO JÚNIOR, 1146 (21) 3078-6100
    013239 7336 7336-002 11/11/2013 304 BRIMEL MATERIAL ELETRICO brimel@brimelbrimeletrica.com.br AVENIDA LUSITÂNIA, 360 (21) 3194-4450
    013240 7336 7336-003 11/11/2013 C.J.A. REFRIGERAÇÃO C.J.A. REFRIGERAÇÃO cjarefri@uol.com.br RUA GUATEMALA, 339 (21) 3977-0849
    013241 7336 7336-004 11/11/2013 CASA TUPIARA DE PARAFUSOS LTDA CASA TUPIARA DE PARAFUSOS LTDA tupiara.parafusos@ig.com.br AVENIDA LOBO JÚNIOR, 1322 - LOJA B (21) 2290-5922
    013242 6657 6657-002 11/11/2013 CASA TUPIARA DE PARAFUSOS LTDA CASA TUPIARA DE PARAFUSOS LTDA tupiara.parafusos@ig.com.br AVENIDA LOBO JÚNIOR, 1322 - LOJA B (21) 2290-5922
    013243 7253 7253-001 11/11/2013 CLIMA RIO 2004 REFRIGERAÇÃO CLIMA RIO 2004 REFRIGERAÇÃO AV.LOBO JÚNIOR, 1146 (21) 3078-6100
    013244 7253 7253-002 11/11/2013
    013245 7253 7253-003 11/11/2013 C.J.A. REFRIGERAÇÃO C.J.A. REFRIGERAÇÃO cjarefri@uol.com.br RUA GUATEMALA, 339 (21) 3977-0849
    013246 7253 7253-004 11/11/2013 R. DAVI GASES R. DAVI GASES RUA BELIZARIO PENA,1213 (21) 3888-5015
    013247 116 116-001 13/11/2013


    Última edição por good guy em 13/11/2013, 15:48, editado 1 vez(es)
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5078
    Registrado : 20/04/2011

    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Silvio 13/11/2013, 15:46

    Grandes amigos...boa tarde a ambos...

    Estou na tocaia desse tópico...vendo essa briga de tubarões aqui.

    abraços a ambos !


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Cláudio Machado 13/11/2013, 18:19

    Grande Sílvio !! Está brabo amigo, mas vamos conseguir. Abraços querido.cheers 

    Boa tentativa Good, obrigado por estar se dispondo a me ajudar, mas infelizmente não é isso.

    Com você funcionou porquê você utilizou um Número de RE que não existe na Tabela Pedidos na coluna Número_Pedido.

    Isto comigo também funciona, mas se você utilizar por exemplo, o nº 7565, experimente que você verá o erro.

    - Abra a Tabela Pedidos antes de gerar o pedido, procure na 1º coluna Nº Pedido pelo número 007565, verá que a 2º coluna Nº R.E. e a 3º coluna Nº Pedido estão em branco.

    - Até ai está certo, pois algum dia este pedido foi gerado.

    - Após abra a R.E. 7565, escolha um produto e gere o pedido, inclua todas as informações como fornecedor, etc.. Você verá que este pedido
    (007565) foi coberto pelo que você acabou de gerar, substituindo os dados que existiam.

    Isto é o que está me deixando louco!!!

    Obrigado por me ajudar amigo, a necessidade disto é muito grande.


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Codigo cobrindo dados existentes. 90dssg para agradecer a dica que solucionou seu problema.
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5078
    Registrado : 20/04/2011

    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Silvio 13/11/2013, 19:33

    Pelo que eu entendi, o mesmo está sendo substituído pelo novo pedido gerado, e não acrescentando o número a mais em cada RE. É isso ?


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Cláudio Machado 13/11/2013, 20:01

    Exatamente, isso Silvio.
    Acontece na tabela pedidos.
    Na verdade o código deveria criar um novo registro sempre que for gerado um novo pedido, independente se já existe ou não, a única diferença e que este código acrescenta um -002 ou 003 ou 004, etc, sempre que há um novo pedido baseado na numeração da R.E..

    Quando esta numeração não existe na tabela pedidos ele funfa certinho, mas quando existe ele substitui.


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Codigo cobrindo dados existentes. 90dssg para agradecer a dica que solucionou seu problema.
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Codigo cobrindo dados existentes. Empty Codigo cobrindo dados existentes.

    Mensagem  good guy 14/11/2013, 15:06

    Olá Cláudio,

    O que quer dizer abrir a R.E. 7565? Qual é o formulário que você menciona aqui?

    Após abra a R.E. 7565, escolha um produto e gere o pedido, inclua todas as informações como fornecedor, etc.. Você verá que este pedido
    (007565) foi coberto pelo que você acabou de gerar, substituindo os dados que existiam.

    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Cláudio Machado 14/11/2013, 17:23

    Boa tarde.
    Quando você abre o sistema ele exibe uma tela "6-LISTA_RE_AUTORIZADAS", nela constam vários números de R.E.´s escolha esta que eu lhe falei "7565" para gerar os pedidos e siga o que lhe expliquei acima.

    Você verá que o código cobre um registro já existente.


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Codigo cobrindo dados existentes. 90dssg para agradecer a dica que solucionou seu problema.
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Codigo cobrindo dados existentes. Empty Codigo cobrindo dados existentes.

    Mensagem  good guy 14/11/2013, 20:12

    Olá Claudio,

    Você já testou retirar a indexação do campo? Ao invés de Indexado Sim com Duplicação autorizada, deixá-lo sem indexação. Caso não queira fazer isso. Teste esse código modificado:


    Dim numeroencontrado As String, proximoNumero As Integer
    Dim n As Integer
    'By JPaulo ® Maximo Access
    'encontrar o ultimo numero na tabela
    n = n + 1
    numeroencontrado = Nz(DMax("Número_Pedido_Gerado", "PEDIDO_COMPRAS", "[Número_RE] = " & Me.Número_RE.Value), 0)
    If IsNull(numeroencontrado) Or numeroencontrado = "" Or numeroencontrado = "0" Then
    'se não existir numeração, insere o equipamento + 001 para iniciar
    numeroencontrado = Me.Número_RE.Value & "-" & Format(n, "000")
    'devolve ao campo a nova numeração
    Me.Número_Pedido_Gerado.Value = numeroencontrado

    DoCmd.RunCommand acCmdSaveRecord
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Cláudio Machado 15/11/2013, 12:01

    Bom dia Good, lhe agradeço muito pelo seu empenho.
    Amigo, está difícil !
    Tentei das duas formas, retirando a indexação e incluindo este código que você me passou, não funfa nem á pau.
    Estou quebrando a cabeça em cima deste código mas não consigo resolver.
    Ficando louco já.


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Codigo cobrindo dados existentes. 90dssg para agradecer a dica que solucionou seu problema.
    avatar
    Convidado
    Convidado


    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Convidado 15/11/2013, 13:08

    Boas amigos.. Posso participar deste? rsrs

    Claudio... de um passo a passo para mim citando o número que é substituido, campo, tabela, form etc.

    Cumprimentos.
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Cláudio Machado 15/11/2013, 18:17

    Claro! Seja bem vindo amigo Piloto! É sempre um prazer tê-lo por aqui. Bem vamos ao que interessa

    Bem, peguei o código acima citado com o amigo JPaulo e adaptei com a ajuda dele em meu sistema, funcionava perfeitamente até eu perceber que começou á cobrir registros já existentes.

    Tenho um form 6-LISTA_RE_AUTORIZADAS onde existem as R.E.´s que são liberadas para gerar pedido de compra.
    Escolho uma R.E. desta e abro o form 6-GERAR_PEDIDOS_PRODUTOS (para produtos), existem outros para serviços e ferramentas, mas vamos trabalhar só com esse, pois o funcionamento é o mesmo.

    Após abrir este form 6-GERAR_PEDIDOS_PRODUTOS, escolho o(s) produto(s) e clico no botão Gerar Pedido, o código gera uma numeração na tabela PEDIDO_COMPRAS no campo Número_Pedido_Gerado e copia o número da R.E. para o campo Número_RE na tabela PEDIDO_COMPRAS.

    Isto funcionaria normalmente se não acontecesse o erro que descrever agora.

    Não existe um registro específico que ocorre o erro, ele ocorre sempre que já existir no campo Número_Pedido na tabela PEDIDO_COMPRAS um número igual ao número da R.E.

    Pedi ao Good que trabalhasse com a R.E. 7565, pois este número existe na tabela PEDIDO_COMPRAS.

    Abra a Tabela PEDIDO_COMPRAS antes de gerar o pedido, procure na 1º coluna Nº Pedido pelo número 007565, verá que a 2º coluna Nº R.E. e a 3º coluna Nº Pedido estão em branco.

    Isto está certo, pois não têm nada a ver com o novo pedido que será gerado.

    Feche a tabela PEDIDO_COMPRAS, abra o form 6-LISTA_RE_AUTORIZADAS.

    Após abra a R.E. 7565, escolha um produto e gere o pedido, inclua todas as informações como fornecedor, etc..

    Em seguida abra a tabela PEDIDO_COMPRAS. Você verá que este registro (007565) foi coberto pelo que você acabou de gerar, substituindo os dados que existiam.

    Este é o problema.

    Obrigado por me ajudar amigo, a necessidade disto é muito grande

    Abraço.




    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Codigo cobrindo dados existentes. 90dssg para agradecer a dica que solucionou seu problema.
    avatar
    Convidado
    Convidado


    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Convidado 15/11/2013, 19:13

    Ok...

    Bem.. na lógica o novo pedido teria que ser que número?
    avatar
    Convidado
    Convidado


    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Convidado 15/11/2013, 19:21

    Esta dando erros..
    Um deles é que não pode desablitar o botão.. porque o mesmo tem o foco..
    e outros..

    Compilou o sistema?

    Te um campo total também que não está aceitando o valor...
    avatar
    Convidado
    Convidado


    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Convidado 15/11/2013, 19:26

    Eu percebei que ele grava acima do 7565...

    Qual é a ação esperada...

    De uma breve descrição do que pretende.

    Cumprimentos.
    avatar
    Convidado
    Convidado


    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Convidado 15/11/2013, 19:42

    Veja bem porque ele está gravando por cima do 7565

    O Formulário 6 - Gerar_Pedidos_Produtos tem uma consulta como base contendo 3 tabelas relacionadas:
    [Resolvido]Codigo cobrindo dados existentes. Captura%20de%20tela%202013-11-15%2017.30.29
    [Resolvido]Codigo cobrindo dados existentes. Captura%20de%20tela%202013-11-15%2017.30.29

    Quando abre o mesmo através da RE 7565, o formulário abrirá filtrado pelas devidas relações entre as tabelas acima.
    Como na tabela Pedidos_Compra tem apenas um Número_Pedido = 7565,o formulário abrirá baseado neste item da tabela Pedido_Compras

    Veja agora porque ele grava sobre  Número_Pedido = 7565

    Ao executar a função, numeroencontrado assumirá o valor = 0 pois o campo Número_RE na tabela PEDIDO_COMPRAS é núlo
            numeroencontrado = Nz(DMax("Número_Pedido_Gerado", "PEDIDO_COMPRAS", "[Número_RE] = " & Me.Número_RE.Value), 0)
    Como a condição numeroencontrado = 0 remete para a parte inicial do if... Gera uma numeração baseada  no RE + 001
                If IsNull(numeroencontrado) Or numeroencontrado = "" Or numeroencontrado = "0" Then
                'se não existir numeração, insere o equipamento + 001 para iniciar
                    numeroencontrado = Me.Número_RE.Value & "-" & "001"
                'devolve ao campo a nova numeração
    Leva esta numeração à caixa texto acoplada ao campo Número_Pedido_Gerado.
    Este campo é da tabela PEDIDO_COMPRAS
    Como a SQL abriu o formulário relacionado com as 3 tabelas...sendo que na tabela PEDIDO_COMPRAS só existe um registro de número 7565
    Logicamente se levar o número criado para a caixa texto.. gravará no registro 7565 da tabela PEDIDO_Compras
                    Me.Número_Pedido_Gerado.Value = numeroencontrado



    Esta foi a conclusão que cheguei.


    avatar
    Convidado
    Convidado


    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Convidado 15/11/2013, 20:04

    Faça o seguinte teste.. Adicione um novo registro no formulário antes de levar a RE+001 Para o campo..
    Depois observe o último registro na tabela PEDIDOS_COMPRAS
    Código:

           Dim numeroencontrado As String, proximoNumero As Integer
            'By JPaulo ® Maximo Access
            'encontrar o ultimo numero na tabela
            numeroencontrado = Nz(DMax("Número_Pedido_Gerado", "PEDIDO_COMPRAS", "[Número_RE] = " & Me.Número_RE.Value), 0)
                If IsNull(numeroencontrado) Or numeroencontrado = "" Or numeroencontrado = "0" Then
                'se não existir numeração, insere o equipamento + 001 para iniciar
                    numeroencontrado = Me.Número_RE.Value & "-" & "001"
                    DoCmd.GoToRecord , , acNewRec
                'devolve ao campo a nova numeração
                    Me.Número_Pedido_Gerado.Value = numeroencontrado

    DoCmd.RunCommand acCmdSaveRecord
               
                Else
                'se já existir numeração na tabela, acrescenta +1
                    proximoNumero = Right(DMax("Número_Pedido_Gerado", "PEDIDO_COMPRAS", "[Número_RE] = " & Me.Número_RE.Value), 3) + 1
                'devolve ao campo a nova numeração
                    Me.Número_Pedido_Gerado.Value = Me.Número_RE.Value & "-" & Format(proximoNumero, "000")

    CurrentDb.Execute "UPDATE Orçamentos_Sub SET Id_Pedido = '" & Me.Número_Pedido_Gerado & "' WHERE Orçamentos_Sub.Selecionado=-1 And Id_Sub_Orçamentos=" & Me.Id_Orçamento & ""

    DoCmd.RunCommand acCmdSaveRecord

                End If

    Aconselho também usar tabulação nos códigos para facilitar a compreensão dos mesmos. Veja o mesmo código acima tabulado:

    Código:

           Dim numeroencontrado As String, proximoNumero As Integer
            'By JPaulo ® Maximo Access
            'encontrar o ultimo numero na tabela
            numeroencontrado = Nz(DMax("Número_Pedido_Gerado", "PEDIDO_COMPRAS", "[Número_RE] = " & Me.Número_RE.Value), 0)
                If IsNull(numeroencontrado) Or numeroencontrado = "" Or numeroencontrado = "0" Then
                    'se não existir numeração, insere o equipamento + 001 para iniciar
                    numeroencontrado = Me.Número_RE.Value & "-" & "001"
                    DoCmd.GoToRecord , , acNewRec
                    'devolve ao campo a nova numeração
                    Me.Número_Pedido_Gerado.Value = numeroencontrado
                    DoCmd.RunCommand acCmdSaveRecord
                Else
                    'se já existir numeração na tabela, acrescenta +1
                    proximoNumero = Right(DMax("Número_Pedido_Gerado", "PEDIDO_COMPRAS", "[Número_RE] = " & Me.Número_RE.Value), 3) + 1
                    'devolve ao campo a nova numeração
                    Me.Número_Pedido_Gerado.Value = Me.Número_RE.Value & "-" & Format(proximoNumero, "000")
                    CurrentDb.Execute "UPDATE Orçamentos_Sub SET Id_Pedido = '" & Me.Número_Pedido_Gerado & "' WHERE Orçamentos_Sub.Selecionado=-1 And Id_Sub_Orçamentos=" & Me.Id_Orçamento & ""
                    DoCmd.RunCommand acCmdSaveRecord
                End If
       

    Agora a solução para este problema creio que seria através do INSERT INTO, inserindo o novo registro com todos os dados pertinentes na tabela.

    Cumprimentos.
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Cláudio Machado 15/11/2013, 20:55

    Quanto aos códigos, desculpe pela bagunça, mas é que eu fui incluindo linhas e foi ficando assim.
    Quando terminar este sistema, vou arrumar tudo.

    Bem percebi que modificação no código que você fez, foi só adicionar a linha para um novo registro.
    Já havia tentado isso e não funciona, fica do mesmo jeito, cobrindo o registro existente.

    Cara isto está ficando muito louco.


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Codigo cobrindo dados existentes. 90dssg para agradecer a dica que solucionou seu problema.
    avatar
    Convidado
    Convidado


    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Convidado 15/11/2013, 22:26

    Eu adicionei aqui a linha e criou novo registro..

    Você tem que adicionar antes de csrregar o campo:

    Código:
              DoCmd.GoToRecord , , acNewRec
                'devolve ao campo a nova numeração
                    Me.Número_Pedido_Gerado.Value = numeroencontrado
    avatar
    Convidado
    Convidado


    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Convidado 15/11/2013, 22:35

    O Problema está exclusivamente no que citei no post 22.

    Cumprimentos.
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Cláudio Machado 15/11/2013, 23:59

    Piloto, agradeço muito seu empenho amigo.

    Entendi +/- o que quis dizer, o que você sugere que eu faça para melhorar isso.

    E o que você me diz de este mesmo erro acontecer quando ainda não existe um pedido feito para esta R.E.?

    Pois é isto acontece sempre que há um numero igual na tabela de pedidos, não somente quando já existe.

    Está complicado de entender.


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Codigo cobrindo dados existentes. 90dssg para agradecer a dica que solucionou seu problema.
    avatar
    Convidado
    Convidado


    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Convidado 16/11/2013, 01:24

    Você tem que entender o seguinte..

    Imagine um formulário simples.. Baseado em uma tabela com dois Campos

    1 - ID (Numeracão automática)
    2 - CampoX.

    Imagine que o registro seja ID = 1 e o campoX esteja ou preenchido ou em branco.

    Se abrir este formulário no registro 1, executar código semelhante a este que está utilizando.. e colocar assim:

    Me.CampoX = NumeroEncontrado

    O Seu registro 1 terá como valor no CampoX o número encontrado pelo código..

    É isto que está acontecendo no teu fomulário.

    Sua tabela PEDIDOS_COMPRA tem um registro cuja RE = 7565
    Ao selecionar este registro no form LISTA_RE_AUTORIZADAS, você abre o formulário de pedido filtrado!!!! Veja:

            strNomeDoDoc = "6-GERAR_PEDIDOS_PRODUTOS"
            strCritérioDeVínculo = "ID_ORÇAMENTO = " & Id_Orçamento


    Olha que interessante aqui... Veja o relacionamento das tabelas que compõe o formulário 6-GERAR_PEDIDOS_PRODUTOS:
    [Resolvido]Codigo cobrindo dados existentes. Captura%20de%20tela%202013-11-15%2017.30.29


    Observe os campos de relacionamento!!!

    OCorre que:

    Na tabela Orçamento existe o N Orçamento = 7565
    Na tabela Orçamentos_SUB não existe o Autonumeração = 7565
    Na tabela Pedidos_Compra existe o  N Pedido = 7565

    Portanto este relacionamento estará furado...
    Não se relaciona tabelas por Numeração automática x Numeração automática.

    Imagine um exemplo hipotético...

    Suponha que tenha duas tabelas com este relacionamento que fez acima, relacionadas pela numeração automática.

    Tabela 1
    Reg 1

    Tabela 2
    Reg 1

    Até aqui tudo bem...

    Mas e se... criar um registro na tabela 1 e não necessitar de registro na tabela 2..

    Tabela 1
    Reg 1
    Reg 2

    Tabela 2
    Reg 1


    Agora suponha que crie o registro 3 na tabela 1 e necessite de um registro relacionado na tabela 2

    Tabela 1
    Reg 1
    Reg 2
    Reg 3
    Tabela 2
    Reg 1
    Reg 2

    O registro criado na tabela 2 para o reg 3 na tabela 1 seria o de número 2, portanto como são relacionadas pelo campo da auto numeração..

    O reg 2 na tabela 2 não ficaria relacionado ao reg 3 na tabela 1.. e sim ao registro anterior!!!  Compreendeu?


    O problema está ai...

    Cumprimentos.
    avatar
    Convidado
    Convidado


    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Convidado 16/11/2013, 01:38

    Ajude-me a compreender esta sistemática...

    Você gera um Orçamento para um cliente..

    >> Orçamento Número 0001 (tabela ORÇAMENTOS)
    >> Este orçamento é composto de X itens (cadastrados na tabela ORÇAMENTOS SUB)

    >>>>> Este orçamento fica em aberto.. Aguardando a solicitação dos itens.. que pode ser todos os itens ou apenas alguns
    >>>>> Supondo que o orçamento seja composto de 50 itens.. Mas no DIA X o cliente solicitou apenas 10 itens..

    Então você gera um pedido deste 10 ítens (PEDIDO número XXXXX)
    Atualiza a tabela ORÇAMENTO_SUB para colocar no ítem a qual pedido ele pertence..

    Portanto o seu Orçamento original (50 itens) ficam faltando 40 itens para pedidos posteriores..


    É isto?

    Cumprimentos.
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Cláudio Machado 16/11/2013, 02:14

    Exatamente isto, sendo que os itens não podem sumir da tabela ORÇAMENTO_SUB.

    Agra você entendeu a sistemática.


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Codigo cobrindo dados existentes. 90dssg para agradecer a dica que solucionou seu problema.
    avatar
    Convidado
    Convidado


    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Convidado 16/11/2013, 03:00

    Bem... Eu havia percebido o que prentendia.. porém a maneira como fez  me deixou um pouco confuso.

    Vamos lá... Terá que rever todos os teus procedimentos desde o cadastro do Orçamento

    1 - A tabela ORÇAMENTO deverá ser relacionada à tabela ORÇAMENTO_SUB, para isto a tabela ORÇAMENTO_SUB deverá ter um campo do tipo Numero para receber o número do orçamento, as tabelas serão relacionadas por Tabela ORÇAMENTO (Numeração automática) x Tabela ORÇAMENTO_SUb (Campo Numero)
    2 - no Formulário de cadastro de orçamento o sub formulário relacionado com o formulário por estes campos
    3 - A tabela Pedido relacionada ao orçamento e podendo ser relacionada tambem à tabela ORÇAMENTO_SUB, assim teria o pedido relacionado ao orçamento, e o orçamento relacionado com seus itens
    4 - Ao abir a lista dos itens.. selecioná-los, e gerar o pedido. Aqui viria a utilização do código do JP

    Agora.. explique-me a lógica do numero de RE...(o que é) e o porque do 001... 0002.. há sua frente.

    Cumprimentos.
    avatar
    Convidado
    Convidado


    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Convidado 16/11/2013, 12:35

    É isso ai Claudio... Terá que rever todos os procedimentos desta sistemática...

    Tem muita coisa que fez que se refeito da maneira mais adequada não seriam necessários..
    \Ou seja, como diz o Mestre JP.. O simples..

    1 - Relacionamentos adequados ao que se propõe
    2 - Códigos mais enxutos e eficazes
    3 - Nome de campos utilizados nos relacionamentos de maneira condizentes à tabela relacionada, por exemplo:
    Tabela ORÇAMENTO (ID_Orçamento) x Tabela ORÇAMENTO_SUB (Orçamento_ID)

    Vais ter um grande trabalho.. más é isto.

    Caso deseja, me envie um modelo com apenas dois orçamentos com ítens para que eu possa ajudá-lo.

    Cumprimentos.
    avatar
    Convidado
    Convidado


    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Convidado 16/11/2013, 12:45

    Pensei assim... Fazer um pequeno exemplo baseado nesta sistemática para que você possa visualizar como será a solução para aplicar ao teu projeto.


    Aguardo.
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Cláudio Machado 16/11/2013, 17:19

    Ok, Piloto, sua ajuda está sendo de grande valia, vou montar algo mais sucinto e te passo. aqui.

    Bem quanto á lógica do número de R.E. , é o seguinte:

    As R.E.'s são geradas com uma única numeração, ex: 007565, estas R.E.'s podem ter vários produtos de um mesmo fornecedor, assim seria gerado um único pedido: 7565-001, entendendo-se que este pedido refere-se á R.E. 7565.

    Caso esta R.E. tenha vários produtos de vários fornecedores, então vamos selecionar os produtos dos quais queremos comprar de tal fornecedor e então iremos gerar vários pedidos sendo:

    Fornecedor 1 = Pedido 7565-001
    Fornecedor 2 = Pedido 7565-002
    Fornecedor 3 = Pedido 7565-003

    E assim por diante.

    Esta é a lógica, por isso a necessidade de gerar pedidos desta forma.

    Abraço


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Codigo cobrindo dados existentes. 90dssg para agradecer a dica que solucionou seu problema.
    avatar
    Convidado
    Convidado


    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Convidado 16/11/2013, 17:28

    Vou montar um exemplo baseado na sistemática que utiliza..
    Poderás observá-lo e adaptar a solução ao teu ok?

    Cumprimentos.
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Cláudio Machado 16/11/2013, 17:57

    Pôxa se você puder, agradeço antecipadamente.
    Obrigado mesmo pelo seu empenho.
    Abraço.


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Codigo cobrindo dados existentes. 90dssg para agradecer a dica que solucionou seu problema.
    avatar
    Convidado
    Convidado


    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Convidado 16/11/2013, 19:02

    Eis aqui o exemplo.

    1 - Contém dois formulários (frmOrcamento e frmPedido) ambos com seus respectivos subformulários)

    2 - Na tblOrcamento tem dois campos do tipo Sim/Não
         Selecionado >> para o evento de atualizar o Númedo do Pedido gerado
         Lancado     >> Após a criação do pedido este campo é marcado como Sim para que no próximo pedido os itens já lançados não o sejam novamente

    3 - Abra o frmOrcamento, selecione alguns intens e clique em gerar Pedido

    4 - O pedido será gerado com os itens selecionados no frmOrcamento e após isto emitirá aviso para visualizar o pedido.

    5 - Gere o primeiro pedido para dois itens e observe, em seguida gere outro pedido para 2 ou mais itens e observe

    6 - Depois de lançar dois ou tres pedidos, abra o frmPedido e navegue por seus registros.

    7 - Na tblPedido não é necessário colocar os dados do cliente visto que a tblPedido é relacionada à tblOrcamento (basta uma consulta de ambas para exibir os registros, veja a consulta do frmPedido para ver como é esta consulta

    Tudo feito em apenas um click do botão com a utilização do Código do Mestre João Paulo


    'By JPaulo ® Maximo Access
    'encontrar o ultimo numero na tabela
    'Modificado por Harysohn Pina ® Maximo Access em 16/11/2013
    Dim NumeroEncontrado As String
    Dim ProximoNumero As Integer
    Dim NumeroGerado As String
    Dim lngPedido As Long
    NumeroEncontrado = Nz(DMax("ID_Pedido", "tblPedido", "Orcamento_ID = " & Me.ID_Orcamento.Value), 0)
       
        If IsNull(NumeroEncontrado) Or NumeroEncontrado = "" Or NumeroEncontrado = "0" Then
            'se não existir numeração, insere o equipamento + 001 para iniciar
            NumeroEncontrado = Me.ID_Orcamento & "-" & "001"
            '--------------------------------------------------------------------------------------------------------
            'Insere o pedido na tabela tblPedido, como a tabela é relacionada à tabela tblOrcamento, não é necessário
            'inserir os dados do cliente, pois o formulário frmPedido é baseado em uma consulta de ambas as tabelas
            '--------------------------------------------------------------------------------------------------------
            CurrentDb.Execute "INSERT INTO tblPedido (Orcamento_ID, CpData) Values (""" & Me.ID_Orcamento & """, #" & Date & "#)"
            '---------------------------------------
            'Lança na variável a Id do pedido gerado
            '---------------------------------------
            lngPedido = DMax("ID_Pedido", "tblPedido")
            '----------------------------------------------------------------------------------------------------------------------
            'Atualiza o campo do ítem na tblOrcamentoDet para colocar no campo Pedido_Seq o número do pedido a qual o item pertence
            '----------------------------------------------------------------------------------------------------------------------
            CurrentDb.Execute "UPDATE tblOrcamentoDet SET Pedido_Seq = '" & NumeroEncontrado & "'," _
                            & "Pedido_ID = " & lngPedido & " WHERE Selecionado=-1 And Lancado = 0 And Orcamento_ID =" & Me.ID_Orcamento & ""
            '-------------------------------------------------------------------------------------------------
            'Atualiza o campo Lancado na tblOrcamentoDet para que no próximo pedido o mesmo não seja computado
            '-------------------------------------------------------------------------------------------------
            CurrentDb.Execute "UPDATE tblOrcamentoDet SET Lancado = -1 WHERE Selecionado=-1 And Orcamento_ID =" & Me.ID_Orcamento & ""
       
        Else
            'se já existir numeração na tabela, acrescenta +1
            ProximoNumero = Right(DMax("ID_Pedido", "tblPedido", "Orcamento_ID = " & Me.ID_Orcamento.Value), 3) + 1
            'devolve ao campo a nova numeração
            NumeroGerado = Me.ID_Orcamento & "-" & Format(ProximoNumero, "000")
            '--------------------------------------------------------------------------------------------------------
            'Insere o pedido na tabela tblPedido, como a tabela é relacionada à tabela tblOrcamento, não é necessário
            'inserir os dados do cliente, pois o formulário frmPedido é baseado em uma consulta de ambas as tabelas
            '--------------------------------------------------------------------------------------------------------
            CurrentDb.Execute "INSERT INTO tblPedido (Orcamento_ID, CpData) Values (""" & Me.ID_Orcamento & """, #" & Date & "#)"
            '---------------------------------------
            'Lança na variável a Id do pedido gerado
            '---------------------------------------
            lngPedido = DMax("ID_Pedido", "tblPedido")
            '----------------------------------------------------------------------------------------------------------------------
            'Atualiza o campo do ítem na tblOrcamentoDet para colocar no campo Pedido_Seq o número do pedido a qual o item pertence
            '----------------------------------------------------------------------------------------------------------------------
            CurrentDb.Execute "UPDATE tblOrcamentoDet SET Pedido_Seq = '" & NumeroGerado & "'," _
                            & "Pedido_ID = " & lngPedido & " WHERE Selecionado=-1 And Lancado = 0 And Orcamento_ID =" & Me.ID_Orcamento & ""
            '-------------------------------------------------------------------------------------------------
            'Atualiza o campo Lancado na tblOrcamentoDet para que no próximo pedido o mesmo não seja computado
            '-------------------------------------------------------------------------------------------------
            CurrentDb.Execute "UPDATE tblOrcamentoDet SET Lancado = -1 WHERE Selecionado=-1 And Orcamento_ID =" & Me.ID_Orcamento & ""
        End If
    '----------------------------------
    'Atualiza os dados do subformulário
    '----------------------------------
    Me.SubfrmOrcamento.Requery

    Dim msg As String
        msg = MsgBox("Abrir o pedido para visualização?", vbYesNo + vbQuestion, "ABRIR PEDIDO")
        Select Case msg
            Case vbYes
                DoCmd.OpenForm "frmPedido", , , "ID_Pedido = " & lngPedido & ""
            Case vbNo
        End Select
       
    End Sub


    Cumprimentos.
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Cláudio Machado 16/11/2013, 19:51

    Caramba Piloto !!! Perfeito ! É isso mesmo.

    Só um detalhe, você acha que deste jeito não irá cobrir um registro sobre o outro?

    Você está usando a mesma tabela do subform de orçamento para o sub de pedidos?
    Não criou uma outra tabela para este subform.

    Mesmo assim vou adaptar aqui e posto pra você ver.

    Assim que terminar aviso aqui.

    Obrigado mesmo por ter dedicado seu tempo á este projeto.

    Abraço.


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Codigo cobrindo dados existentes. 90dssg para agradecer a dica que solucionou seu problema.
    avatar
    Convidado
    Convidado


    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Convidado 16/11/2013, 21:00

    Não... Jamais registros serão cobertos.. porque na instrução o comando CurrentDb.Execut INSERT INTO... cria sempre um novo registro na tabela tblPedido

    Sim.. a tabela tblOrcamentoDet é comum aos dois subforms, tanto do orçamento como do pedido, veja como é feito isto:

    As tabelas são relacionadas entre si

    tblOrcamento x tblOrcamentoDet (ID_Orcamento x Orcamento_ID >> Campos dos relacionamentos)

    tblPedido x tblOrcamentoDet (ID_Pedido x Pedido_ID >> Campos do relacionamento)

    Quando eu seleciono um item do orcamento para aplicá-lo a um novo pedido.. No mesmo comando CurrentDb.Execute INSERT INTO, eu mando gravar no campo Pedido_ID na tblOrcamentoDet o ID_Pedido na tblPedido, ficando assim o item selecionado relacionado à tblPedido.

    Portanto este item será relacionado tanto no orcamento como no pedido

    Veja os registros na tblOrcamentoDet depois de feito um pedido.

    >>> Observe que a tabela pedido apenas conterá registros inerentes ao mesmo, como data e outro campo que achar conveniente.
    Os dados do cliente será puxado da tblOrcamento posto que as tabelas estão relacionada.
    Observe a consulta do frmPedido..

    Cumprimentos.
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Cláudio Machado 17/11/2013, 01:25

    Ok, vou fazer as alterações e pelo visto vai funcionar perfeitamente como preciso.
    Assim que terminar, posto pra você e coloco o tópico como resolvido.

    Obrigado mesmo.


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Codigo cobrindo dados existentes. 90dssg para agradecer a dica que solucionou seu problema.
    avatar
    Convidado
    Convidado


    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Convidado 18/11/2013, 11:23

    Beleza..
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Cláudio Machado 18/11/2013, 18:33

    Boa tarde Piloto.

    Bem a solução é essa mesmo, está funcionando quase certinho.

    O único problema está na geração do número do pedido, se você verificar no frmOrcamento, verá que o código está pegando para o segundo pedido, o número do campo ID_Pedido da tblPedido, então isto vai crescer.

    Na verdade ele deveria pegar o registro na tabela pedido ex: 1-001, 1-002 1-003 1-004 e assim por diante, só que ele pega o último registro do campo ID_Pedido da tblPedido e gera.

    Repare bem.

    Obrigado
    Anexos
    [Resolvido]Codigo cobrindo dados existentes. AttachmentBdExemplo_Piloto.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (93 Kb) Baixado 9 vez(es)


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Codigo cobrindo dados existentes. 90dssg para agradecer a dica que solucionou seu problema.
    avatar
    Convidado
    Convidado


    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Convidado 18/11/2013, 20:22

    De um exemplo textual disso citando um dos orçamentos no exemplo.

    Cumprimentos.
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Cláudio Machado 18/11/2013, 23:11

    Simples, gere um segundo registro no form "frmOrcamento" e inclua pelo menos dois itens no subform "SubfrmOrcamento".

    Gere o pedido de compras e volte no "frmOrcamento" e veja que no primeiro item no campo "Pedido_Seq" o número do pedido está correto.

    Agora gere um segundo pedido usando o segundo item: Verá que o número gerado está fora da sequência.

    Abraço.


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Codigo cobrindo dados existentes. 90dssg para agradecer a dica que solucionou seu problema.
    avatar
    Convidado
    Convidado


    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Convidado 18/11/2013, 23:59

    Rolling Eyes  Tendi....

    Vou ver isto.
    avatar
    Convidado
    Convidado


    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Convidado 19/11/2013, 00:08

    Substitua o a linha em negrito no código:


    'By JPaulo ® Maximo Access
    'encontrar o ultimo numero na tabela
    'Modificado por Harysohn Pina ® Maximo Access em 16/11/2013
    Dim NumeroEncontrado As String
    Dim ProximoNumero As Integer
    Dim NumeroGerado As String
    Dim lngPedido As Long
    NumeroEncontrado = Nz(DMax("ID_Pedido", "tblPedido", "Orcamento_ID = " & Me.ID_Orcamento.Value), 0)
       
        If IsNull(NumeroEncontrado) Or NumeroEncontrado = "" Or NumeroEncontrado = "0" Then
            'se não existir numeração, insere o equipamento + 001 para iniciar
            NumeroEncontrado = Me.ID_Orcamento & "-" & "001"
            '--------------------------------------------------------------------------------------------------------
            'Insere o pedido na tabela tblPedido, como a tabela é relacionada à tabela tblOrcamento, não é necessário
            'inserir os dados do cliente, pois o formulário frmPedido é baseado em uma consulta de ambas as tabelas
            '--------------------------------------------------------------------------------------------------------
            CurrentDb.Execute "INSERT INTO tblPedido (Orcamento_ID, CpData) Values (""" & Me.ID_Orcamento & """, #" & Date & "#)"
            '---------------------------------------
            'Lança na variável a Id do pedido gerado
            '---------------------------------------
            lngPedido = DMax("ID_Pedido", "tblPedido")
            '----------------------------------------------------------------------------------------------------------------------
            'Atualiza o campo do ítem na tblOrcamentoDet para colocar no campo Pedido_Seq o número do pedido a qual o item pertence
            '----------------------------------------------------------------------------------------------------------------------
            CurrentDb.Execute "UPDATE tblOrcamentoDet SET Pedido_Seq = '" & NumeroEncontrado & "'," _
                            & "Pedido_ID = " & lngPedido & " WHERE Selecionado=-1 And Lancado = 0 And Orcamento_ID =" & Me.ID_Orcamento & ""
            '-------------------------------------------------------------------------------------------------
            'Atualiza o campo Lancado na tblOrcamentoDet para que no próximo pedido o mesmo não seja computado
            '-------------------------------------------------------------------------------------------------
            CurrentDb.Execute "UPDATE tblOrcamentoDet SET Lancado = -1 WHERE Selecionado=-1 And Orcamento_ID =" & Me.ID_Orcamento & ""
       
        Else
            'se já existir numeração na tabela, acrescenta +1
            ProximoNumero = Right(Nz(DMax("Pedido_Seq", "tblOrcamentoDet", "Orcamento_ID = " & Me.ID_Orcamento.Value), 0), 3) + 1
            'devolve ao campo a nova numeração
            NumeroGerado = Me.ID_Orcamento & "-" & Format(ProximoNumero, "000")
            '--------------------------------------------------------------------------------------------------------
            'Insere o pedido na tabela tblPedido, como a tabela é relacionada à tabela tblOrcamento, não é necessário
            'inserir os dados do cliente, pois o formulário frmPedido é baseado em uma consulta de ambas as tabelas
            '--------------------------------------------------------------------------------------------------------
            CurrentDb.Execute "INSERT INTO tblPedido (Orcamento_ID, CpData) Values (""" & Me.ID_Orcamento & """, #" & Date & "#)"
            '---------------------------------------
            'Lança na variável a Id do pedido gerado
            '---------------------------------------
            lngPedido = DMax("ID_Pedido", "tblPedido")
            '----------------------------------------------------------------------------------------------------------------------
            'Atualiza o campo do ítem na tblOrcamentoDet para colocar no campo Pedido_Seq o número do pedido a qual o item pertence
            '----------------------------------------------------------------------------------------------------------------------
            CurrentDb.Execute "UPDATE tblOrcamentoDet SET Pedido_Seq = '" & NumeroGerado & "'," _
                            & "Pedido_ID = " & lngPedido & " WHERE Selecionado=-1 And Lancado = 0 And Orcamento_ID =" & Me.ID_Orcamento & ""
            '-------------------------------------------------------------------------------------------------
            'Atualiza o campo Lancado na tblOrcamentoDet para que no próximo pedido o mesmo não seja computado
            '-------------------------------------------------------------------------------------------------
            CurrentDb.Execute "UPDATE tblOrcamentoDet SET Lancado = -1 WHERE Selecionado=-1 And Orcamento_ID =" & Me.ID_Orcamento & ""
        End If
    '----------------------------------
    'Atualiza os dados do subformulário
    '----------------------------------
    Me.SubfrmOrcamento.Requery

    Dim msg As String
        msg = MsgBox("Abrir o pedido para visualização?", vbYesNo + vbQuestion, "ABRIR PEDIDO")
        Select Case msg
            Case vbYes
                DoCmd.OpenForm "frmPedido", , , "ID_Pedido = " & lngPedido & ""
            Case vbNo
        End Select
       
    End Sub



    Cumprimentos.
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Cláudio Machado 19/11/2013, 00:22

    Perfeito !
    Obrigado Piloto, vou terminar a análise e qualquer coisa volto a te falar.
    Valeu mesmo.


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Codigo cobrindo dados existentes. 90dssg para agradecer a dica que solucionou seu problema.
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Cláudio Machado 19/11/2013, 00:26

    Só mais uma coisa.
    Como faço pra passar o número do campo "Pedido_Seq" para a "tblPedido" no mesmo pedido gerado?
    Sou meio fraco em Consultas VBA. (rs..)
    Obrigado.


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Codigo cobrindo dados existentes. 90dssg para agradecer a dica que solucionou seu problema.
    avatar
    Convidado
    Convidado


    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Convidado 19/11/2013, 00:33

    De mais detalhes...

    Cumprimentos.
    Cláudio Machado
    Cláudio Machado
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1636
    Registrado : 17/03/2011

    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Cláudio Machado 19/11/2013, 00:39

    Como vou trabalhar sempre com os números de pedidos gerados no campo "Pedido_Seq", gostaria de levar este numero para a tblPedido no mesmo registro, tipo:

    Pedido_Seq = 2-001 na tblOrcamentoDet
    Num_Pedido_Personal = 2-001 na tblPedido

    +/- Isso.

    Obrigado


    .................................................................................
    " Nunca cruze os braços diante de qualquer problema ou dificuldade, pois o maior homem do mundo Jesus,  morreu de braços abertos."

    Agradeça e feche o tópico clicando no botão Resolvido. Se não sabe como, veja  AQUI.
    Não esqueça de clicar no Joinha [Resolvido]Codigo cobrindo dados existentes. 90dssg para agradecer a dica que solucionou seu problema.

    Conteúdo patrocinado


    [Resolvido]Codigo cobrindo dados existentes. Empty Re: [Resolvido]Codigo cobrindo dados existentes.

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 15/5/2024, 06:36