MSG NOVAMENTE
Com a ajuda do ALVAROVB2009 e do Marcelo, consegui resolver quase todo o problema em um tópico anterior, só falta um pouco para encerrar esse codigo e o problema esta nesse primeiro bloco. Esse codigo só deve entrar em ação se o campo Dados.FlagReq para todos os itens do documento for igual a (Requisitado), tentei ContaReq > 1 e ContaReq >= 1 e nada. Não estou sabendo como percorrer o campo. Agradeço se alguem puder ajudar.
Set BuscaReq = New ADODB.Recordset
If BuscaReq.State = 1 Then BuscaReq.Close
BuscaReq.Open [Ô]SELECT LMnr.LM_1,Dados.Dispositivo,Dados.Codigo,Dados.LM_1,Dados.FlagReq FROM LMnr, Dados WHERE (LMnr.LM_1 = [ô][Ô] & Procura & [Ô][ô] And Dados.LM_1 = [ô][Ô] & Procura & [Ô][ô])and Dados.FlagReq = [ô]Requisitado[ô][Ô], ConexaoLM, adOpenKeyset, adLockPessimistic
ContaReq = 0
Do While Not BuscaReq.EOF
ContaReq = ContaReq + 1
BuscaReq.MoveNext
Loop
If ContaReq > 1 Then
MsgBox [Ô]Todo material de estoque dessa LM já foi requisitado.[Ô], vbCritical, [Ô]Erro de pesquisa[Ô]
Exit Sub
End If
BuscaReq.Close
Set BuscaReq = Nothing
Aqui o código completo:
Private Sub CmdBuscar_Click()
LimpaTudo
Dim Conta As Integer
Dim ContaReq As Integer
Dim Procura As String
Dim LM_BuscaGerados As Recordset
Dim BuscaInexistente As Recordset
Dim BuscaReq As Recordset
Procura = TxtBuscaLM.text
NR_Copia = TxtBuscaLM.text
Set BuscaReq = New ADODB.Recordset
If BuscaReq.State = 1 Then BuscaReq.Close
BuscaReq.Open [Ô]SELECT LMnr.LM_1,Dados.Dispositivo,Dados.Codigo,Dados.LM_1,Dados.FlagReq FROM LMnr, Dados WHERE (LMnr.LM_1 = [ô][Ô] & Procura & [Ô][ô] And Dados.LM_1 = [ô][Ô] & Procura & [Ô][ô])and Dados.FlagReq = [ô]Requisitado[ô][Ô], ConexaoLM, adOpenKeyset, adLockPessimistic
ContaReq = 0
Do While Not BuscaReq.EOF
ContaReq = ContaReq + 1
BuscaReq.MoveNext
Loop
If ContaReq > 1 Then
MsgBox [Ô]Todo material de estoque dessa LM já foi requisitado.[Ô], vbCritical, [Ô]Erro de pesquisa[Ô]
Exit Sub
End If
BuscaReq.Close
Set BuscaReq = Nothing
Set BuscaInexistente = New ADODB.Recordset
If BuscaInexistente.State = 1 Then BuscaInexistente.Close
BuscaInexistente.Open [Ô]SELECT LMnr.LM_1,Dados.Dispositivo,Dados.Codigo,Dados.LM_1,Dados.FlagReq AS Flag FROM LMnr,Dados WHERE LMnr.LM_1 = Dados.LM_1 And Dados.LM_1 = [ô][Ô] & Procura & [Ô][ô][Ô], ConexaoLM, adOpenKeyset, adLockPessimistic
If BuscaInexistente.RecordCount = 0 Then
MsgBox [Ô]Lista de Material não cadastrada![Ô], vbCritical, [Ô]Erro de pesquisa[Ô]
Exit Sub
Else
Do While Not BuscaInexistente.EOF
If BuscaInexistente!Dispositivo = [Ô][Ô] Or BuscaInexistente!Dispositivo = [Ô]103[Ô] Or BuscaInexistente!Dispositivo = [Ô]203[Ô] Or BuscaInexistente!Dispositivo = [Ô]000[Ô] Then
MsgBox [Ô]Não existe nesta Lista de Material item de estoque![Ô], vbCritical, [Ô]Erro de pesquisa[Ô]
Exit Sub
ElseIf IsNull(BuscaInexistente!Flag) Then
MsgBox [Ô]Lista de Material ainda não foi baixada. é necessário efetuar a baixa dos itens para gerar a requisição![Ô], vbCritical, [Ô]Erro de pesquisa[Ô]
Exit Sub
End If
BuscaInexistente.MoveNext
Loop
End If
BuscaInexistente.Close
Set BuscaInexistente = Nothing
Set LM_Busca = New ADODB.Recordset
If LM_Busca.State = 1 Then LM_Busca.Close
LM_Busca.Open [Ô]SELECT LMnr.LM_1,Dados.Dispositivo,Dados.Codigo,Dados.LM_1,Dados.FlagReq FROM LMnr, Dados WHERE (LMnr.LM_1 = [ô][Ô] & Procura & [Ô][ô] And Dados.LM_1 = [ô][Ô] & Procura & [Ô][ô]) and Dados.Codigo = [ô][ô] and Dados.FlagReq = [ô]Pendente[ô][Ô], ConexaoLM, adOpenKeyset, adLockPessimistic
Conta = 0
Do While Not LM_Busca.EOF
Conta = Conta + 1
LM_Busca.MoveNext
Loop
If Conta >= 1 Then
MsgBox [Ô]Atenção!! Exitem ainda[Ô] & [Ô] [Ô] & Conta & [Ô] items pendentes para baixa nesta Lista de Material.[Ô], vbInformation, [Ô]Informação da Lista[Ô]
End If
LM_Busca.Close
Set LM_Busca = Nothing
Set LM_BuscaGerados = New ADODB.Recordset
If LM_BuscaGerados.State = 1 Then LM_BuscaGerados.Close
LM_BuscaGerados.Open [Ô]SELECT LMnr.LM_1,Dados.Dispositivo,Dados.Codigo,Dados.LM_1,Dados.FlagReq FROM LMnr,Dados WHERE (LMnr.LM_1 = [ô][Ô] & Procura & [Ô][ô] And Dados.LM_1 = [ô][Ô] & Procura & [Ô][ô]) and Dados.Codigo <> null and Dados.FlagReq = [ô]Gerado[ô][Ô], ConexaoLM, adOpenKeyset, adLockPessimistic
Do While Not LM_BuscaGerados.EOF
CarregaCabecalho
CarregaDados
LM_BuscaGerados.MoveNext
Loop
LM_BuscaGerados.Close
Set LM_BuscaGerados = Nothing
End Sub
Set BuscaReq = New ADODB.Recordset
If BuscaReq.State = 1 Then BuscaReq.Close
BuscaReq.Open [Ô]SELECT LMnr.LM_1,Dados.Dispositivo,Dados.Codigo,Dados.LM_1,Dados.FlagReq FROM LMnr, Dados WHERE (LMnr.LM_1 = [ô][Ô] & Procura & [Ô][ô] And Dados.LM_1 = [ô][Ô] & Procura & [Ô][ô])and Dados.FlagReq = [ô]Requisitado[ô][Ô], ConexaoLM, adOpenKeyset, adLockPessimistic
ContaReq = 0
Do While Not BuscaReq.EOF
ContaReq = ContaReq + 1
BuscaReq.MoveNext
Loop
If ContaReq > 1 Then
MsgBox [Ô]Todo material de estoque dessa LM já foi requisitado.[Ô], vbCritical, [Ô]Erro de pesquisa[Ô]
Exit Sub
End If
BuscaReq.Close
Set BuscaReq = Nothing
Aqui o código completo:
Private Sub CmdBuscar_Click()
LimpaTudo
Dim Conta As Integer
Dim ContaReq As Integer
Dim Procura As String
Dim LM_BuscaGerados As Recordset
Dim BuscaInexistente As Recordset
Dim BuscaReq As Recordset
Procura = TxtBuscaLM.text
NR_Copia = TxtBuscaLM.text
Set BuscaReq = New ADODB.Recordset
If BuscaReq.State = 1 Then BuscaReq.Close
BuscaReq.Open [Ô]SELECT LMnr.LM_1,Dados.Dispositivo,Dados.Codigo,Dados.LM_1,Dados.FlagReq FROM LMnr, Dados WHERE (LMnr.LM_1 = [ô][Ô] & Procura & [Ô][ô] And Dados.LM_1 = [ô][Ô] & Procura & [Ô][ô])and Dados.FlagReq = [ô]Requisitado[ô][Ô], ConexaoLM, adOpenKeyset, adLockPessimistic
ContaReq = 0
Do While Not BuscaReq.EOF
ContaReq = ContaReq + 1
BuscaReq.MoveNext
Loop
If ContaReq > 1 Then
MsgBox [Ô]Todo material de estoque dessa LM já foi requisitado.[Ô], vbCritical, [Ô]Erro de pesquisa[Ô]
Exit Sub
End If
BuscaReq.Close
Set BuscaReq = Nothing
Set BuscaInexistente = New ADODB.Recordset
If BuscaInexistente.State = 1 Then BuscaInexistente.Close
BuscaInexistente.Open [Ô]SELECT LMnr.LM_1,Dados.Dispositivo,Dados.Codigo,Dados.LM_1,Dados.FlagReq AS Flag FROM LMnr,Dados WHERE LMnr.LM_1 = Dados.LM_1 And Dados.LM_1 = [ô][Ô] & Procura & [Ô][ô][Ô], ConexaoLM, adOpenKeyset, adLockPessimistic
If BuscaInexistente.RecordCount = 0 Then
MsgBox [Ô]Lista de Material não cadastrada![Ô], vbCritical, [Ô]Erro de pesquisa[Ô]
Exit Sub
Else
Do While Not BuscaInexistente.EOF
If BuscaInexistente!Dispositivo = [Ô][Ô] Or BuscaInexistente!Dispositivo = [Ô]103[Ô] Or BuscaInexistente!Dispositivo = [Ô]203[Ô] Or BuscaInexistente!Dispositivo = [Ô]000[Ô] Then
MsgBox [Ô]Não existe nesta Lista de Material item de estoque![Ô], vbCritical, [Ô]Erro de pesquisa[Ô]
Exit Sub
ElseIf IsNull(BuscaInexistente!Flag) Then
MsgBox [Ô]Lista de Material ainda não foi baixada. é necessário efetuar a baixa dos itens para gerar a requisição![Ô], vbCritical, [Ô]Erro de pesquisa[Ô]
Exit Sub
End If
BuscaInexistente.MoveNext
Loop
End If
BuscaInexistente.Close
Set BuscaInexistente = Nothing
Set LM_Busca = New ADODB.Recordset
If LM_Busca.State = 1 Then LM_Busca.Close
LM_Busca.Open [Ô]SELECT LMnr.LM_1,Dados.Dispositivo,Dados.Codigo,Dados.LM_1,Dados.FlagReq FROM LMnr, Dados WHERE (LMnr.LM_1 = [ô][Ô] & Procura & [Ô][ô] And Dados.LM_1 = [ô][Ô] & Procura & [Ô][ô]) and Dados.Codigo = [ô][ô] and Dados.FlagReq = [ô]Pendente[ô][Ô], ConexaoLM, adOpenKeyset, adLockPessimistic
Conta = 0
Do While Not LM_Busca.EOF
Conta = Conta + 1
LM_Busca.MoveNext
Loop
If Conta >= 1 Then
MsgBox [Ô]Atenção!! Exitem ainda[Ô] & [Ô] [Ô] & Conta & [Ô] items pendentes para baixa nesta Lista de Material.[Ô], vbInformation, [Ô]Informação da Lista[Ô]
End If
LM_Busca.Close
Set LM_Busca = Nothing
Set LM_BuscaGerados = New ADODB.Recordset
If LM_BuscaGerados.State = 1 Then LM_BuscaGerados.Close
LM_BuscaGerados.Open [Ô]SELECT LMnr.LM_1,Dados.Dispositivo,Dados.Codigo,Dados.LM_1,Dados.FlagReq FROM LMnr,Dados WHERE (LMnr.LM_1 = [ô][Ô] & Procura & [Ô][ô] And Dados.LM_1 = [ô][Ô] & Procura & [Ô][ô]) and Dados.Codigo <> null and Dados.FlagReq = [ô]Gerado[ô][Ô], ConexaoLM, adOpenKeyset, adLockPessimistic
Do While Not LM_BuscaGerados.EOF
CarregaCabecalho
CarregaDados
LM_BuscaGerados.MoveNext
Loop
LM_BuscaGerados.Close
Set LM_BuscaGerados = Nothing
End Sub
veja se a query esta retornando algum dado
pois se nao o do while nao ira fazer a soma de ContaReq
veja
pois se nao o do while nao ira fazer a soma de ContaReq
veja
BuscaReq.Open [Ô]SELECT LMnr.LM_1,Dados.Dispositivo,Dados.Codigo,Dados.LM_1,Dados.FlagReq FROM LMnr, Dados WHERE (LMnr.LM_1 = [ô][Ô] & Procura & [Ô][ô] And Dados.LM_1 = [ô][Ô] & Procura & [Ô][ô])and Dados.FlagReq = [ô]Requisitado[ô][Ô], ConexaoLM, adOpenKeyset, adLockPessimistic
ContaReq = 0
Do While Not BuscaReq.EOF
ContaReq = ContaReq + 1
msgbox BuscaReq!LM_1 'coloque esta linha pra ver se ela esta retornando dados da consulta
BuscaReq.MoveNext
Loop
Sim esta retornando. Marcelo estou anexando o banco, veja bem o documento 6212 tem tres items, o campo FlagReq da tabela Dados esta assim:
Gerado
Requisitado
Requisitado
para esse caso ignora a msg. Agora se estiver assim:
Requisitado
Requisitado
Requisitado
ai sim aciona a Msg.
Gerado
Requisitado
Requisitado
para esse caso ignora a msg. Agora se estiver assim:
Requisitado
Requisitado
Requisitado
ai sim aciona a Msg.
Esse é o exemplo do projeto, para testar use o número 6132 para o botão (Buscar). Do jeito que esta na tabela não era para dar a msg dessa linha:
If ContaReq > 1 Then
MsgBox [Ô]Todo material de estoque dessa LM já foi requisitado.[Ô], vbCritical, [Ô]Erro de pesquisa[Ô]
Exit Sub
End If
A Msg só deve aparecer se todos os campos da tabela Dados campo FlagReq estiver com (Requisitado)
If ContaReq > 1 Then
MsgBox [Ô]Todo material de estoque dessa LM já foi requisitado.[Ô], vbCritical, [Ô]Erro de pesquisa[Ô]
Exit Sub
End If
A Msg só deve aparecer se todos os campos da tabela Dados campo FlagReq estiver com (Requisitado)
BuscaReq.Open [Ô]SELECT count(LMnr.LM_1) as ENCONTRADOS FROM LMnr, Dados WHERE (LMnr.LM_1 = [ô][Ô] & Procura & [Ô][ô] And Dados.LM_1 = [ô][Ô] & Procura & [Ô][ô]) and Dados.FlagReq = [ô]Requisitado[ô][Ô], ConexaoLM, adOpenKeyset, adLockPessimistic
If BuscaReq!ENCONTRADOS > 0 Then
MsgBox [Ô]Todo material de estoque dessa LM já foi requisitado.[Ô], vbCritical, [Ô]Erro de pesquisa[Ô]
Exit Sub
End If
BuscaReq.Close
ou
Set BuscaReq = New ADODB.Recordset
If BuscaReq.State = 1 Then BuscaReq.Close
BuscaReq.Open [Ô]SELECT LMnr.LM_1,Dados.Dispositivo,Dados.Codigo,Dados.LM_1,Dados.FlagReq FROM LMnr, Dados WHERE (LMnr.LM_1 = [ô][Ô] & Procura & [Ô][ô] And Dados.LM_1 = [ô][Ô] & Procura & [Ô][ô])and Dados.FlagReq = [ô]Requisitado[ô][Ô], ConexaoLM, adOpenKeyset, adLockPessimistic
If BuscaReq.EOF = false Then
MsgBox [Ô]Todo material de estoque dessa LM já foi requisitado.[Ô], vbCritical, [Ô]Erro de pesquisa[Ô]
Exit Sub
End If
BuscaReq.Close
Set BuscaReq = Nothing
Edermir, é quase isso só que com sua sugestão a Msg esta aparecendo não era para aparecer pois o campo FlagReq esta assim:
Gerado
Requisitado
Requisitado
nesse caso não era para dar a Msg.
se o campo FlagReq estiver assim:
Requisitado
Requisitado
Requisitado
ai sim da a Msg
Gerado
Requisitado
Requisitado
nesse caso não era para dar a Msg.
se o campo FlagReq estiver assim:
Requisitado
Requisitado
Requisitado
ai sim da a Msg
Com uma pequena alteração no select:
BuscaReq.Open [Ô]SELECT count(LMnr.LM_1) as ENCONTRADOS FROM LMnr, Dados WHERE (LMnr.LM_1 = [ô][Ô] & Procura & [Ô][ô] And Dados.LM_1 = [ô][Ô] & Procura & [Ô][ô]) and Dados.FlagReq <> [ô]Requisitado[ô][Ô], ConexaoLM, adOpenKeyset, adLockPessimistic
If BuscaReq!ENCONTRADOS = 0 Then
MsgBox [Ô]Todo material de estoque dessa LM já foi requisitado.[Ô], vbCritical, [Ô]Erro de pesquisa[Ô]
Exit Sub
End If
BuscaReq.Close
Na mosca Edermir!!!! Vc resolveu meu problema, brigadão mesmo.
Tópico encerrado , respostas não são mais permitidas