Ir para conteúdo
Fórum Script Brasil
  • 0

Erro Na Media Avg - Urgente


Glauco

Pergunta

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

Posts Recomendados

  • 0

Bom dia pessoal!!!!

Com relação ao Erro retornado na média, usando o comando AVG do SQL, que todos tiveram a maior pasciência comigo, e me ajudarm muito.

Agradeço pela força.

Consegui encontrar o erro....

Confome orientações de vocês, desinstalei meu PWS e quando instalei novamente ele deu um erro de MTS, achei aqui um endereço que me ajudou a regularizar o erro.

http://www.construindoseusite.com.br/pws/pws.shtm

depois disso reintalei o PWS e ele funcionou perfeitamente, rodando tb minha função de média.

Só tenho a agrececer a todos, pela boa vontade e pasciencia...

BRIADUUUUUUUUU!!!!!!! laugh.giflaugh.giflaugh.gif

Link para o comentário
Compartilhar em outros sites

  • 0

na realidade "dado" é uma propriedade da minha função, que é responsavel por formar o nome da tabela do meu BD.

digamos que a variável dado armazena o valo "altura"

Exemplo:

function media(dado,sexo,serie,escola,anobase,idade,ano)

  dim SQL, anoAtual, anoNasc, Inicio, Fim, rsMedia, tabela

  tabela = "tb_teste."&dado

Nesse caso minha tabela chama-se TB_teste, e a variavel "dado" corresponde a um campo da minha tabela.

Então terei, segundo o código acima, atribuido a variável "tabela" o valor "TB_teste.altura"

Como desejo a média do campo altura, meu código SQL é o seguinte:

  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 WHERE ("&tabela&")<>0"

Onde eu peço a média atraves do comando AVG, do SQL, da variável "tabela" (tb_teste.altura, montado no 1º código acima) a qual eu atribuio o nome armazenado na variável "dado" (altura), por meio do "AS" do código SQL.

Depurando o código da minha página percebi que até a execução do código SQL

  set rsMedia = conDBef.execute(SQL)

ela não apresenta problemas.

Então deveira ter um RescorSet com a seguinte característica:

nome do recordset = rs media

campo do recordset = Altura (pois nomeei o campo através do "AS" do comando SQL, acima)

Só vai dar problema quanto atribuo o valor do RecordSet a uma variável qualquer

  media = rsMedia(""&dado&"")

onde "dado", nesse caso ainda é o campo, do RecordSet RsMedia, que eu quero, ou seja, "dado" nesse caso é a "altura".

Ainda está meio confuso, mas por favor tente entender!!!!!

Dúvidas me avise!!!!!!!!!! blink.gifsad.gif

Link para o comentário
Compartilhar em outros sites

  • 0
Sim!!!

media = rsMedia(""&dado&"")

rsMédia é o Recordset

dado é o nome da Coluna!!!

Estou ficando desesperado!!!! blink.gif  blink.gif

Mas com essa variavel você só está chamando a coluna dados, certo??? huh.gif

[]'s

Victor

Teoricamente sim, Pois dado é uma propriedade da minha função.

Ele pode assumir vários valores, dependendo de cada chamada da função.

pode assumir o seguntes valores:

altura

peso

saltoDist

arre (para arremesso)

impVert (para impulsão vertical)

todos esses valores são campos, ou colunas, da minha tabela TB_TESTE.

Vamos por parte!!!!!

Entedeu agora?????? sad.gif

Link para o comentário
Compartilhar em outros sites

  • 0

UFAAAAAAAAAAAAA!!!!!!!!!!!!!!!!

BOM DIA A TODOS, PRINCIPALMENTE AOS QUE ME AJUDARAM, SOU MUITO GRATO.

COM RELAÇÃO AO ERRO DESCRITO NESSE POST, CONSEGUI ENCONTRAR O ERRO.

O PROBLEMA ESTAVA NA MINHA CONEXÃO ESTAVA FALTANDO ALGUMAS COISAS.

O erro reportado dizia que o driver não suportava o dispositivo, então mudei a conexão e funcionou!!!!!

Conexão correta:

Set ConDBEF = Server.CreateObject("ADODB.Connection")

strConn = "Provider=Microsoft.Jet.OLEDB.4.0;"

strConn = strConn & "Data Source=C:\Inetpub\wwwroot\DB\DBef.mdb"

ConDBef.ConnectionString = strConn

ConDBef.open

Um abraço a todos!!!!!! biggrin.gifbiggrin.gifbiggrin.gifbiggrin.gifbiggrin.gifbiggrin.gifbiggrin.gif

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...