MSG NOVAMENTE

IRENKO 07/11/2009 11:05:14
#327133
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
MARCELO.TREZE 07/11/2009 14:59:02
#327140
veja se a query esta retornando algum dado

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
IRENKO 09/11/2009 08:30:59
#327197
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.
IRENKO 09/11/2009 08:55:33
#327200
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)
EDERMIR 09/11/2009 10:04:01
#327209
Resposta escolhida
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
IRENKO 09/11/2009 10:31:02
#327217
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
EDERMIR 09/11/2009 12:32:00
#327233
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
IRENKO 09/11/2009 13:13:11
#327240
Na mosca Edermir!!!! Vc resolveu meu problema, brigadão mesmo.
Tópico encerrado , respostas não são mais permitidas