Grazie mille a tutti per i vostri interventi. Posto qui sotto la soluzione funzionante che ho adottato:
codice:
Private Sub Form_Load()
Dim SQL As String
Dim Tot_Richieste As Integer
Dim Rs As New ADODB.Recordset
Dim CloneRs As New ADODB.Recordset
ApriDB
SQL = "SELECT COUNT(*) AS Conta" & _
" FROM Tbl_Richieste"
Rs.Open SQL, Cn, adOpenKeyset, adLockOptimistic
Tot_Richieste = Rs("Conta")
If Not Rs.EOF And Not Rs.BOF Then
Me.Label1.Caption = "Numero totale di richieste pervenute fino ad oggi: " & Tot_Richieste
Me.Label1.AutoSize = True
End If
Rs.Close
'Tipo Immobile
SQL = "SELECT tipo_immobile, COUNT(*) AS Conta" & _
" FROM Tbl_Richieste,Tbl_Tipo_Immobile" & _
" WHERE Tbl_Richieste.ID_Tipo_Immobile=Tbl_Tipo_Immobile.ID_Tipo_Immobile" & _
" GROUP BY tipo_immobile"
Rs.Open SQL, Cn, adOpenKeyset, adLockOptimistic
Set CloneRs = Rs.Clone
If Not Rs.EOF And Not Rs.BOF Then
With MSChart1
Set .DataSource = Rs
.FootnoteText = "Tipologia Immobile:"
.Width = 9000
.Height = 5700
.Top = 1100
.Left = 480
End With
End If
Me.txt_Statistiche_Tipo_Immobile.Top = 6840
Me.txt_Statistiche_Tipo_Immobile = Calcola_Percentuali(CloneRs, Tot_Richieste)
Set CloneRs = Nothing
Rs.Close
'Tipo Edificio
SQL = "SELECT tipo_edificio, COUNT(*) AS Conta" & _
" FROM Tbl_Richieste,Tbl_Tipo_Edificio" & _
" WHERE Tbl_Richieste.ID_Tipo_Edificio =Tbl_Tipo_Edificio.ID_Tipo_Edificio" & _
" GROUP BY tipo_edificio"
Rs.Open SQL, Cn, adOpenKeyset, adLockOptimistic
Set CloneRs = Rs.Clone
If Not Rs.EOF And Not Rs.BOF Then
With MSChart2
Set .DataSource = Rs
.FootnoteText = "Tipologia Edificio"
.Width = 9000
.Height = 5700
.Top = 1100
.Left = 480
End With
End If
Me.txt_Statistiche_Tipo_Edificio.Top = 6840
Me.txt_Statistiche_Tipo_Edificio = Calcola_Percentuali(CloneRs, Tot_Richieste)
Set CloneRs = Nothing
Rs.Close
'Stato Immobile
SQL = "SELECT stato_immobile, COUNT(*)AS Conta" & _
" FROM Tbl_Richieste, Tbl_Stato_Immobile" & _
" WHERE Tbl_Richieste.ID_Stato_Immobile=Tbl_Stato_Immobile.ID_Stato_Immobile" & _
" GROUP BY stato_immobile"
Rs.Open SQL, Cn, adOpenKeyset, adLockOptimistic
Set CloneRs = Rs.Clone
If Not Rs.EOF And Not Rs.BOF Then
With MSChart3
Set .DataSource = Rs
.FootnoteText = "Stato Immobile: "
.Width = 9000
.Height = 5700
.Top = 1100
.Left = 480
End With
End If
Me.txt_Statistiche_stato_immobile.Top = 6840
Me.txt_Statistiche_stato_immobile = Calcola_Percentuali(CloneRs, Tot_Richieste)
Set CloneRs = Nothing
Rs.Close
'Localita
SQL = "SELECT Comune, COUNT(*) AS Conta" & _
" FROM Tbl_Richieste, Tbl_Localita" & _
" WHERE Tbl_Richieste.ID_Localita=Tbl_Localita.ID_Localita" & _
" GROUP BY Comune"
Rs.Open SQL, Cn, adOpenKeyset, adLockOptimistic
Set CloneRs = Rs.Clone
If Not Rs.EOF And Not Rs.BOF Then
With MSChart4
Set .DataSource = Rs
.FootnoteText = "Località: "
.Width = 9000
.Height = 5700
.Top = 1100
.Left = 480
End With
End If
Me.txt_Statistiche_localita.Top = 6840
Me.txt_Statistiche_localita = Calcola_Percentuali(CloneRs, Tot_Richieste)
Set CloneRs = Nothing
Rs.Close
Set Rs = Nothing
ChiudiDB
End Sub
Private Sub op_grafico_Click(Index As Integer)
Select Case Index
Case 0
Me.MSChart1.Visible = True
Me.MSChart2.Visible = False
Me.MSChart3.Visible = False
Me.MSChart4.Visible = False
Me.txt_Statistiche_Tipo_Immobile.Visible = True
Me.txt_Statistiche_Tipo_Edificio.Visible = False
Me.txt_Statistiche_stato_immobile.Visible = False
Me.txt_Statistiche_localita.Visible = False
Case 1
Me.MSChart1.Visible = False
Me.MSChart2.Visible = True
Me.MSChart3.Visible = False
Me.MSChart4.Visible = False
Me.txt_Statistiche_Tipo_Immobile.Visible = False
Me.txt_Statistiche_Tipo_Edificio.Visible = True
Me.txt_Statistiche_stato_immobile.Visible = False
Me.txt_Statistiche_localita.Visible = False
Case 2
Me.MSChart1.Visible = False
Me.MSChart2.Visible = False
Me.MSChart3.Visible = True
Me.MSChart4.Visible = False
Me.txt_Statistiche_Tipo_Immobile.Visible = False
Me.txt_Statistiche_Tipo_Edificio.Visible = False
Me.txt_Statistiche_stato_immobile.Visible = True
Me.txt_Statistiche_localita.Visible = False
Case 3
Me.MSChart1.Visible = False
Me.MSChart2.Visible = False
Me.MSChart3.Visible = False
Me.MSChart4.Visible = True
Me.txt_Statistiche_Tipo_Immobile.Visible = False
Me.txt_Statistiche_Tipo_Edificio.Visible = False
Me.txt_Statistiche_stato_immobile.Visible = False
Me.txt_Statistiche_localita.Visible = True
End Select
End Sub
Function Calcola_Percentuali(ByVal objRS As ADODB.Recordset, Tot_Richieste) As String
Dim VALORE
Dim Nome As String
Dim str_temp As String
If Not objRS.EOF And Not objRS.BOF Then
Do While Not objRS.EOF
VALORE = FormatPercent(objRS("Conta") / Tot_Richieste)
Nome = objRS(0)
str_tmp = str_tmp & Nome & "=" & VALORE & ";" & vbCrLf
objRS.MoveNext
Loop
End If
Calcola_Percentuali = str_tmp
End Function