CONSULTA_SQL

JOSESANTOS 13/04/2011 16:50:38
#371239
Boa tarde!

Preciso fazer uma consulta em uma tabela, para saber quais clientes compraram, por exemplo, em janeiro e nao compraram em fevereiro ou março.
Não estou conseguindo

Alguma dica?

Vlw!
LLAIA 13/04/2011 17:54:31
#371249
posta a estrutura da tabela
TECLA 13/04/2011 21:18:02
#371273
Citação:

:
posta a estrutura da tabela



Por enquanto [Ô]ainda[Ô] somos programadores (e não conseguimos adivinhar as coisas), e por isso poste as informações necessárias para [Ô]tentarmos[Ô] ajudá-lo.
JOSESANTOS 14/04/2011 13:03:58
#371322
Não pude responder antes.

Trabalho com estéticas. Preciso saber quais clientes faturaram em janeiro e nao em fevereiro(exemplo).

A estrutura da tabela é simples:

tbAgendamento - IDAgenda
- IDCliente
- DataServico
- Concluido(s/n)
- Quitado(s/n)
Chamar os dados filtrando por data eu consigo. O que nao consigo é ver se aquele cliente também faturou em outro mês.
O q é + fácil?
1 - Utilizar subconsulta(nunca usei)?
2 - Ou chamar os dados(janeiro) num grid e a partir do grid procurar outros meses?

Espero ter sido claro.

Vlw!
LLAIA 15/04/2011 10:17:27
#371428
Citação:

Trabalho com estéticas. Preciso saber [txt-color=#e80000]quais clientes faturaram em janeiro e nao em fevereiro[/txt-color](exemplo).



Vc precisa que a sua consulta verifique e retorne esta condição ou vc vai derivar visualmente, por exemplo, em um grid ou relatório?

Para o segundo caso, podemos fazer com um crosstab. Estou presumindo que vc esteja usando o Access. Vamos contar o número de serviços feitos no ano de 2011, agrupá-los por cliente e distribuir essa contagem pelos meses.

TRANSFORM Count(IDAgenda) 
SELECT IDCliente FROM tbAgendamento GROUP BY IDCliente
WHERE Year(DataServico) = [ô]2011[ô] AND Concluido = True AND Quitado=True
GROUP BY IDCliente
PIVOT Format(DataServico, [ô]mmm[ô])


Não pude testar esse código pois estou sem Access aqui, pode apresentar algum problema.

Tomei como base essa página. http://msdn.microsoft.com/en-us/library/bb208956(v=office.12).aspx
JOSESANTOS 26/04/2011 16:43:00
#372513
Olá!

Através de pesquisa cheguei na seguinte consulta:

Set rsClienteConsulta = New ADODB.Recordset
ssql = [Ô]SELECT * FROM tbCliente [Ô] & _
[Ô]WHERE IDCli IN [Ô] & _
[Ô](SELECT IDCliente [Ô] & _
[Ô]FROM tbAgendamento [Ô] & _
[Ô]WHERE DataServico BETWEEN #[Ô] & dtPicker & [Ô]# And #[Ô] & ultdiames/mm/yyyy & [Ô]#) [Ô] & _
[Ô] ORDER BY Nome ASC [Ô]

With rsClienteConsulta
.Open ssql, Banco, adOpenKeyset, adLockReadOnly
gridClientesInativos.Rows = 1
For i = 1 To .RecordCount
gridClientesInativos.AddItem !IDCli & vbTab & !Nome
.MoveNext
Next
.Close
End With

gridClientesInativos.AddItem vbTab & gridClientesInativos.Rows - 1

Aparentemente deu certo! Mas, testando mais detalhadamente, constatei que tem erro, pq quando carrego da metade do ate o fim, ele mostra a quantidade certa clientes que possuiam serviços agendados, mas quando estendo para o inicio do mes, mostra 10 X mais. Talvez seja um problema de formatação de data, etc...

é isso por enquanto.

Vlw!



JOSESANTOS 27/04/2011 15:03:48
#372620
Agradeço a todos pela colaboração!

Acabei resolvendo por conta.

Vlw!
Tópico encerrado , respostas não são mais permitidas