Εμφάνιση ενός μόνο μηνύματος
  #9  
Παλιά 23-05-10, 10:36
Το avatar του χρήστη nisgia
nisgia Ο χρήστης nisgia δεν είναι συνδεδεμένος
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.
Απάντηση με παράθεση