Εμφάνιση ενός μόνο μηνύματος
  #12  
Παλιά 09-09-10, 14:39
Το avatar του χρήστη nisgia
nisgia Ο χρήστης nisgia δεν είναι συνδεδεμένος
Super Moderator
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 12-10-2009
Περιοχή: Ηγουμενίτσα
Μηνύματα: 161
Προεπιλογή

Καλησπέρα Γιώργο και σ' ευχαριστώ για τα καλά σου λόγια!

Με τις χρήσιμες (όπως πάντα) παρατηρήσεις σου, το "τραγούδι", μου βγήκε λίγο ...HEAVY METAL
όμως ο "στοίχος" του, νομίζω πως έγινε πολύ πιο στιβαρός από τον πρωινό.

Ελπίζω να το απολαύσεις...
Κώδικας:
Function GetFlexQueryEx(TableName As String, _
        Optional QueryName As String, _
        Optional Pattern As String = "*") As Recordset

    Dim strSQL As String
    Dim fld As Field
    Dim flds As Fields
    Dim rs As Recordset

    On Error Resume Next
    Set flds = CurrentDb.TableDefs(TableName).OpenRecordset.Fields

    If flds Is Nothing Then
        MsgBox "TableDef """ & TableName & """ not found!", vbExclamation
    Else
        If Pattern = "*" Then
            strSQL = Pattern
        Else
            For Each fld In flds
                If fld.Name Like Pattern Then
                    strSQL = strSQL & ", [" & fld.Name & "]"
                End If
            Next fld
            strSQL = Mid(strSQL, 2)
        End If

        strSQL = "SELECT " & strSQL & " FROM [" & TableName & "]"
        Debug.Print strSQL
        Set rs = CurrentDb.OpenRecordset(strSQL)

        If Len(QueryName) Then
            DoCmd.Close acQuery, QueryName, acSaveNo
            Err.Clear
            DoCmd.DeleteObject acQuery, QueryName
            If Err = 0 Then
                Debug.Print "QueryDef """ & QueryName & """ deleted!"
            Else
                Err.Clear
            End If
            If rs Is Nothing Then
                MsgBox "No fields found in " & TableName _
                        & " with name like """ & Pattern & """" & vbCrLf _
                        & "Could not create query """ & QueryName & """!", vbExclamation
            Else
                CurrentDb.CreateQueryDef QueryName, strSQL
                If Err = 0 Then
                    Debug.Print "QueryDef """ & QueryName & """ created!"
                Else
                    MsgBox Err.Description, vbExclamation
                    Err.Clear
                End If
                Application.RefreshDatabaseWindow
            End If
        End If
        Set GetFlexQueryEx = rs
    End If
End Function

Sub TestFlexQueryEx()
    GetFlexQueryEx "Table1", "qryAllFields"        'Dimiourgia erwtimatos me ola ta pedia
    'GetFlexQueryEx "Table1", "qryAllFields", " "   'Mono diagrafi tou erwtimatos apo ti basi(an yparxei)
    'GetFlexQueryEx "Table1", "Query1", "a*"        'Dimiourgia erwtimatos me epilegmena pedia
    
    'Xrisi tou synolou egrafwn xwris dimiourgia erwtimatos
    On Error Resume Next
    Debug.Print GetFlexQueryEx("Table1").Fields.Count
End Sub
Το μόνο ζήτημα που μένει λίγο ασαφές, είναι το αν θα πρέπει να διαγράφεται το υπάρχον ερώτημα
όταν δεν υπάρχει πεδίο με όνομα που να ταιριάζει στο υπόδειγμα (Pattern).
Νομίζω όμως πως δεν είναι και τόσο σημαντικό μιας και πρόκειται για διαγραφή ερωτήματος
και όχι πραγματικών δεδομένων.

Φιλικά,
Γιάννης
__________________
Αν δεν το ρωτούσες, δεν θα το μαθαίναμε ποτέ...!
-----------------------------------------------
Τελικά η γνώση, αντίθετα με ό,τι μέχρι σήμερα πίστευα, είναι η φυλακή της σκέψης.
Όταν η αφετηρία είναι η ελεύθερη σκέψη, δεν χρειάζεται πλέον να φτάσεις πουθενά!
Απάντηση με παράθεση