COMO FAZER ISSO SEM UM MONTE DE IF

DANIKULL 13/02/2010 11:56:16
#334334
Você checou se nestya procedure

Call ABRIR_BD_SEM_DATA1


não apaga a variável TIPO_STATUS??
WEBIER 13/02/2010 11:58:30
#334335
Apaga nao!

Sub ABRIR_BD_SEM_DATA1()
Set AreaTrabalho = DBEngine.Workspaces(0)
Set BD = AreaTrabalho.OpenDatabase(App.Path & [Ô]\cyberbase.mdb[Ô], False, False)
End Sub
DANIKULL 13/02/2010 12:07:29
#334337
Não consigo entender o porque que não deu certo, pois a variável TIPO_STATUS está como publica. Detalhe, se num um checkbox for prenchido, a variável será nula, ou seja, sem valor....
WEBIER 13/02/2010 12:18:54
#334339
esse check sao objetos indivuduais... ou seja... nao nao num array nao!

pode ser isso?
DANIKULL 13/02/2010 12:21:43
#334340
Você pode postar o parte do projeto aqui pra eu dar uma olhada??
Pode ser so o Form que está os CheckBox e os módulos.
WEBIER 13/02/2010 12:24:26
#334341
coloquei ele em anexo ai
DANIKULL 13/02/2010 12:31:07
#334343
WEBIER, achei o erro........

O form Ordem_Servicos_Consulta, va no General declarations e comente a seguinte linha:

Dim TIPO_STATUS As String


Está linha estava em conflito com a declarada no módulo, esvaziando a variável carregada no módulo. ok??
WEBIER 13/02/2010 13:45:05
#334350
agora ele funcionou.... mas somente com um criterio por vez, ou seja, se eu marcar chkExecucao ele mostra, se eu marcar mais 1 check ele nao mostra nenhum dos 2...

Queria que ele mostrasse depedendo do q tah selecionado... se for 1, 2, 3 ou 4 criterios para o mesmo campo(OS.STATUS )..

exemplo
if chkExecucao. value = 1 then
OS.STATUS = [ô]EM EXECUÇÃO[ô]
elseif chkExecucao. value = 1 and chkAguardando.Value = 1 then
OS.STATUS = [ô]EM EXECUÇÃO[ô] and OS.STATUS = [ô]AGUARDANDO[ô]

e assim sucessivamente....
DANIKULL 13/02/2010 14:23:00
#334353
WEBIER, boa tarde....

Agora eu ja entendi o que você qeuer, no critério tem que ser usado OR ao invés de AND, quando for usado mais de uma opção. Calma ai que posto o acerto, ok??
DANIKULL 13/02/2010 14:53:18
#334356
Citação:

:
agora ele funcionou.... mas somente com um criterio por vez, ou seja, se eu marcar chkExecucao ele mostra, se eu marcar mais 1 check ele nao mostra nenhum dos 2...

Queria que ele mostrasse depedendo do q tah selecionado... se for 1, 2, 3 ou 4 criterios para o mesmo campo(OS.STATUS )..

exemplo
if chkExecucao. value = 1 then
OS.STATUS = [ô]EM EXECUÇÃO[ô]
elseif chkExecucao. value = 1 and chkAguardando.Value = 1 then
OS.STATUS = [ô]EM EXECUÇÃO[ô] and OS.STATUS = [ô]AGUARDANDO[ô]

e assim sucessivamente....



Boa tarde, carra.

Acho que agora consegui chegar onde você quer, de uma olhada ai e veja se é isto.

Solução:

Como mencionado acima o uso do AND faz a consultar buscar um resultado que tenha duas condições, agora o uso do OR, faz com que a consulta busca dois resultados ou mais que esteja dentro do criterio, ou seja que possua ou criterio A ou criterio B. No seu sistema ficou assim:

Variaveis:

Private Criteria2 As String
Private Criteria3 As String
Private Criteria4 As String


na condicão do For... Next ficou assim:

For I = 1 To 4
Select Case I
Case 1
If Condicao(1) = 1 Then TIPO_STATUS = TIPO_STATUS & [Ô]AND OS.STATUS = [ô]À COMEÇAR[ô][Ô]
Case 2
If Condicao(2) = 1 Then
If Condicao(1) = 1 Then Criteria2 = [Ô]OR[Ô] Else Criteria2 = [Ô]AND[Ô]
TIPO_STATUS = TIPO_STATUS & Criteria2 & [Ô] OS.STATUS = [ô]EM EXECUÇÃO[ô][Ô]
End If
Case 3
If Condicao(3) = 1 Then
If Condicao(1) = 1 Or Condicao(2) = 1 Then Criteria3 = [Ô]OR[Ô] Else Criteria3 = [Ô]AND[Ô]
TIPO_STATUS = TIPO_STATUS & Criteria3 & [Ô] OS.STATUS = [ô]AGUARDANDO[ô][Ô]
End If
Case 4
If Condicao(4) = 1 Then
If Condicao(1) = 1 Or Condicao(2) = 1 Or Condicao(3) = 1 Then Criteria4 = [Ô]OR[Ô] Else Criteria4 = [Ô]AND[Ô]
TIPO_STATUS = TIPO_STATUS & Criteria4 & [Ô] OS.STATUS = [ô]TERMINADO[ô][Ô]
End If
End Select
Next I


Toda via segue o projeto em anexo.

Abraços....
Página 2 de 3 [21 registro(s)]
Tópico encerrado , respostas não são mais permitidas