Fazer um select com datas

rubenmsoares

Power Member
Boa noite,

Algúem me sabe dizer como conseguir fazer um select onde uma das condições é a seleção dos resgistos correspondentes a data do mês actua?

Tenho isto:

strSQL = "SELECT COUNT(estado) AS Ganho, SUM(qt_ativacoes_gsm) AS Expr1, SUM(qt_fidelizacoes_gsm) AS Expr2, SUM(qt_ativacoes_blm) AS Expr3, SUM(qt_fidelizacoes_blm) AS Expr4, SUM(qt_ativacoes_email) AS Expr5, SUM(qt_fidelizacoes_email) AS Expr6, SUM(qt_eventos_fixa_internet) AS Expr7, SUM(qt_sites) AS Expr8, SUM(qt_usere) AS Expr9 FROM tbl_registo_negocio WHERE estado = 'Ganho' AND fkid_nome_comercial = '" & Label8.Text & "' AND 'data_negocio'" = Now.Month()

O erro está no sublinhado. A data negócio é uma data e o erro que dá é:

A conversão da cadeia "SELECT COUNT(estado) AS Ganho, S" para o tipo 'Double' não é válida.

Mas se tirar o que está sublinhado, o select funciona, mas não traz somente os valor do mês actual.

Podem ajudar-me?
 
Se fazes questão que o mês a ser considerado seja o do cliente, podes sempre converter o campo referente à data de modo a retornar apenas o número do mês em causa. Essa conversão poderá depender do SGBD usado.

Outra nota, atenção ao fkid_nome_comercial = '" & Label8.Text & "'. Não sei ao certo o contexto, mas sempre que possível utiliza queries parametrizadas.
 
antes de mais no valor da txt e nesse da data usa parameters, os conhecidos @paramter , tens isso sql injection vulnerável

Sobre a data, se na base de dados tens no tipo date, basta teres uma variavel exemplo dim datanegocio as date = cdate(txtdata.text)
Depois no paramter poes associado a esse paramtro a variavel datanegocio.
 
Código:
SELECT 	COUNT(*) AS Ganho, 
	SUM(qt_ativacoes_gsm) AS Expr1, 
	SUM(qt_fidelizacoes_gsm) AS Expr2, 
	SUM(qt_ativacoes_blm) AS Expr3, 
	SUM(qt_fidelizacoes_blm) AS Expr4, 
	SUM(qt_ativacoes_email) AS Expr5, 
	SUM(qt_fidelizacoes_email) AS Expr6, 
	SUM(qt_eventos_fixa_internet) AS Expr7, 
	SUM(qt_sites) AS Expr8, 
	SUM(qt_usere) AS Expr9 
FROM tbl_registo_negocio 
WHERE estado = 'Ganho' AND fkid_nome_comercial = '" & Label8.Text & "' AND Now.Month() = month(data_negocio)
 
Back
Topo