CONSUTA VB6 EM ACCESS COM 3 CONDICOES
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:
ai o botao que aciono para executar a funcao:
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.
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.
Rs.Open [Ô]SELECT * FROM alarme1 WHERE data_on =#[Ô] & intData & [Ô]# AND CAMPO2=[Ô] & variavel1 & [Ô] AND CAMPO3 = [Ô] & variavel2, Cn, adOpenKeyset, adLockOptimistic
Opa colega
ajustei e ficou assim:
e no botao que chama a funcao
so que quando clico nele da erro e aponta em debug pro codigo do botao, dizendo [Ô]argumento nao opcional[Ô]
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[Ô]
Que tipo de dados é o campo [Ô]hora_on[Ô]?
Opa...
em hora on seria em formato hora mesmo:
tipo:
hora_on = 13:13:51
e equipamento = Ventilador
obrigado.
em hora on seria em formato hora mesmo:
tipo:
hora_on = 13:13:51
e equipamento = Ventilador
obrigado.
Colega você criou uma sub ou function de nome Consultaralarme1 se sim posta o código desta sub
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
para usar é diferente do que você tentou
veja a maneira correta
ou seja o objetivo é montar a string que formará a select, então os dados devem estar entre aspas, teste ai
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
bom dia colega.
esta dando erro na penultima aspa simples:
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 ...
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 ...
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.
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.
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..
é, 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..
Olá amigo,
criei uma tabela aqui para fazer um teste e funcionou, não sei se é o que vc está precisando!
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
Tópico encerrado , respostas não são mais permitidas