AJUDA COM 2 SELECT NA MESMA TABELA

WATZECK 17/05/2014 14:07:56
#438315
Boa tarde galera, blz?

Estou com uma dúvida para fazer dois SELECT na mesma tabela, por exemplo:
Eu preciso consultar um [Ô]CONDOMÍNIO[Ô] no banco (Access), e um determinado [Ô]PERÍODO[Ô] de lançamentos por data.
Eu coloquei assim, mas não esta dando certo.

SELECT NumCond, NomeCond, DataEmissao, Descricao, Quantidade FROM Copias WHERE NumCond = [Ô] & txtNumCond.Text), ([Ô]SELECT NumCond, NomeCond, DataEmissao, Descricao, Quantidade FROM Copias WHERE DataEmissão BETWEEN #[Ô] & mskInicial.Text & [Ô]# and #[Ô] & mskFinal.Text & [Ô]#[Ô])

Seu eu deixar para consultar somente o Condomínio ele busca normal, se eu colocar para buscar só por Datas já não da certo. Então acho que estou com dois problemas, um para unir dois SELECT e outro para buscar entre as Datas.

Se alguém puder me ajudar ficarei muito agradecido.
JABA 17/05/2014 16:50:39
#438320
Por que usar dois SELECT?

Tente assim:

SELECT NumCond, NomeCond, DataEmissao, Descricao, Quantidade FROM Copias WHERE NumCond = [Ô] & txtNumCond.Text & [Ô] And DataEmissão BETWEEN #[Ô] & mskInicial.Text & [Ô]# and #[Ô] & mskFinal.Text & [Ô]#[Ô]
WATZECK 17/05/2014 19:14:51
#438321
Boa noite Jaba!

Então, a minha intenção é fazer duas consultas, se der pra fazer dessa forma beleza. Não deu pra testar, porque não estou conseguindo consultar por data.
Se souber me informar se está errada a forma eu agradeço.

Eu utilizei dessa forma em outro formulário e funcionou, só que puxa da seguinte forma: MM/dd/yyyy, não consegui converter de jeito nenhum, se alguém puder me ajudar.
Banco Access.
OMAR2011 17/05/2014 20:52:43
#438324
Dim myDate As Date = mskInicial.Text
Dim myDates As Date = mskFinal.Text

[Ô]select NumCond, NomeCond, DataEmissao, Descricao, Quantidade from Copias where dataemissao between #[Ô] & Format(myDate, [Ô]dd/MM/yyyy[Ô]) & [Ô]# and #[Ô] & Format(myDates, [Ô]dd/MM/yyyy[Ô]) & [Ô]# And NumCond= [Ô] & txtCod.Text

Basta mudar para MM/dd/yyyy ou dd/MM/yyyy
TECLA 17/05/2014 20:57:06
#438325
O campo foi definido no Access como tipo de dados data?
Se sim, tente o seguinte:
SELECT format(campodata, [Ô]dd/mm/yyyy[Ô]) FROM tabela
FILMAN 18/05/2014 09:26:11
#438328
Resposta escolhida
Você não precisa de duas querys a não ser que precise para outras situações

Primeiro consulta por data no ACCESS vc ate esta passando a expressão certa, mas o formato da Data com certeza esta errado!

Formatação de data para o Access é Mês/Dia/Ano

Dim _dtinicial As DateTime = Convert.ToDateTime(mskInicial.Text)
Dim _dtfinal As DateTime = Convert.ToDateTime(mskFinal.Text)

SELECT
NumCond,
NomeCond,
DataEmissao,
Descricao,
Quantidade
FROM Copias
WHERE NumCond = [Ô] & txtNumCond.Text
AND DataEmissão BETWEEN #[Ô] & _dtinicial.ToString([Ô]MM/dd/yyyy[Ô]) & [Ô]# AND #[Ô] & _dtfinal.ToString([Ô]MM/dd/yyyy[Ô]) & [Ô]#[Ô]



Qualquer duvida poste ai
OMAR2011 18/05/2014 11:29:33
#438332
Filman, você testeu esse código de consulta.
Antes da sua resposta tinha testado com .toString e gerou erro.
A sua gera o mesmo erro.
WATZECK 20/05/2014 23:18:12
#438369
Galera, Boa noite!

Gostaria de agradecer a todos pela ajuda, muito obrigado mesmo, eu testei os códigos e funcionou perfeitamente, agora estou conseguindo consultar por dia, mês, ano.
Queria deixar claro que é admirável a atitude da galera do site VB Mania em querer ajudar o próximo, compartilhando conhecimentos, PARABéNS a todos.

Aproveitando o ensejo, para encerrar o tópico,eu coloquei o seguinte código para que, caso o usuário coloque a data inicial maior que a data final, me mostrasse uma mensagem informando, mas não está funcionando corretamente. Segue abaixo o código:

If Val(mskInicial.Text) > Val(mskFinal.Text) Then
MessageBox.Show([Ô]A Data Inicial não Pode ser Maior do que a Data Final !!![Ô] & vbCrLf & [Ô]Favor Corrigir.[Ô], [Ô]Alerta de Erro...[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
mskInicial.Clear()
mskFinal.Clear()
mskInicial.Focus()
Exit Sub
End If

Pelo que vi, ele só pega os primeiros números, ou seja o dia.
Tenho que converter também?

Obs.: Até amanhã estarei encerrando esse tópico e abrindo outro com essa nova dúvida, caso não consiga resposta.
JABA 21/05/2014 00:08:35
#438370
Troque o Val pelo CDate, assim:

If CDate(mskInicial.Text) > CDate(mskFinal.Text) Then

WATZECK 21/05/2014 16:22:37
#438384
Obrigado Jaba, funcionou perfeitamente.
Quero agradecer a todos que me ajudaram nesse tópico, mas infelizmente só posso marcar um.
Parabéns a todos pela iniciativa.
Tópico encerrado , respostas não são mais permitidas