Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera.. eu tenho uma Tabela (BD access 2003) chamada "Clientes" e quero faser um Recordset somente com os registros que tiverem o campo Idade entre 2 variaveis que o usuario definir:
IdadeMinima as date
IdadeMaxima as date
já tenho as variaveis funcionando certinho, o problema é o meu SELECT que nao ta funfando:
Set rsClientes = New RecordsetrsClientes.Open "SELECT * FROM Clientes WHERE Idade < " & IdadeMinima & " And Idade > " & IdadeMaxima & " ORDER BY Nome", cnBanco, adOpenDynamic, adLockOptimisticobs: O campo Idade é do tipo (Data/Hora)
Oq esta errado ae????
espero q possam me ajudar... valew T+
kra exatamente ... lembro que para Datas precisa usar os # #, mas meu select ainda nao esta funcionando kra!oq pode ser hein
kra exatamente ... lembro que para Datas precisa usar os # #, mas meu select ainda nao esta funcionando kra!oq pode ser hein
A condição está ao contrário nos seus códigos. A idade tem que ser maior ou igual a idade mínima e menor ou igual a idade máxima.Abraços,Graymalkin
Brother Graymalkin,
Dim strSql as StringSet rsClientes = New RecordsetstrSql = "SELECT * "strSql = strSql & "FROM Clientes "strSql = strSql & "WHERE "strSql = strSql & "Idade >= #" & IdadeMinima & "# "strSql = strSql & "AND "strSql = strSql & "Idade <= #" & IdadeMaxima & "# "strSql = strSql & "ORDER BY Nome"rsClientes.Open strSql, cnBanco, adOpenDynamic, adLockOptimistic
Espero ter ajudado!!!
Brother Graymalkin,
A dúvida é do Slype, não minha. Mas a idéia é essa daí mesmo que você fez. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Abraços,Graymalkin
Galera, ainda nao esta dando certo...
Olha o resultado desse Recordset eu vou jogar em uma DataReport...
Olhem meu código inteiro:
Dim rsClientes As RecordsetDim Minima As IntegerDim Maxima As IntegerDim dataMin As DateDim dataMax As DateMinima = InputBox("Digite a Idade Miníma (Anos)")Maxima = InputBox("Digite a Idade Maxíma (Anos)")Minima = Minima 365Maxima = Maxima 365dataMin = Date - MinimadataMax = Date - MaximaSet rsClientes = New Recordset rsClientes.Open "SELECT * FROM Clientes WHERE Idade <= #" & dataMin & "# And Idade >= #" & dataMax & "# ORDER BY nome", cnBD, adOpenDynamic, adLockReadOnlySet DRclientes.DataSource = rsClientes DRclientes.Show 1
obs.: Ja tentei inverter o maior/menor tirar o igual... e nada, ele ate xega a abrir o Report (ñ da nenhum erro), mais tbm nao exibe nenhum dado... quanto ao meu DataReport esta tudo certo ja testei ele sem a condição WHERE e funfo certin!!!
AMIGOS.... PELO AMOR DE DEUS... OQ TEM DE ERRADO AE????
SELECT * FROM Clientes WHERE Idade BETWEEN #" & dataMin & "# And #" & dataMax & "# ORDER BY nome
Então experimente assim:
rsClientes.Open "SELECT * FROM Clientes WHERE DateValue(Idade) >= DateValue('" & dataMin & "') And DateValue(Idade) <= DateValue('" & dataMax & "') ORDER BY nome", cnBD, adOpenDynamic, adLockReadOnly
Abraços,
Graymalkin
oi, seguinte, tem o problema do formato das datas, tipo assim: m/d/yyyy, ou d/m/yyyy, eu tive esse problema, usa o seguinte:Public Function SQLData(ConverteData As Date) As String SQLData = Format(ConverteData, "m/d/yyyy")End Functione no select usa assim:> #" & SQLData(a tua data) & "# funfa,marcia
Cara, você está fazendo o seguinte:
Minima = InputBox("Digite a Idade Miníma (Anos)")Maxima = InputBox("Digite a Idade Maxíma (Anos)")Minima = Minima 365Maxima = Maxima 365dataMin = Date - MinimadataMax = Date - Maximavocê está tentando subtrair um número (anos * 365) de uma data, isso não pode ser feito do jeito que você está fazendo, existe uma função para isso a Dateadd.
Faça assim essa parte:
Minima = InputBox("Digite a Idade Miníma (Anos)")Maxima = InputBox("Digite a Idade Maxíma (Anos)")dataMin = dateadd("yyyy", -Minima, date)dataMax = dateadd("yyyy", -Maxima, date)
Quando se usa Data deve ser por "#" assim como se põe " ' " para textos.Ficaria assim:
SELECT * FROM Clientes WHERE Idade < #" & IdadeMinima & "# And Idade > #" & IdadeMaxima & "# ORDER BY Nome