SELECT * FROM TAB_X WHERE ???

WATZECK 30/05/2016 00:31:51
#462711
Boa noite galera!

Estou com uma dúvida para realizar um SELECT.
é o seguinte, eu quero fazer duas consultas de forma diferente, onde uma eu busco um determinado cliente, em um período de datas (de X até Y), mas até ai eu consegui fazer de boa, conforme código abaixo.

Obs.: No código abaixo eu ainda não consegui trazer a data no formato Dia, Mês, Ano, mas deve ser algum detalhe que vejo depois.

Dim numcond As String = frmConsultar_Copias.txtNumCond.Text
Dim datainical As DateTime = Convert.ToDateTime(frmConsultar_Copias.dtpInicial.Text)
Dim datafinal As DateTime = Convert.ToDateTime(frmConsultar_Copias.dtpFinal.Text)

[Ô]SELECT NumCond, NomeCond, DataEmissao, Descricao, Quantidade FROM Copias WHERE NumCond = [Ô] & numcond.ToString & [Ô] AND DataEmissao BETWEEN # [Ô] & datainicial.ToString([Ô]MM/dd/yyyy[Ô]) & [Ô]# AND # [Ô] & datafinal.ToString([Ô]MM/dd/yyyy[Ô]) & [Ô]# [Ô]

Agora que vem a minha dúvida, porque no Form eu deixei a opção de consultar por cliente e data (um de cada vez), e a opção de selecionar os mesmos campos, mas de todos os clientes (coloquei uma CheckBox - Todos).
Eu coloquei o seguinte código:

If frmConsultar_Copias.chkTodos.Checked = False Then
_sql = [Ô]SELECT NumCond, NomeCond, DataEmissao, Descricao, Quantidade FROM Copias WHERE NumCond = [Ô] & numcond.ToString & [Ô] AND DataEmissao BETWEEN # [Ô] & datainicial.ToString([Ô]MM/dd/yyyy[Ô]) & [Ô]# AND # [Ô] & datafinal.ToString([Ô]MM/dd/yyyy[Ô]) & [Ô]# [Ô]
Else
_sql = [Ô]SELECT NumCond, NomeCond, DataEmissao, Descricao, Quantidade FROM Copias WHERE DataEmissao BETWEEN # [Ô] & datainicial.ToString([Ô]MM/dd/yyyy[Ô]) & [Ô]# AND # [Ô] & datafinal.ToString([Ô]MM/dd/yyyy[Ô]) & [Ô]# [Ô] & [Ô]ORDER BY Val(NumCond)[Ô]
End If

O exemplo acima foi somente um dos testes, mas mudei diversas vezes, e não obtive exito.

Eu nunca fiz uma consulta dessa, e confesso que estou perdido para trazer TODOS os clientes.
Não sei se fui bem claro no que eu preciso, vou tentar explicar melhor, eu quero trazer os mesmos campos, porém de TODOS os clientes, cujo código (ID) seria o [Ô]NumCond[Ô].
Eu tentei colocar SELECT * FROM Copias, mas irá me trazer todos os campos da Tabela e não é isso que preciso, eu preciso fazer um WHERE nas datas e de todos os clientes.
No primeiro caso foi mais fácil, porque eu concatenei o NumCond (ID) no TextBox, mas nesse caso não sei como fazer.

Se alguém puder me ajudar com isso, eu agradeço.
Sei que isso para a maioria aqui é fichinha, mas como ainda não pude fazer um curso de SQL, e nunca ter utilizado essa consulta, estou apanhando um pouco.
Sem querer abusar, mas já abusando, eu gostaria que na 1ª opção, pudesse ordenar a consulta por Data (ordem crescente), já que é somente um cliente, e na 2ª opção, ordenar por cliente (ID) e também por Data (ordem crescente) de cada cliente.
Por exemplo, cliente nº [Ô]105[Ô], ordenar por data (de X até Y, conforme digitado pelo usuário no DateTimerPicker), cliente nº [Ô]110[Ô], ordenar por data, e assim sucessivamente, ou seja, seriam duas ordenações, primeiro o ID do cliente, e por data de cada ID.

Desde já agradeço a ajuda de todos.





JABA 30/05/2016 01:18:09
#462712
Resposta escolhida
1ª Consulta:

_sql = [Ô]SELECT NumCond, NomeCond, DataEmissao, Descricao, Quantidade FROM Copias WHERE NumCond = [Ô] & numcond.ToString & [Ô] AND DataEmissao BETWEEN # [Ô] & datainicial.ToString([Ô]MM/dd/yyyy[Ô]) & [Ô]# AND # [Ô] & datafinal.ToString([Ô]MM/dd/yyyy[Ô]) & [Ô]# ORDER BY  DataEmissao ASC[Ô]


2ª Consulta:

_sql = [Ô]SELECT NumCond, NomeCond, DataEmissao, Descricao, Quantidade FROM Copias WHERE DataEmissao BETWEEN # [Ô] & datainicial.ToString([Ô]MM/dd/yyyy[Ô]) & [Ô]# AND # [Ô] & datafinal.ToString([Ô]MM/dd/yyyy[Ô]) & [Ô]# ORDER BY NumCond, DataEmissao ASC[Ô] 


Não entendi muito bem seu problema. Examinando por alto, a consulta acima deveria trazer todos os registros da tabela Copias nas datas especificadas. Se for só isso, me parece que está correta, necessitando de uma pequena mudança no final. O que pode está dando problema é o formato da data no seu banco. Verifique se elas estão nesse formato de Mes/Dia/Ano. Coloque datas com mais de 12 dias, pois assim terá certeza de que o primeiro campo não é o de mês.
NICKOSOFT 30/05/2016 08:52:09
#462717
depende o q tem na tabela no campo tmb
NumCond = [Ô] & numcond.ToString & [Ô]
se for string faltou aspas simples, passando como parâmetros pode ser melhor, mas vai de cada um e conhecimento....
WATZECK 30/05/2016 23:50:50
#462791
Boa noite!

Primeiramente quero agradecer a ajuda de vocês (JABA e NICKSOFT).

Jaba, eu fiz a consulta SQL conforme seu exemplo acima, e funcionou perfeitamente, muito obrigado.
O erro na conversão de data (MM/dd/YY) estava no Crystal Reports, mas já corrigi.

O problema é que no meu caso a 2ª opção funcionou parcialmente, porque quando eu seleciono para buscar todos os clientes, ele fica um em baixo do outro, e eu preciso que cada cliente fique em uma página no relatório (Crystal Reports).

Eu fiz uma montagem utilizando a ferramenta de captura e o Paint para tentar demonstrar como fica quando eu seleciono um cliente de cada vez (certo), e quando eu seleciono o CheckBox para buscar todos os clientes para melhor entendimento.

Esse programa que estou fazendo é para contabilizar a quantidade de cópias e xerox utilizada por cada cliente, onde é cobrado um valor de R$ 0,23 cada, e no final do mês é somado o valor que cada um gastou para ser cobrado. Por isso que eu preciso que cada cliente fique em um única página, ou páginas caso tenha uma grande quantidade.
Se essa opção de TODOS não funcionar, eu vou ter que imprimir um por um, e não seria nada produtivo, tendo em vista serem mais de 100 clientes.
No anexo dá pra ter uma ideia do que estou querendo, caso possam me ajudar com mais essa ajuda, eu agradeço.

Obrigado.
JABA 31/05/2016 00:37:00
#462792
Se você já têm os dados necessários para a impressão, agora é só formata-lo diretamente no Crystal Report. No seu caso, creio que seria feito através das seções, marcando-se a opção New Page After.

http://blog.marksgroup.net/2012/01/crystal-reports-forcing-page-break-for.html
NICKOSOFT 31/05/2016 23:41:19
#462839
sim, agora é direto no CR q vc ajusta
WATZECK 02/06/2016 11:27:49
#462917
Bom dia!

Beleza, agradeço a ajuda, vou encerrar o tópico, e pesquisar sobre como fazer isso no Crystal Reports.
Mais uma vez muito obrigado pela força.
Tópico encerrado , respostas não são mais permitidas