Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou fazendo um código que me conte quantos registros tenho no banco mysql de um determinado campo(no caso "tiporm"), informando a data inicial e final.
Só que os valores estão saindo zerados, não está contando.
segue abaixo o código:
DataInicial = Request.Form("data_inicial")
DataFinal = Request.Form("data_final")
'select no banco
strSQL1 = "SELECT COUNT(tiporm) as total1 FROM rm WHERE tiporm = 'RECLAMAÇÃO' AND datacad >" & DataInicial & " AND datacad <" & DataFinal & ""
strSQL2 = "SELECT COUNT(tiporm) as total2 FROM rm WHERE tiporm = 'RECEITAS' AND datacad >" & DataInicial & " AND datacad <" & DataFinal & ""
strSQL3 = "SELECT COUNT(tiporm) as total3 FROM rm WHERE tiporm = 'ELOGIO' AND datacad >" & DataInicial & " AND datacad <" & DataFinal & ""
strSQL4 = "SELECT COUNT(tiporm) as total4 FROM rm WHERE tiporm = 'SUGESTÃO' AND datacad >" & DataInicial & " AND datacad <" & DataFinal & ""
strSQL5 = "SELECT COUNT(tiporm) as total5 FROM rm WHERE tiporm = 'INFORMAÇÃO' AND datacad >" & DataInicial & " AND datacad <" & DataFinal & ""
Se eu colocar só com a data inicial funciona, más com a data final não funciona
strSQL1 = "SELECT COUNT(*) as total1 FROM rm WHERE tiporm = 'RECLAMAÇÃO' AND datacad >" & DataInicial & ""
Os campos de DATA são de que tipo?
no banco mysql o campo datacad está definido como DATE
Dê uma pesquisada por "Between" éuma função da linguagem SQL que faz o que você precisa.
Dê uma pesquisada por "Between" éuma função da linguagem SQL que faz o que você precisa.
beleza, Vou pesquisar sim.
Valeu
Tô tentando com between e também não estou conseguindo
'select no banco
strSQL1 = "SELECT COUNT(*) as total1 FROM rm WHERE tiporm = 'RECLAMAÇÃO' AND datacad BETWEEN " & DataInicial & " AND " & DataFinal & ""use # para delimitar a data
Não adiantou, dá erro:
Tipo de erro:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[MySQL][ODBC 3.51 Driver][mysqld-5.0.27-community-nt]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
/sacintra/relatorio1.asp, line 28
LINHA28: Set rs1=Conexao.Execute(strSQL1)
strSQL1 = "SELECT COUNT(*) as total1 FROM rm WHERE tiporm = 'RECLAMAÇÃO' AND datacad BETWEEN #" & DataInicial & "# AND #" & DataFinal &"#"
E mesmo fazendo para contar com data maior que 17/9/2008 ele não conta direito:
strSQL1 = "SELECT COUNT(*) as total1 FROM rm WHERE tiporm = 'RECLAMAÇÃO' and datacad > '17/9/2008'"
Será que alguém aqui já passou por esse problema que estou tendo:
tenho de contar quantas reclamações, elogios, etc teve em um determinado perídodo.
Vou explicar melhor o que preciso.
esse campo "tiporm" terá valores assim:
RECLAMAÇÃO
ELOGIO
SUGESTÃO
INFORMAÇÃO
RECEITAS
O que quero é um relatório que conte quantas RECLAMAÇÃO, ELOGIO, etc... tiveram num determinado período.
O relatório deverá sair assim:
Relatório período: 1/9/2008 a 30/9/2008
-------------------------------
Total de Reclamações: 10
Total de Elogios: 5
Total de Solicitações de receitas: 6
Total de Sugestões: 4
Total de Informações: 9
-------------------------------------
O formato de data padrão do MySQL é "aaaa-mm-dd" teste com essa substituição e poste o resultado.
O formato de data padrão do MySQL é "aaaa-mm-dd" teste com essa substituição e poste o resultado.
Eu cadastrei manualmente a data no banco com o formato dd-mm-aaaa para teste
Bom, vou jogar fazer uns testes.
Valeu!
Os Front-Ends de gerenciamento de BD's normalmente permitem a entrada "visual" no modo padrão do sistema/local mas a SQL usa esse formato que indiquei.
Os Front-Ends de gerenciamento de BD's normalmente permitem a entrada "visual" no modo padrão do sistema/local mas a SQL usa esse formato que indiquei.
Entendi.
O mais perto que consegui chegar foi com esse código abaixo, porém ele não está respentando período que estou colocando. Ele já me dá o total de tudo e não por período
DataInicial = Request.Form("data_inicial")
DataFinal = Request.Form("data_final")
strSQL1 = "SELECT COUNT(tiporm) as total1 FROM rm WHERE datacad BETWEEN '" &DataInicial& "' AND '" &DataFinal& "' and tiporm = 'RECLAMAÇÃO'"
>
Os Front-Ends de gerenciamento de BD's normalmente permitem a entrada "visual" no modo padrão do sistema/local mas a SQL usa esse formato que indiquei.
Entendi.
O mais perto que consegui chegar foi com esse código abaixo, porém ele não está respentando período que estou colocando. Ele já me dá o total de tudo e não por período
DataInicial = Request.Form("data_inicial")
DataFinal = Request.Form("data_final")
strSQL1 = "SELECT COUNT(tiporm) as total1 FROM rm WHERE datacad BETWEEN '" &DataInicial& "' AND '" &DataFinal& "' and tiporm = 'RECLAMAÇÃO'"
Puts. verdade mesmo. rs
Com esse código que coloquei po último, informando a data no form inicial: 2008/9/1 a Final: 2008/9/15
Aí assim dá o valor correto.
Então como devo proceder?
Pois fica estranho digitar no form a data 2008/9/1
voce pode digitar normal e inverter antes da consulta sem interferencia do usuario
voce pode digitar normal e inverter antes da consulta sem interferencia do usuario
valeu por responder também.
Más como inverteria isso? com replace?
>
voce pode digitar normal e inverter antes da consulta sem interferencia do usuario
valeu por responder também.
Más como inverteria isso? com replace?
Nossa nunca fiz replace de data. Como que faz isso? rs
Use as funções IsDate(), CDate(), Day(), Month() e Year() para isso. Caso não consiga fazer dê uma olhada no "Laboratório de Scripts" pois lá existe uma função para formatação postada.
Use as funções IsDate(), CDate(), Day(), Month() e Year() para isso. Caso não consiga fazer dê uma olhada no "Laboratório de Scripts" pois lá existe uma função para formatação postada.
vou pesquisar sobre isso. obrigado!
Obrigado a todos que me responderam. Valeu Salgado!
Agora deu certo. Ficou assim:
DataInicial = Request.Form("data_inicial")
DataI = DataInicial
DataI = Year(Cdate(DataI)) & "-" & Right("0"&Month(Cdate(DataI)),2) & "-" & Right("0"&Day(Cdate(DataI)),2)
DataFinal = Request.Form("data_final")
DataF = DataFinal
DataF = Year(Cdate(DataF)) & "-" & Right("0"&Month(Cdate(DataF)),2) & "-" & Right("0"&Day(Cdate(DataF)),2)
strSQL1 = "SELECT COUNT(tiporm) as total1 FROM rm WHERE datacad BETWEEN '" &DataI& "' AND '" &DataF& "' and tiporm = 'RECLAMAÇÃO'"
Uma dica para validação de seu sistema, use a função IsDate() testando sua variável e permitindo que o SELECT só seja executado caso o valor inserido seja realmente uma data.
Os campos de DATA são de que tipo?