Πάρτε στατιστικές πληροφορίες από μία Access database


Σε εφαρμογές Βάσεων δεδομένων η στατιστική πληροφόρηση είναι απαραίτητη. Χρησιμοποιώντας το αντικείμενο OleDBCommand και τη μέθοδο ExecuteScalar, σε συνδυασμό με τη σωστή πρόταση SQL, μπορείτε να πάρετε την ποσοτική πληροφορία που θέλετε. Η μέθοδος επιστρέφει μία γραμμή και μία στήλη που περιέχει τον ζητούμενο αριθμό (άθροισμα, πλήθος, μέσος όρος, μέγιστο, ελάχιστο).

Για ομαδοποιήσεις στοιχείων (πχ. μέσος όρος βαθμολογίας ανά τάξη) η μέθοδος δεν είναι κατάλληλη. Αντίθετα, χρησιμοποιούμε κανονικά ένα OleDbDataAdapter που θα φέρει, σε ένα DataSet, το ζητούμενο στατιστικό σύνολο εγγραφών.

Στο παρακάτω παράδειγμα, τα δύο πρώτα Textboxes γεμίζουν με την πληροφορία που έρχεται από τη μέθοδο ExecuteScalar. Το Datagrid, αντίθετα, γεμίζει από το σύνολο εγγραφών που θα επιστρέψει η "στατιστική" πρόταση SQL ενός OleDBDataAdapter (ιδιότητα SelectCommand).

http://users.sch.gr/mouratx/VB-NET_Tips/DataManagement/Images/Statistics.gif

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, το στατιστικό ερώτημα που σχεδιάζετε.

 

·         Χρήστος Μουρατίδης