[risolto] Asp e Google chart

  • Creatore Discussione Creatore Discussione GoG
  • Data di inizio Data di inizio

GoG

Nuovo Utente
5 Dic 2014
11
0
1
Salve , avrei la necessità di creare dei grafici e stavo pensando di usare google chart estrapolando i dati dal db.
ho però un problema, i dati che ottengo dal recordset li ho in questo modo:

dato1
dato2
dato3
datoN

mi servirebbe invece ottenere i dati in questo modo:

dato1, dato2, dato3, datoN

ed onestamente non sto pensando a nulla che mi possa far risolvere il problema..

Praticamente ho fatto delle prove in questo modo:

Codice:
<script type="text/javascript">
google.load("visualization", "1.1", {packages:["corechart"]});
      google.setOnLoadCallback(drawChart);
      function drawChart() {
        var data = google.visualization.arrayToDataTable([
          ['ditta', 'totale'],
          <% While (NOT RStotale.EOF) %>
          ['<%=RStotale.Fields.Item("ditta").Value%>',  <%=RStotale.Fields.Item("totale").value%>],
<%
RStotale.MoveNext()
Wend
If (RStotale.CursorType > 0) Then
RStotale.MoveFirst
Else
RStotale.Requery
End If
%>

ma ottengo appunto questo html:

Codice:
che mi tira fuori questi dati:
codice:

<script type="text/javascript">
google.load("visualization", "1.1", {packages:["corechart"]});
      google.setOnLoadCallback(drawChart);
      function drawChart() {
        var data = google.visualization.arrayToDataTable([
          ['ditta', 'totale'],
          
          ['ditta 1',  158000],

          ['ditta 3',  10000],

        ]);

        var options = {
          title: 'Fatturato per ditte',
          pointSize: 10 ,
            series: {
                0: { pointShape: { type: 'star', sides: 4 ,dent: 0.2 }},
                1: { pointShape: 'circle' }
            }
        };

        var chart = new google.visualization.LineChart(document.getElementById('chart_div'));

        chart.draw(data, options);
      }
</script>

il problema è che io vorrei invece ottenere i dati in questo modo:

Codice:
          ['ditta 1', 'ditta 2', ditta 3, dittaN],
          
          ['1000',  1200, 1500, 1000],

          ['2000',  2200m   2400, 2000],

dove i valori numerici sarebbero RStotale.totale e ditta 1 -N RStotale.ditta

appunto:

Codice:
  ['ditta', 'totale'],
          <% While (NOT RStotale.EOF) %>
          ['<%=RStotale.Fields.Item("ditta").Value%>',  <%=RStotale.Fields.Item("totale").value%>],
E' fattibile?

Grazie a tutti per eventuali risposte.
 
...mha, se vuoi provare a mandarmi una copia del DB ridotto con qualche decina di record, potrei lavorarci su ed inventare qualcosa :) [rimosso]
 
Ultima modifica:
...mha, se vuoi provare a mandarmi una copia del DB ridotto con qualche decina di record, potrei lavorarci su ed inventare qualcosa :) ****

Grazie per l'aiuto, ti ho appena mandato il tutto da [rimosso]
 
Ultima modifica di un moderatore:
Ok, scaricato, domande:
Il valore RStotale.Fields.Item("ditta").Value lo prelevi dalla tabella ditte, campo ditte?
Il valore RStotale.Fields.Item("totale").value da dove lo prelevi?
 
Ok, scaricato, domande:
Il valore RStotale.Fields.Item("ditta").Value lo prelevi dalla tabella ditte, campo ditte?
Il valore RStotale.Fields.Item("totale").value da dove lo prelevi?

No , sia ditta che Totale li prelevo da questa select:

RStotale.Source = " SELECT ditta, Sum(importo) AS totale FROM fatturato GROUP BY ditta order by ditta "
 
prova questo codice:
Codice:
<%

'******************************************
'*** 	      Microsoft Access         ****
'******************************************

' connessione al DB access
	Dim Connect
		Connect = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("cms.mdb")

				
								Set conn = Server.CreateObject("ADODB.Connection")
								Set rst = Server.CreateObject("ADODB.Recordset")
									conn.open  Connect
									criterio = "SELECT ditta, Sum(importo) AS totale FROM fatturato GROUP BY ditta order by ditta"
									rst.Open criterio, conn, adOpenKeyset
															
									If NOT rst.EOF Then ' se presente visualizzo
							
										TOTALE = "["
										DITTA = "["
										rst_Min = 0
										rst_Max = 9999 ' massimo record estrapolati
																					
											While ((rst_Min <> rst_Max) AND (NOT rst.EOF))
											
												TOTALE = TOTALE&"'"&(rst.Fields.Item("totale").Value)&"', "
												DITTA = DITTA&"'"&(rst.Fields.Item("ditta").Value)&"', "

												rst_Min = rst_Min + 1
												rst.MoveNext()
											Wend
										
										TOTALE = TOTALE&"]"
										DITTA = DITTA&"]"

									' stampo il risultato ditta
										response.Write "<br />"
										response.Write DITTA
										response.Write "<br />"
										response.Write TOTALE
																		
									End If 
								
										rst.Close
									Set rst = Nothing 

%>

questo è il risultato: http://www.caprioli.info/FITNESS/script/chart/

Paolo
 
Grazie Paolo, praticamente non so per quale motivo (sono un autodidatta) , credevo che il ciclo con movenext si poteva usare solo per ottenere dati a discesa

record1
record2
recordN

guardando il tuo codice ho capito che invece posso gestirlo come meglio credo ...
grazie tante..

ho fatto una prova al volo così:
Codice:
<% While (NOT RS.EOF) %>
<%=RS("ditta")%> ,
<% 
RS.movenext()
Wend%>
e appunto ottenevo i record affiancati.
Grazie per l'aiuto!!
 

Discussioni simili