CONSULTA SQL SIMPLES, ERRO ESTRANHO
analisem a consulta sql abaixo, acho que é a mais simples que tenho no sistema, mas qdo ativo a linha que esta comentada, "and local bla bla.....,
gera erro na abertura do RS, o campo é texto mesmo, e o tipo de erro não conhecia, sera que pode ser algum problema na tabela ???, mas se não usar esta linha vai normal, o erro é o seguinte:
runtime error'-2147467259 (80004005)'method 'open' of object '_recordset' failed.
e o erro ocorre justamente la linha do rs.open ........
sql = " select * from cto "
sql = sql & " where data BETWEEN "
sql = sql & Chr(35) & Format(dt1.Value, "mm/dd/yy") & Chr(35) & " AND " & Chr(35) & Format(dt2.Value, "mm/dd/yy") & Chr(35)
'sql = sql & " and local = '" & txtlocal.Text & "'"
Set Rs = New ADODB.Recordset
Rs.CursorLocation = adUseClient
Rs.Open sql, Cnn, adOpenForwardOnly, adLockReadOnly
Rs.EOF Then
gera erro na abertura do RS, o campo é texto mesmo, e o tipo de erro não conhecia, sera que pode ser algum problema na tabela ???, mas se não usar esta linha vai normal, o erro é o seguinte:
runtime error'-2147467259 (80004005)'method 'open' of object '_recordset' failed.
e o erro ocorre justamente la linha do rs.open ........
sql = " select * from cto "
sql = sql & " where data BETWEEN "
sql = sql & Chr(35) & Format(dt1.Value, "mm/dd/yy") & Chr(35) & " AND " & Chr(35) & Format(dt2.Value, "mm/dd/yy") & Chr(35)
'sql = sql & " and local = '" & txtlocal.Text & "'"
Set Rs = New ADODB.Recordset
Rs.CursorLocation = adUseClient
Rs.Open sql, Cnn, adOpenForwardOnly, adLockReadOnly
Rs.EOF Then
Amigo tente dessa forma.
Set Rs = New ADODB.Recordset
Rs.CursorLocation = adUseClient
Rs.Open sql, Cnn, adOpenForwardOnly, adLockReadOnly
sql = " select * from cto where data BETWEEN Format(dt1.Value, "mm/dd/yy") AND Format(dt2.Value, "mm/dd/yy") and local = '" & txtlocal.Text & "'"
Set Rs = New ADODB.Recordset
Rs.CursorLocation = adUseClient
Rs.Open sql, Cnn, adOpenForwardOnly, adLockReadOnly
sql = " select * from cto where data BETWEEN Format(dt1.Value, "mm/dd/yy") AND Format(dt2.Value, "mm/dd/yy") and local = '" & txtlocal.Text & "'"
Acho que o problema é no MDAC... será que reinstalar não resolveria? Tentou em outro micro?
tentei em outro, mesma coisa, e a sintaxe do luis da erro. estranho mesmo, outras consultas, e esta mesma sem a referida linha, vai normal.
tenta mudar a ordem no Select....coloca o "and local" antes de "data BETWEEN" e faz o teste.....e outra coisa....testa tbm só com o "and local" sem o "data BETWEEN" e vê se retorna alguma coisa.....
faz primeiramente a consulta em algum modo grafico do seu SGBD, ae vai arrumando por lá... é mais facil corrigir o erro por lá...pois ele fala exatamente o qe está errado
ja havia testado só com o and local, CLARO TROCANDO POR WHERE..... e erro na certa. agora olhem só, desconfiei que desta palavra local, que é o nome de uma campo na tabela, e BOMMMMMMMMMMMMMMBA, "LOCAL", deve ser reservada pelo vb ou ado, sei la que merd......., mudei o nome do campo para loca e tudo certo, o duro é perder 1 dia de trabalho nisto, também estes erros idiotas que o ado retorna, nunca ajudam em nada. Mas fica ai, pra galera esta dica. obrigado a todos que tentaram ajudar.
Nem precisa mudar no BD, é só usar assim:
Com a palavra entre colchetes...flw
sql = " select * from cto "
sql = sql & " where data BETWEEN "
sql = sql & Chr(35) & Format(dt1.Value, "mm/dd/yy") & Chr(35) & " AND " & Chr(35) & Format(dt2.Value, "mm/dd/yy") & Chr(35)
sql = sql & " and [local] = '" & txtlocal.Text & "'"
Set Rs = New ADODB.Recordset
Rs.CursorLocation = adUseClient
Rs.Open sql, Cnn, adOpenForwardOnly, adLockReadOnly
Rs.EOF Then
Com a palavra entre colchetes...flw
também aconteceu comigo quando eu tinha em uma tabela um campo com o nome DATA, é dose ...[S20]
Tópico encerrado , respostas não são mais permitidas