CONSUTA VB6 EM ACCESS COM 3 CONDICOES

LUISLPC 18/05/2012 16:55:55
#402280
Boa tarde amigos.

Desculpe se estiver postando no lugar errado. passei a tarde pesquisando e testando mas sem sucesso....

estou precisando fazer uma consulta em meu .mdb com 3 condicoes, no caso o valor a ser retornado precisa ser igual em seu nome, na data e na hora....somente com uma condicao consigo fazer, mas ja tentei de tudo para fazer com 2 e 3 condicoes e da erro.

consegui inclusive que ele entendesse a data.

abaixo meu codigo que funciona com consulta com a condicao em formato data:

  Public Function Consultaralarme1(ByVal intData As String) As Variant
Set Rs = CreateObject([Ô]ADODB.Recordset[Ô])


Rs.Open [Ô]SELECT * FROM alarme1 WHERE data_on =#[Ô] & intData & [Ô]#[Ô], Cn, adOpenKeyset, adLockOptimistic
MsgBox Rs.Fields(0)

Rs.Close


End Function


ai o botao que aciono para executar a funcao:

  Private Sub Command16_Click()

Dim intData As String
intData = frmautomacao.dataatual.Text
Consultaralarme1 (intData)
End Sub




Funciona direitinho assim, mas depois do WHERE preciso incluir mais 2 condicoes, hora, e nome do equipamento.

ja tentei de tudo, adicionando as variaveis na funcao e no bota, fechando, abrindo aspas etc e nada. as vezes retorna dizendo que o argumento nao é opcional.

como sou novato estou perdido, ja tentei quase todos os resultados do google.rsrs

obrigado a qualquer ajuda.

KERPLUNK 18/05/2012 17:07:11
#402282
Rs.Open [Ô]SELECT * FROM alarme1 WHERE data_on =#[Ô] & intData & [Ô]# AND CAMPO2=[Ô] & variavel1 & [Ô] AND CAMPO3 = [Ô] & variavel2, Cn, adOpenKeyset, adLockOptimistic
LUISLPC 18/05/2012 18:09:08
#402293
Opa colega

ajustei e ficou assim:

  Rs.Open [Ô]SELECT * FROM alarme1 WHERE data_on =#[Ô] & intData & [Ô]# AND hora_on=[Ô] & horavar & [Ô] AND equipamento = [Ô] & equipvar, Cn, adOpenKeyset, adLockOptimistic 


e no botao que chama a funcao

  Private Sub Command16_Click()

Dim intData, horavar, equipvar As String
intData = frmautomacao.dataatual.Text
horavar = frmautomacao.horaatual.Text
equipvar = alarme.codigo1.Caption
Consultaralarme1 (intData And horavar And equipvar)
End Sub


so que quando clico nele da erro e aponta em debug pro codigo do botao, dizendo [Ô]argumento nao opcional[Ô]

KERPLUNK 18/05/2012 18:32:52
#402296
Que tipo de dados é o campo [Ô]hora_on[Ô]?
LUISLPC 18/05/2012 18:35:49
#402297
Opa...

em hora on seria em formato hora mesmo:

tipo:

hora_on = 13:13:51

e equipamento = Ventilador

obrigado.
MARCELO.TREZE 18/05/2012 18:52:29
#402299
Colega você criou uma sub ou function de nome Consultaralarme1 se sim posta o código desta sub

MARCELO.TREZE 18/05/2012 19:12:29
#402300
Desculpe eu não tinha vista a function no primeiro form, mas veja as modificações e a forma de se usar

Abaixo na função repare que coloquei OPTIONAL hora e OPTIONAL equipamento, ou seja é opcional, você só coloca se quiser

Public Function Consultaralarme1(ByVal intData As String, Optional hora As String, Optional equipamento As String)
Dim sSQL As String
Set Rs = CreateObject([Ô]ADODB.Recordset[Ô])
sSQL = [Ô]SELECT * FROM alarme1 WHERE data_on =#[Ô] & intData & [Ô]# [Ô] & hora & [Ô] [Ô] & equipamento
Rs.Open , Cn, adOpenKeyset, adLockOptimistic
MsgBox Rs.Fields(0)
Rs.Close
End Function


para usar é diferente do que você tentou

Private Sub Command16_Click()
Dim intData, horavar, equipvar As String
intData = frmautomacao.dataatual.Text
horavar = frmautomacao.horaatual.Text
equipvar = alarme.codigo1.Caption
[txt-color=#e80000]Consultaralarme1 (intData And horavar And equipvar)[/txt-color] [ô] você não pode usar desta forma
End Sub


veja a maneira correta

Private Sub Command16_Click()
Dim intData, horavar As String, equipvar As String
intData = frmautomacao.dataatual.Text
horavar = frmautomacao.horaatual.Text
equipvar = alarme.codigo1.Caption
Consultaralarme1 intData, [Ô]AND hora_on = [ô][Ô] & horavar & [Ô][ô] , [Ô]AND equipamento = [ô][Ô] & equipvar & [Ô][ô][Ô]
End Sub


ou seja o objetivo é montar a string que formará a select, então os dados devem estar entre aspas, teste ai


LUISLPC 19/05/2012 10:30:43
#402313
bom dia colega.

esta dando erro na penultima aspa simples:

  Dim intData, horavar As String, equipvar As String
intData = frmautomacao.dataatual.Text
horavar = frmautomacao.horaatual.Text
equipvar = alarme.codigo1.Caption
Consultaralarme1 intData, [Ô]AND hora_on = [ô][Ô] & horavar & [Ô][ô] , [Ô]AND equipamento = [txt-color=#e80000][ô][/txt-color][Ô] & equipvar & [Ô][ô][Ô]


quando verifico, diz que o equipvar esta vazio.

tentei modificar as aspas mas nao deu certo. se eu tirar ela ate passa mas ai da tipo incompativel.

obrigado pelas dicas ...

LUISLPC 19/05/2012 10:37:44
#402314
Opa

encontrei a aspa que tinha a mais, antes do AND equipamento existe mais uma aspa dupla, retirei ela, quando pedi pra consultar disse que o comando de texto nao foi definido para o objeto de comando...estou pesquisando agora para tentar corrigir isto.

LUISLPC 19/05/2012 10:58:51
#402315
Opa..

é, se eu retirar essa aspa dupla mistura tudo e da o erro do comando de texto....acho que o problema é quem esta na frente do vb...rsrsr

se tiver alguma ideia do q seja agradeco amigo..
FAUZE 19/05/2012 17:17:21
#402320
Olá amigo,

criei uma tabela aqui para fazer um teste e funcionou, não sei se é o que vc está precisando!

  Public Function Consultaralarme1(ByVal intData As String, Optional horavar As String, Optional equipvar As String)
Dim sSQL As String
Set Rs = CreateObject([Ô]ADODB.Recordset[Ô])
sSQL = [Ô]SELECT * FROM alarme1 WHERE data_on = #[Ô] & Format(intData, [Ô]dd/mm/yyyy[Ô]) & [Ô]# AND hora = [ô][Ô] & horavar & [Ô][ô][Ô] & [Ô] AND equipamento = [ô][Ô] & equipvar & [Ô][ô][Ô]
Rs.Open sSQL, Cn, adOpenKeyset, adLockOptimistic
If Not Rs.EOF Then
MsgBox Rs.Fields(0)

End If
Rs.Close

End Function


  Private Sub Command16_Click()
Dim intData, horavar As String, equipvar As String, X As String
intData = CStr(Date) [ô] frmautomacao.dataatual.Text
horavar = [Ô]14:13:56[Ô] [ô] frmautomacao.horaatual.Text
equipvar = [Ô]100[Ô] [ô] alarme.codigo1.Caption
Call Consultaralarme1(intData, horavar, equipvar)

End Sub
Página 1 de 2 [13 registro(s)]
Tópico encerrado , respostas não são mais permitidas