Καλημέρα σε όλους!
Με την ευκαιρία, να θυμίσω μια χρήσιμη για την περίπτωσή μας
και πολύ ευέλικτη μέθοδο του αντικειμένου 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, μπορεί να "βλέπει" σε οποιαδήποτε
προσπελάσιμη από την εφαρμογή μας βάση δεδομένων.
Τα λέμε!
Γιάννης