Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

lparrillo

Preciso gerar um relatorio...

Recommended Posts

Ae galera beleza?Bom eu fiz um programa em ASP de uma pesquisa interna aqui da empresa. Este programa cadastro no BD SQL Server em uma tabela onde tenho os tres primeiros campos como:Turno, Setor, Período. Depois vem mais 40 campos de q1....q40 onde pode conter como conteúdo (4,3,2,1,0).Eu preciso de algumas idéias e comandos SQL para eu fazer o seguinte.Vou precisar gerar uma tabela no ASP onde nas colunas estariam 4,3,2,1,0 e nas linhas q1,q2....q40.. Ai no conteúdo eu precisaria ter a soma das pessoas que responderam .Tipo .. 10 pessoas responderam 4 pra prgunta q1.. 5 responderam 3 para q2.. e assim por diante..Queria saber se tem como fazer isso usando instruções SQL.. Ou de alguma outra forma.Ai no final eu precisaria ter a somatoria de cada coluna e de cada linha..Será que alguem tem alguma idéia de como eu possa fazer isso?Desculpa pelo tamanho da dúvida.. é que eu estou precisando muito disso..VLW

Compartilhar este post


Link para o post
Compartilhar em outros sites

pelo que entendi você quer listar no momento do cadastro quantas pessoas já responderam as questões e suas respectivas respostasvocê terá que consultar no bd estas informações antes de montar a page

Compartilhar este post


Link para o post
Compartilhar em outros sites

As respostas das questões de 1 a 40 (q1 - q40), ficam gravadas no SQL, certo?Ex.:-- BD -- Turno | Setor | Perído | q1 | ... | q40Faz um query das respostas, guardando em variáveis a quantidade de ocorrências da resposta até o EOF.Ex.:Turno | Setor | Perído | q1 | ... | q40 ... ... ... 1 2 ... ... ... 4 3 ... ... ... 2 1 ... ... ... 0 4 ... ... ... 2 3Conta as vezes que apareceu a mesma resposta, guardando em uma variável e imprime ela depois no relatório.----Acho q dá...Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

pelo que entendi você quer listar no momento do cadastro quantas pessoas já responderam as questões e suas respectivas respostasvocê terá que consultar no bd estas informações antes de montar a page

mais ou menos isso.. tipo..vou montar um quadro onde nas coluas vai ter as respostas tipo 4,3,2,1,0e nas linha vai ter as questoes q1,q2...q40ai no conteudo vai ter o numero de pessoas que responderam aquela questao com aquele valor tipo: 4 3 _______ q1| 10 | 4q2| 5 | 3q3| 12 | 2Onde os numeros do conteudo é a quantidade de possoas que responderam 4 na questao 1 sabe...?Como que eu vou fazer isso hein?To pensando aqui e einda naum consegui uma forma facil de fazer isso..

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou montar um quadro onde nas coluas vai ter as respostas tipo 4,3,2,1,0e nas linha vai ter as questoes q1,q2...q40ai no conteudo vai ter o numero de pessoas que responderam aquela questao com aquele valor tipo:      4    3  _______ q1| 10 |  4q2| 5  |  3q3| 12 |  2Onde os numeros do conteudo é a quantidade de possoas que responderam 4 na questao 1 sabe...?Como que eu vou fazer isso hein?To pensando aqui e einda naum consegui uma forma facil de fazer isso..

O quadro você faz na "mãozona"...tipo... abre o dreamweaver, ou qualquer outro editor que queira, é faz a tabela...linha - q1, q2, q3 ... q40coluna - op1, op2, op3, op4, op0Bem... faz como quiser...Agora pra inserir a quantidade de vezes, faz como falei no outro post...guarda a quantidade de vezes, por ex, que op1 = 4 aparece em q1 (hum... variável q_q1_r4)Aí na hora do display... taca na tabela lá <%= q_q1_r4 %>É isso que você quer né?

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem já que você vai armazenar as paradas no bd mesmo, monta a page toda a partir deletipomonta sua tabelaQUESTAO|R0|R1|R2|R3|R4q1|2|3|0|1|2 . . .q40|0|10|12|0|4e manda listar na page o que pegar na SELECTWHILE NOT RS.EOF'aqui você escreve o nome da questão e suas opções se for usar radio button monta aqui tb a apradaRS("QUESTAO") RS("R0")RS("R1")RS("R2")RS("R3")RS.MOVENEXTWEND

Compartilhar este post


Link para o post
Compartilhar em outros sites

... e manda listar na page o que pegar na SELECTWHILE NOT RS.EOF'aqui você escreve o nome da questão e suas opções se for usar radio button monta aqui tb a apradaRS("QUESTAO") RS("R0")RS("R1")RS("R2")RS("R3")RS.MOVENEXTWEND

Mas assim ele gera o gráfico com as respostas de cada usuário, não ?O que eu entendi é que ele quer a soma das respostas, por exemplo 1, da questão 10... Tipo... pega todos que responderam 1 na questão 10, soma e mostra na tabelhinha lá.Acho que é isso que ele quer...

Compartilhar este post


Link para o post
Compartilhar em outros sites

... e manda listar na page o que pegar na SELECTWHILE NOT RS.EOF'aqui você escreve o nome da questão e suas opções se for usar radio button monta aqui tb a apradaRS("QUESTAO") RS("R0")RS("R1")RS("R2")RS("R3")RS.MOVENEXTWEND

Mas assim ele gera o gráfico de com as respostas de cada usuário, não ?O que eu entendi é que ele quer a soma das respostas, por exemplo 1, da questão 10... Tipo... pega todos que responderam 1 na questão 10, soma e mostra na tabelhinha lá.Acho que é isso que ele quer...
não cara, aquilo que fiz independe de user, alias nem tem lá a opção de saber quem respondeu se ele quiser terá que mudar um poucolà tem um campo com o nome da questao e os outros sao pra serem atualizados com as quantidades de respostas, então na hora de listar aparecerá questaão e respectivas quantidades de respostas de cada uma

Compartilhar este post


Link para o post
Compartilhar em outros sites

não cara, aquilo que fiz independe de user, alias nem tem lá a opção de saber quem respondeu se ele quiser terá que mudar um poucolà tem um campo com o nome da questao e os outros sao pra serem atualizados com as quantidades de respostas, então na hora de listar aparecerá questaão e respectivas quantidades de respostas de cada uma

Usuário que eu digo, é porque alguém digitou... entende? bem, não é o caso...Voltando...Não vou saber te explicar meu pensamento direito, mas é assim:o bd não sabe qual é a resp 1 ou 2 ou 3... sabe q, humm, na linha 2 (ex.), a q1 vale 1, a q2 vale 4, a q3 value 2... e assim vai...Não tem como contar por resp assim...entende ou tô pirando?

Compartilhar este post


Link para o post
Compartilhar em outros sites

o bd não sabe qual é a resp 1 ou 2 ou 3... sabe q, humm, na linha 2 (ex.), a q1 vale 1, a q2 vale 4, a q3 value 2... e assim vai...Não tem como contar por resp assim...entende ou tô pirando?

A sugestao que dei foi criar uma coluna pro nome da questao e outras para cada tipo de resposta , ou seja sempre terá a informação de quantas respostas teve para cada tipo de resposta da questao e se quiser saber quantos responderão é só somar.Espero ter sido mais claro desta vez

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou montar um quadro onde nas coluas vai ter as respostas tipo 4,3,2,1,0e nas linha vai ter as questoes q1,q2...q40ai no conteudo vai ter o numero de pessoas que responderam aquela questao com aquele valor tipo:      4    3  _______ q1| 10 |  4q2| 5  |  3q3| 12 |  2Onde os numeros do conteudo é a quantidade de possoas que responderam 4 na questao 1 sabe...?Como que eu vou fazer isso hein?To pensando aqui e einda naum consegui uma forma facil de fazer isso..

O quadro você faz na "mãozona"...tipo... abre o dreamweaver, ou qualquer outro editor que queira, é faz a tabela...linha - q1, q2, q3 ... q40coluna - op1, op2, op3, op4, op0Bem... faz como quiser...Agora pra inserir a quantidade de vezes, faz como falei no outro post...guarda a quantidade de vezes, por ex, que op1 aparece em q1 (hum... variável q_q1)Aí na hora do display... taca na tabela lá <%= q_q1 %>É isso que você quer né?
exatamente isso.. pelo menos nesta etapa.. mais para isso eu vou ter que fazer algo como:if rs("q1") = "4"{ q1_4= q1_4 +1}else if rs("q1") = "3" { q1_3 = q1_3 + 1 } else if rs("q1") = "2" { q1_2= q1_2 +1 } else if rs("q1") = "1" { q1_1= q1_1 + 1 } else if rs("q1") = 1 { q1_1= q1_1 + 1 } else q1_0 = q1_0 +1É isso que eu tenho que fazer naum é?.. só que eu vou ter que fazer isso para cada questão né?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você vai usar radio button?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você vai usar radio button?

tipo as questoes de q1 ate q40 sao em radio buttom. Eles armazenam (4 para concordo), (3 para Concordo Parcialmente), (2 para discordo Parcialmente), (1 para discordo) e (0 para nao se aplica).Por isso depois no meu relatorio eu tenho que expor quantas pessoas votaram 4 para q1, 3 para q1, 2 para q1 e assim por diante...

Compartilhar este post


Link para o post
Compartilhar em outros sites

só mais uma perguntinha antes de te ajudar valendo...no seu bd você armazena as respostass individuamente ou faz um update para cada resposta?

Compartilhar este post


Link para o post
Compartilhar em outros sites

só mais uma perguntinha antes de te ajudar valendo...no seu bd você armazena as respostass individuamente ou faz um update para cada resposta?

la no BD é assim a estrutura,turno,area,setor,q1,q1,q3,q4.....,q40ai eu do um insert into quando a pessoa termina de fazer o cadastro de da um submit ele insere tudo la.. ai fica 1 turno, Producao, Tecnico, 4, 4, 2, 0, 1, 1, 1, 4 ...... ate o fiinal.. este numeros representa aquilo que eu te disse no post anterior.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara ta horrivel mas...

 

[tr][/tr][tr][/tr]
ASP

<%

Dim Questao(39)

 

FOR I = 0 TO 39

Questao(I) = "q" & I + 1

NEXT

 

set rsQuestao = Server.CreateObject("ADODB.Recordset")

rsQuestao.ActiveConnection = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="& Server.MapPath("db3.mdb")

rsQuestao.CursorType = 2

rsQuestao.CursorLocation = 2

rsQuestao.LockType = 2

%>

<html>

<body>

<div align="center">

<center>

<table border="1" cellpadding="0" cellspacing="0" bordercolor="#9DB9C8">

<tr>

<td align="center"><b><font color="#000080" size="2">QUESTÃO</font></b></td>

<td align="center"><b><font color="#000080" size="2">NÃO SE APLICA</font></b></td>

<td align="center"><b><font color="#000080" size="2">DISCORDO </font></b></td>

<td align="center"><b><font color="#000080" size="2">DISCORDO PARCIALMENTE</font></b></td>

<td align="center"><b><font color="#000080" size="2">CONCORDO PARCIALMENTE</font></b></td>

<td align="center"><b><font color="#000080" size="2">CONCORDO</font></b></td>

</tr>

<%

FOR I = LBOUND(Questao) TO UBOUND(Questao)

%>

<tr>

<td><font size="1" face="Tahoma" color="#000080"><%=Questao(I)%></font></td>

<%

FOR J = 0 TO 4

STRSQL = "SELECT COUNT(" & Questao(I) & ") AS Total FROM Teste WHERE " & Questao(I) & " = " & J

rsQuestao.Source = STRSQL

rsQuestao.Open()

%>

<td><font size="1" face="Tahoma" color="#000080"><%=rsQuestao("Total")%></font></td>

<%

rsQuestao.Close()

NEXT

%>

</tr>

<%

NEXT

 

SET rsQuestao = nothing

%>

 

</table>

</center>

</div>

</body>

</html>

 

Se tivesse normalizado melhor seu banco dava pra melhorar mais ainda

Compartilhar este post


Link para o post
Compartilhar em outros sites

VLW mesmoo.. eu vou testar aqui pra ver se funciona.. mais so uma ultima pergunta.....Oq eu deveria ter feito para normalizar mais meu BD?você poderia me dar algumas dicas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

posta ai o erro que você mando via MP para compartilhar com o pessoal que está te ajudando...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom.. o código está ai:

 

<%

FOR I = LBOUND(Questao) TO UBOUND(Questao)

%>

<tr>

<td><font size="1" face="Tahoma" color="#000080"><%=Questao(I)%></font></td>

<%

FOR J = 4 TO 0 step -1

STRSQL = "SELECT COUNT(" & Questao(I) & ") AS Total FROM tb_satisfacao WHERE " & Questao(I) & " = " & J

 

rsQuestao.Open STRSQL, objConn

 

if J = 4 then

soma_a = soma_a + rsQuestao("Total")

else if J = 3 then

soma_b = soma_b + rsQuestao("Total")

else if J = 2 then

soma_c = soma_c + rsQuestao("Total")

else if J = 1 then

soma_d = soma_d + rsQuestao("Total")

else if J = 0 then

soma_e = soma_e + rsQuestao("Total")

 

%>

<td><font size="1" face="Tahoma" color="#000080"><%=rsQuestao("Total")%></font></td>

<%

rsQuestao.Close

NEXT

%>

</tr>

<%

NEXT

 

SET rsQuestao = nothing

%>

 

Oq acontece é o seguinte.. se eu tirar estes IF ais que eu fiz.. funciona beleza.. O problema é que eu precisava somar as colunas... e depois as linhas tb...So que eu sou muito oreia... Eu fiz meu BD so com String.. ai naum consigo usar query como AVG soma e etc..... Será que da para mudar para integer sem perder os dados?

 

o erro é o seguinte:

 

Microsoft VBScript compilation error '800a041f'

 

Unexpected 'Next'

 

/10026/check.asp, line 913

 

next

^

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara acredito que esteja faltando fechar o IF, por isso ele não espera o NEXT

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.