MSG - DE NOVO

IRENKO 10/11/2009 17:43:36
#327380
Lá vai eu de novo com esse código maluco. Desculpe-me pessoal mas eu tenho que chegar lá.

O Edermir resolveu praticamente, mas fui colocar para rodar e pintou outro problema. Veja a parte em negrito é o seguinte: a query pede se o campo Dados.FlagReq <> [ô]Requisitado[ô], mas se for assim ele vai pegar vazio tambem ai não carrega a msg em vermelho. Alguem tem uma ideia de como resolver isso? O arquivo exemplo esta postado no meu tópico (MSG NOVAMENTE) para quem quizer analizar. Obrigado.



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
Dim X
Set BuscaReq = New ADODB.Recordset
BuscaReq.Open [Ô]SELECT count(LMnr.LM_1) as ENCONTRADOS FROM LMnr, Dados WHERE (LMnr.LM_1 = [ô][Ô] & Procura & [Ô][ô] And Dados.LM_1 = [ô][Ô] & Procura & [Ô][ô]) and (Dados.Dispositivo=[ô]003[ô] 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
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
[txt-color=#FF0000]If 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[/txt-color]
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
HUGOSSOUZA 10/11/2009 18:36:49
#327390
Eu não entendi sua duvida IRENKO.
O valor da Dados.FlagReq tem que ser diferente de [ô]Requisitado[ô] e não pode ser nulo tambem?
Qual o banco de dados?

Ex.:
(Dados.Dispositivo=[ô]003[ô] and (Dados.FlagReq <> [ô]Requisitado[ô] or Dados.FlagReq is null) )
EDERMIR 10/11/2009 21:11:36
#327401
Resposta escolhida
Já mandei minha sugestão na resposta de sua MP.

Alterar:
and Dados.FlagReq <> [ô]Requisitado[ô] and and Dados.FlagReq <> [ô] [ô]

para:
and Dados.FlagReq <> [ô]Requisitado[ô] and and Dados.FlagReq <> [ô][ô]

IRENKO 11/11/2009 07:55:28
#327414
Seguinte, se eu coloco assim:

[Ô]SELECT count(LMnr.LM_1) as ENCONTRADOS FROM LMnr, Dados WHERE (LMnr.LM_1 = [ô][Ô] & Procura & [Ô][ô] And Dados.LM_1 = [ô][Ô] & Procura & [Ô][ô]) and Dados.FlagReq <> [ô]Requisitado[ô] and Dados.FlagReq is null[Ô]

pega a msg:

MsgBox [Ô]Todo material de estoque dessa LM já foi requisitado.[Ô], vbCritical, [Ô]Erro de pesquisa[Ô]

deveria pegar a msg:

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[Ô]

Se eu coloco assim:

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 is null[Ô], ConexaoLM, adOpenKeyset, adLockPessimistic

Pega a msg:

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[Ô]

mas a intenção e pesquisar se é nulo e diferente de Requisitado. o Banco é access.

Edermir, a sua sugestão não funcionou.

No exemplo use o código para busca nº 6132
EDERMIR 11/11/2009 09:32:45
#327422
Altere assim:

Wfrase = [Ô]SELECT count(LMnr.LM_1) as ENCONTRADOS FROM LMnr,Dados WHERE LMnr.LM_1 = [ô][Ô] & Procura & [Ô][ô] And (Dados.LM_1 = LMnr.LM_1 and Dados.Dispositivo=[ô]003[ô] and (Dados.FlagReq is null or Dados.FlagReq <> [ô]Requisitado[ô]))[Ô]
BuscaReq.Open Wfrase, ConexaoLM, adOpenKeyset, adLockPessimistic

e para

Wfrase = [Ô]SELECT count(LMnr.LM_1) as ENCONTRADOS FROM LMnr,Dados WHERE LMnr.LM_1 = [ô][Ô] & Procura & [Ô][ô] And (Dados.LM_1 = LMnr.LM_1 and Dados.Dispositivo=[ô]003[ô] and (Dados.FlagReq is null))[Ô]
BuscaReq.Open Wfrase, ConexaoLM, adOpenKeyset, adLockPessimistic
IRENKO 11/11/2009 10:17:57
#327425
Edermir, depois de testado sua sugestão.....

Deu certo cara!!! Testei todas as situações e seu código atendeu corretamente. A principio esta funcionando de acordo, vou fazer mais testes e logo encerro o tópico, espero que definitivamente. Obrigado mais uma vez!
EDERMIR 11/11/2009 10:47:17
#327428
Apenas um adendo.

Seu código não estava com as situações apresentadas por você. Aparentemente você esqueceu dde salvar e não posso mostrar onde estava seu erro.
Tópico encerrado , respostas não são mais permitidas