Preciso retornar a média dos campos de uma tabela, estou usando o comando AVG do SQL, uso tb uma função para montar o comando SQL que preciso. Depois de tudo mondato, mando esxecutar o SQL que é executado sem problemas, mas quando atribua a função ao resultado do RcordSet, ou mando escrever atravaes de um Response.write é retornado o seguinte erro:
Microsoft OLE DB Provider for ODBC Drivers error '80040e21'
Erros
/ef/resposta_cons.asp, line 97
Já coloque o SQL no Access e ele retorna a média perfeitamente, não consigo achar o problema, por favor me ajudem...
Pergunta
Glauco
Por favor me ajudem!!!!
Estou com o seguinte problema:
Preciso retornar a média dos campos de uma tabela, estou usando o comando AVG do SQL, uso tb uma função para montar o comando SQL que preciso. Depois de tudo mondato, mando esxecutar o SQL que é executado sem problemas, mas quando atribua a função ao resultado do RcordSet, ou mando escrever atravaes de um Response.write é retornado o seguinte erro:
Microsoft OLE DB Provider for ODBC Drivers error '80040e21'
Erros
/ef/resposta_cons.asp, line 97
Já coloque o SQL no Access e ele retorna a média perfeitamente, não consigo achar o problema, por favor me ajudem...
o código da função é o seguinte:
---------------------------------------------------------------------------------------
function media(dado,sexo,serie,escola,anobase,idade,ano)
dim SQL, procura, anoAtual, anoNasc, Inicio, Fim, rsMedia, cont, tabela, med
tabela = "tb_teste."&dado
if len(idade) <>0 then
AnoAtual = year(date)
anoNasc = anoatual - idade
Inicio = "01/01/"&anonasc
fim = left(date,6)&anonasc
end if
procura = "Where" 'linha 49
SQL = "SELECT avg("&tabela&") AS "&dado&" " _
& "FROM TB_escolas INNER JOIN ((TB_aluno INNER JOIN TB_teste ON TB_aluno.codAluno = TB_teste.codAluno) " _
& "INNER JOIN TB_escolaridade ON TB_aluno.codAluno = TB_escolaridade.codAluno) " _
& "ON TB_escolas.codEscola = TB_escolaridade.codEscola"
if sexo <> 0 then
if Instr(1,SQL,procura,1) <> 0 then
SQL = SQL & " AND ((TB_aluno.sexo)="& sexo &")"
else
SQL = SQL & " WHERE ((TB_aluno.sexo)="& sexo &")"
end if
end if
if serie <> 0 then
if Instr(1,SQL,procura,1) <> 0 then
SQL = SQL & " AND ((TB_escolaridade.serie)="& serie &")"
else
SQL = SQL & " WHERE ((TB_escolaridade.serie)="& serie &")"
end if
end if
if escola <> 0 then
if Instr(1,SQL,procura,1) <> 0 then
SQL = SQL & " AND ((TB_escolas.codEscola)="& escola &")"
else
SQL = SQL & " WHERE ((TB_escolas.codEscola)="& escola &")"
end if
end if
if anobase <> 0 then
if Instr(1,SQL,procura,1) <> 0 then
SQL = SQL & " AND ((TB_teste.Anobase)="& anobase &")"
else
SQL = SQL & " WHERE ((TB_teste.Anobase)="& anobase &")"
end if
end if 'linha 81
if len(idade) <> 0 then
if Instr(1,SQL,procura,1) <> 0 then
SQL = SQL & " AND (((TB_aluno.Nascimento)>=#"&inicio&"#) AND ((TB_aluno.Nascimento)<=#"&fim&"#))"
else
SQL = SQL & " WHERE (((TB_aluno.Nascimento)>=#"&inicio&"#) AND ((TB_aluno.Nascimento)<=#"&fim&"#))"
end if
end if
if len(ano) <> 0 then
if Instr(1,SQL,procura,1) <> 0 then
SQL = SQL & " AND year(TB_aluno.Nascimento)="& ano &""
else
SQL = SQL & " WHERE year(TB_aluno.Nascimento)="& ano &""
end if
end if 'linha 95
set rsMedia = conDBef.execute(""&SQL&"")
media = rsMedia(""&dado&"")
end function
-------------------------------------------------------------------------------------
O código de chamada é seguinte:
-------------------------------------------------------------------------------------
response.write media("altura",sexo,serie,escola,anobase,idade,ano)
-------------------------------------------------------------------------------------
Desde já agradeço!!!!!
OBrigado!!!!!!
Link para o comentário
Compartilhar em outros sites
39 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.