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
Pergunta
brunocasado
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)
Editado por brunocasadoLink para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.