Καλησπέρα!
Τάσο μου, όσον αφορά την πρώτη παρατήρηση, έχεις εν μέρει δίκιο αλλά το ότι δεν ανοίγουμε εμείς ρητά το Recordset
αυτό δεν σημαίνει πως δεν το κάνει και η μέθοδος του WizHook.
Αλλά ακόμη κι αν δεν το κάνει, για ποιον λόγο να δώσουμε τον έλεγχο σε μια μη τεκμηριωμένη βιβλιοθήκη
και να χρησιμοποιούμε πίνακες από Variants παιδεύοντας τη
VBA με τη διαστασιολόγησή τους,
όταν μπορούμε να πάρουμε μια μόνο από τις, πιθανώς εκατομμύρια, εγγραφές του πίνακα;
Μήπως τελικά είναι πιο απλό και πιο αποδοτικό αν πούμε απλά και μόνο...
Κώδικας:
Set flds = CurrentDb.OpenRecordset("Select Top 1 * From " & TableName).Fields
...?
Όσο για την δεύτερη, αν και η
VBA είναι μια πολύ ελαστική και βολική γλώσσα στο θέμα της
δημιουργίας και καταστροφής αντικειμένων, ...έχεις απόλυτο δίκιο.

Είναι καλό να κλείνουμε και να καταστρέφουμε ρητά τα αντικείμενα που δημιουργούμε
όμως αυτή η γλώσσα μας έχει κακομάθει λίγο...
Γιώργο, η επιστρεφόμενη τιμή της συνάρτησης καθορίζεται από την εντολή:
Κώδικας:
Set GetFlexQueryEx = rs
οπότε και Variant να ήταν ο τύπος της, πάλι RecordSet θα παίρναμε.
Τι ακριβώς εννοείς όμως με το "διάφορα αποτελέσματα" και το "διάφορες περιπτώσεις"
και πως φαντάζεσαι πως θα μπορούσαμε να τις χειριστούμε;