Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

slype

BD Access 2003

Recommended Posts

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, adLockOptimistic
obs: O campo Idade é do tipo (Data/Hora)

 

Oq esta errado ae????

espero q possam me ajudar... valew T+

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

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????

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT * FROM Clientes WHERE Idade BETWEEN #" & dataMin & "# And #" & dataMax & "# ORDER BY nome

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 - Maxima
você 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)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.