Εμφάνιση ενός μόνο μηνύματος
  #6  
Παλιά 07-09-10, 18:53
Το avatar του χρήστη Tasos
Tasos Ο χρήστης Tasos δεν είναι συνδεδεμένος
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Γιάννη καλησπέρα!

Δεν μπορείς μέσω SQL να προσθαφαιρείς πεδία σε ερώτημα επιλογής και μάλιστα με κριτήρια.

Ίσως χρειαστεί να επανασχεδιάσεις τη δομή των πινάκων σου έτσι που να μη χρειάζεται
να μεταβάλλονται τα ονόματα πεδίων από το χρήστη(!!!)

Αν δεν υπάρχει κάποια διαφορετική προσέγγιση από μέρους σου, προτείνω τον παρακάτω κώδικα VBA που δημιουργεί το ερώτημα εκ νέου σε κάθε του εκτέλεση:

Κώδικας:
Function Create_Query(TableName As String, QueryName As String, SearchLetters As String)
    WizHook.Key = 51488399
    Dim MyFields, strSQL As String, i As Integer, tbl As String, _
            DynQry As QueryDef, x As String
    MyFields = WizHook.GetColumns(TableName)
    TableName = "[" & TableName & "]"
    MyFields = Split(MyFields, ";")

    For i = 0 To UBound(MyFields) - 1
        If MyFields(i) Like SearchLetters Then strSQL = strSQL & TableName & ".[" & MyFields(i) & "], "
    Next

    If InStr(1, strSQL, "]") Then
        strSQL = Left(strSQL, Len(strSQL) - 2)
        strSQL = "SELECT " & strSQL & " FROM " & TableName
        On Error Resume Next
        x = CurrentDb.QueryDefs(QueryName).Name
        If Err <> 0 Then Err.Clear
        If x <> vbNullString Then DoCmd.DeleteObject acQuery, QueryName
        If Err = "2008" Then
            Err.Clear
            DoCmd.Close acQuery, QueryName, acSaveNo
            DoCmd.DeleteObject acQuery, QueryName
        End If
        On Error GoTo ErrH
        Set DynQry = CurrentDb.CreateQueryDef(QueryName, strSQL)
    'DoCmd.OpenQuery QueryName
    Else
ErrH:
        MsgBox "Can not create the Query!" & IIf(Err <> 0, vbLf & "Error number: " & Err & _
                vbLf & "Error Description : " & Err.Description, vbNullString), vbExclamation
    End If
End Function

Sub test()
    Create_Query "Table1", "Query1", "a*"
End Sub 
Αν χρειαστείς κάτι, ...εδώ είμαστε!


"Table1" = Το όνομα του πίνακα με τα πεδία α1,α2 κτλ.
"Query1" = Το όνομα του ερωτήματος που θα δημιουργηθεί.
"a*" = Το γράμμα ή τα γραμματα που αποτελούν το κριτήριο. (
"*ast" , "*a*" , "a*" κτλ.)

Καλή συνέχεια!

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών

Τελευταία επεξεργασία από το χρήστη Tasos : 09-09-10 στις 09:37.
Απάντηση με παράθεση