
23-05-10, 10:36
|
 | Super Moderator Όνομα: Γιάννης Έκδοση λογισμικού Office: Ms-Office 2007 Γλώσσα λογισμικού Office: Ελληνική, Αγγλική | | Εγγραφή: 12-10-2009 Περιοχή: Ηγουμενίτσα
Μηνύματα: 161
| |
Καλημέρα σε όλους!
Με την ευκαιρία, να θυμίσω μια χρήσιμη για την περίπτωσή μας
και πολύ ευέλικτη μέθοδο του αντικειμένου ADODB.Recordset:
Τη μέθοδο GetString η οποία φαίνεται στο παρακάτω παράδειγμα: (απαιτείται η αναφορά σε μια διαθέσιμη βιβλιοθήκη Microsoft AxtiveX Data Objects) Κώδικας: Function ConcatenateField( _
cnn As ADODB.Connection, _
strTable As String, _
strField As String, _
Optional strListSeparator = ";") As String
Dim strTemp As String
Dim rst As ADODB.Recordset
On Error GoTo ExitHere
If cnn.State = 1 Then
Set rst = New ADODB.Recordset
With rst
.Open "Select [" & strField & "] " _
& "From [" & strTable & "] " _
& "Where [" & strField & "] Is Not Null", _
cnn, adOpenDynamic, adLockReadOnly
If Not (.EOF And .BOF) Then
strTemp = .GetString(, , , strListSeparator)
If Len(strTemp) > 1 Then
strTemp = Left$(strTemp, Len(strTemp) - 1)
ConcatenateField = strTemp
End If
End If
.Close
End With
End If
ExitHere:
Set rst = Nothing
End Function
Η παραπάνω συνάρτηση, θα μας φανεί πολύ χρήσιμη σε περιπτώσεις όπως το γέμισμα
ενός χειριστηρίου λίστας με τα περιεχόμενα ενός πεδίου πίνακα.
Για παράδειγμα: Κώδικας: Private Sub Form_Load()
Me.cboMyProducts.RowSource = ConcatenateField( _
CurrentProject.Connection, "tblProducts", "fldProductName")
End Sub
Όπως πιθανότατα καταλάβατε, το όρισμα cnn, μπορεί να "βλέπει" σε οποιαδήποτε
προσπελάσιμη από την εφαρμογή μας βάση δεδομένων.
Τα λέμε!
Γιάννης
__________________ Αν δεν το ρωτούσες, δεν θα το μαθαίναμε ποτέ...! 
----------------------------------------------- Τελικά η γνώση, αντίθετα με ό,τι μέχρι σήμερα πίστευα, είναι η φυλακή της σκέψης.
Όταν η αφετηρία είναι η ελεύθερη σκέψη, δεν χρειάζεται πλέον να φτάσεις πουθενά!
Τελευταία επεξεργασία από το χρήστη nisgia : 23-05-10 στις 10:53.
|