Ir para conteúdo
Fórum Script Brasil
  • 0

manipulando dados de tabela via codigo


brunocasado

Pergunta

bom galera estou desenvolvendo uma rotina mas esta meio precaria... (porem funciona)

é rotina de checagem de produtos. se houver no estoque ele não cria numeros de series se existir ele pega o numero de serie já existente e copia para a tabela de pedido... enfim.

estou fazendo tudo isso com fors e ifs... inclusive estou manipulando os dados abrindo os formularios em modo hidden e movimentando neles e usando sql...

agora quero me aprofundar mais nessa parte de manipular dados: (ADO creio eu)

por exemplo usando um with e andando pelos registros via codigo. gostaria de saber qual melhor maneira de se trabalhar assim, e se voces tem alguma apostila sobre isso. sei que o mrmalj já me passou inclusive um post que fala disso mas gostaria de saber detalhes....

so pra vocês terem ideia do que estou falando (do que eu fiz)

Dim stDocName As String
DoCmd.SetWarnings False
Dim procura1, procura2, procuraqdade1, procuraqdade2
DoCmd.OpenForm "ordem_fabricaçao", acNormal
procura1 = DLookup("[codprod]", "procurastock")
procura2 = DLookup("[codprod]", "procurapi")

procuraqdade1 = DLookup("[qdade]", "procurastock")
procuraqdade2 = DLookup("[qdade]", "procurapi", pi = Me.pi)
Dim contador, Ultimo, contA, comeso, strSERIE
Ultimo = 0
contA = DLookup("[contar]", "contaregistropedidos", Me.pi = pi)
If procura1 = procura2 Then 'se conter no stock então....
procuraqdade1 = Nz(DLookup("[qdade]", "procurastock", CODPROD = [Forms]![ordem_fabricaçao]!CODPROD), 0) 'procura stock
procuraqdade2 = Nz(DLookup("[qdade]", "procurapi", CODPROD = [Forms]![ordem_fabricaçao]!CODPROD), 0) 'conta qdade de pedido
For inicio = 1 To contA 'aqui comesa looping

If procuraqdade2 < procuraqdade1 Then 'se a quantidade do pedido for maior que do stock então
Dim procuraqdade3, procuraqdade4
procuraqdade3 = Nz(DLookup("[qdade]", "procurastock", CODPROD = [Forms]![ordem_fabricaçao]![CODPROD]), 0)
procuraqdade4 = Nz(DLookup("[qdade]", "procurapi", CODPROD = [Forms]![ordem_fabricaçao]![CODPROD]), 0)
procura2 = DLookup("[codprod]", "procurapi", CODPROD = [Forms]![ordem_fabricaçao]![CODPROD])

Dim subtracao As Variant
subtracao = procuraqdade4 - procuraqdade3 'calcula o restante de maquinas a fabricar
If subtracao = 0 Then 'se o numero for = 0 ou maior significa que ah disponibilidade no stock
DoCmd.GoToRecord , "ordem_fabricaçao", acNext
Else
[Forms]![pedidos_pendentes]![qdade] = subtracao
'[Forms]![pedidos_pendentes]![codprod].Value = procura2
DoCmd.OpenQuery "restante_OF", acViewNormal
For contador = 1 To subtracao
DoCmd.OpenForm "nseries", acNormal
[Forms]![nseries]![forma].Value = (Nz(DLookup("[MaiorNr]", "GeraNSERIE"), 0) + 1)
[Forms]![nseries]![nserie].Value = [Forms]![ordem_fabricaçao]![CODPROD] & Format([Forms]![nseries]![forma], "0000")
[Forms]![nseries]![pi].Value = [Forms]![ordem_fabricaçao]![pi].Value
[Forms]![nseries]![norc].Value = [Forms]![ordem_fabricaçao]![ncotacao].Value
[Forms]![nseries]![CODPROD].Value = [Forms]![ordem_fabricaçao]![CODPROD]
strSERIE = strSERIE & [Forms]![nseries]![nserie] & " "
Me.junta = strSERIE

DoCmd.GoToRecord , "nseries", acNewRec
Ultimo = Ultimo + 1
If contador = subtracao Then
DoCmd.OpenQuery "atualizaseries", acViewNormal
strSERIE = Null
End If

Next contador
DoCmd.GoToRecord , "ordem_fabricaçao", acNext

'stDocNamee = "aprovaPI"
    'DoCmd.OpenQuery stDocNamee, acNormal, acEdit
If inicio = contA Then
DoCmd.Close acForm, "ordem_fabricaçao"
DoCmd.Close acForm, "nseries", acSaveYes
End If
End If
Else
DoCmd.GoToRecord , "ordem_fabricaçao", acNext
End If
Next inicio

Else
For inicio = 1 To contA
If procura1 = procura2 Then
If procuraqdade2 < procuraqdade1 Then
procuraqdade3 = Nz(DLookup("[qdade]", "procurastock", CODPROD = [Forms]![ordem_fabricaçao]![CODPROD]), 0)
procuraqdade4 = Nz(DLookup("[qdade]", "procurapi", CODPROD = [Forms]![ordem_fabricaçao]![CODPROD]), 0)
procura2 = DLookup("[codprod]", "procurapi", CODPROD = [Forms]![ordem_fabricaçao]![CODPROD])

subtracao = procuraqdade4 - procuraqdade3
If subtracao = 0 Then
DoCmd.GoToRecord , "ordem_fabricaçao", acNext
Else
[Forms]![pedidos_pendentes]![qdade] = subtracao
'[Forms]![pedidos_pendentes]![codprod].Value = procura2
DoCmd.OpenQuery "restante_OF", acViewNormal
DoCmd.GoToRecord , "ordem_fabricaçao", acNext

'stDocNamee = "aprovaPI"
    'DoCmd.OpenQuery stDocNamee, acNormal, acEdit
If inicio = contA Then
DoCmd.Close acForm, "ordem_fabricaçao"
DoCmd.Close acForm, "nseries", acSaveYes
End If
End If
Else
DoCmd.GoToRecord , "ordem_fabricaçao", acNext
End If
Else
procuraqdade3 = Nz(DLookup("[qdade]", "procurastock", CODPROD = [Forms]![ordem_fabricaçao]![CODPROD]), 0)
procuraqdade4 = Nz(DLookup("[qdade]", "procurapi", CODPROD = [Forms]![ordem_fabricaçao]![CODPROD]), 0)
subtracao = procuraqdade4 - procuraqdade3
[Forms]![pedidos_pendentes]![qdade] = subtracao
DoCmd.OpenQuery "restante_OF", acViewNormal
For contador = 1 To subtracao
DoCmd.OpenForm "nseries", acNormal
[Forms]![nseries]![forma].Value = (Nz(DLookup("[MaiorNr]", "GeraNSERIE"), 0) + 1)
[Forms]![nseries]![nserie].Value = [Forms]![ordem_fabricaçao]![CODPROD] & Format([Forms]![nseries]![forma], "0000")
[Forms]![nseries]![pi].Value = [Forms]![ordem_fabricaçao]![pi].Value
[Forms]![nseries]![norc].Value = [Forms]![ordem_fabricaçao]![ncotacao].Value
[Forms]![nseries]![CODPROD].Value = [Forms]![ordem_fabricaçao]![CODPROD]
strSERIE = strSERIE & [Forms]![nseries]![nserie] & " "
Me.junta = strSERIE

DoCmd.GoToRecord , , acNewRec
Ultimo = Ultimo + 1
If contador = subtracao Then
DoCmd.OpenQuery "atualizaseries", acViewNormal
strSERIE = Null
End If
If inicio = contA Then
DoCmd.Close acForm, "ordem_fabricaçao"
DoCmd.Close acForm, "nseries", acSaveYes
End If
Next contador


DoCmd.GoToRecord , "ordem_fabricaçao", acNext



End If
Next inicio
'------------------------------------------------------------
End If

Editado por brunocasado
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...