Πάρτε στατιστικές πληροφορίες από μία Access database
Σε εφαρμογές
Βάσεων δεδομένων η στατιστική πληροφόρηση είναι απαραίτητη. Χρησιμοποιώντας το
αντικείμενο OleDBCommand και τη μέθοδο ExecuteScalar, σε συνδυασμό με τη σωστή πρόταση SQL,
μπορείτε να πάρετε την ποσοτική πληροφορία που θέλετε. Η μέθοδος επιστρέφει μία
γραμμή και μία στήλη που περιέχει τον ζητούμενο αριθμό (άθροισμα, πλήθος, μέσος
όρος, μέγιστο, ελάχιστο).
Για
ομαδοποιήσεις στοιχείων (πχ. μέσος όρος βαθμολογίας ανά τάξη) η μέθοδος δεν
είναι κατάλληλη. Αντίθετα, χρησιμοποιούμε κανονικά ένα OleDbDataAdapter
που θα φέρει, σε ένα DataSet, το ζητούμενο στατιστικό
σύνολο εγγραφών.
Στο παρακάτω
παράδειγμα, τα δύο πρώτα Textboxes γεμίζουν με την
πληροφορία που έρχεται από τη μέθοδο ExecuteScalar.
Το Datagrid, αντίθετα, γεμίζει από το σύνολο εγγραφών
που θα επιστρέψει η "στατιστική" πρόταση SQL ενός OleDBDataAdapter
(ιδιότητα SelectCommand).
Imports System.Data.OleDb
Dim strConn$ = "Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=ΜΑΘΗΤΕΣ.MDB"
Dim objConn As OleDbConnection
Dim cmdStatistic As OleDbCommand
Dim daMaxAnaTaxi As OleDbDataAdapter
Dim dsMaxAnaTaxi As DataSet
'----------------------------------------------------------------------
Private Sub frmStatistics_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles
MyBase.Load
Try
'Σύνδεση με τη ΒΔ.
objConn = New OleDbConnection(strConn)
Catch ex As Exception
MsgBox("Πρόβλημα σύνδεσης" & vbCrLf
& ex.Message)
Me.Close()
End Try
End Sub
'----------------------------------------------------------------
'Πάρε τις στατιστικές πληροφορίες όταν πατηθεί το button Στατιστικά.
Private Sub btnGetStatistics_Click(ByVal sender As System.Object,_
ByVal e As System.EventArgs) _
Handles btnGetStatistics.Click
Dim strSQL$
objConn.Open()
If objConn.State = ConnectionState.Open Then
'Σύνολο μαθητών.
strSQL =
"Select Count(ID) as Synolo from ΜΑΘΗΤΕΣ"
cmdStatistic = New OleDbCommand(strSQL, objConn)
txtGenikoSynolo.Text = cmdStatistic.ExecuteScalar
cmdStatistic.Dispose()
'Μέσος όρος βαθμολογίας των μαθητών του A1.
strSQL = "Select Avg(ΒΑΘΜΟΣ) as Mesos from ΜΑΘΗΤΕΣ
where ΤΑΞΗ='Α1' and ΔΙΕΚΟΨΕ=false"
cmdStatistic = New OleDbCommand(strSQL, objConn)
txtMesos.Text = Format(cmdStatistic.ExecuteScalar,
"##.##")
cmdStatistic.Dispose()
'Μέγιστος βαθμός ανά τάξη.
strSQL = "Select ΤΑΞΗ, Max(ΒΑΘΜΟΣ) as Μεγαλύτερος
from ΜΑΘΗΤΕΣ
Group by ΤΑΞΗ order by ΤΑΞΗ"
daMaxAnaTaxi = New OleDbDataAdapter()
dsMaxAnaTaxi = New DataSet()
cmdStatistic = New OleDbCommand(strSQL, objConn)
daMaxAnaTaxi.SelectCommand = cmdStatistic
daMaxAnaTaxi.Fill(dsMaxAnaTaxi,
"MaxAnaTaxi")
'Σύνδεση με το Datagrid κι εμφάνιση αποτελέσματος.
DataGrid1.SetDataBinding(dsMaxAnaTaxi, "MaxAnaTaxi")
'Καθάρισμα.
cmdStatistic.Dispose()
dsMaxAnaTaxi.Dispose()
daMaxAnaTaxi.Dispose()
End If
objConn.Close()
End Sub
Άλλες χρήσιμες
στατιστικές συναρτήσεις είναι οι Sum() , Min(). Σε κάθε περίπτωση, θα πρέπει να προσδιορίσετε σωστά
την πρόταση SQL η οποία θα "αντλήσει" τις πληροφορίες από τη Βάση.
Για βοήθεια, μπορείτε να χρησιμοποιήσετε τον Query Designer της Access για να δείτε, σε προβολή SQL, το
στατιστικό ερώτημα που σχεδιάζετε.
·
Χρήστος
Μουρατίδης