| Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
![]() |
| | Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
| |
|
#1
| |||
| |||
|
Καλησπέρα σε όλους! Μια απορία: Σε ερώτημα sql χρησιμοποιώ την εντολή: SELECT * FROM myTable για να εμφανίσω όλα τα πεδία του πίνακα. Υπάρχει δυνατότητα να εμφανίσω μόνο τα πεδία που το όνομά τους (όχι το περιεχόμενο) αρχίζει από "a"? Δηλαδή μια εντολή του τύπου SELECT a* , SELECT a% ; |
|
#2
| |||
| |||
|
SELECT * FROM MYTABLE WHERE ((onomapediou1.MYTABLE) LIKE *a) and ((onomapediou2.MYTABLE) LIKE *b) klp klp klp
|
|
#3
| |||
| |||
|
Ευχαριστώ για την απάντηση! Δεν την πολυκατάλαβα όμως... Μάλλον δεν είναι αυτό που ζητάω: Ο πίνακας MYTABLE έχει τα πεδία a1, a2, a3, a4, e1,e2,e3,e4. Πως θα γίνει το ερώτημα με τη select για να εμφανισθούν μόνο τα πεδια a1,a2,a3,a4? ΥΓ: Δεν το κάνω ως απλό ερώτημα γιατί τα πεδία του πίνακα σίγουρα ξεκινούν απο "a" αλλά δεν είναι σίγουρα τα υπόλοιπα ψηφία. Μπορεί να είναι πχ a24... ( Τα πεδία του πίνακα μεταβάλλονται από το χρήστη αλλά σίγουρα ξεκινάνε από "a") |
|
#4
| |||
| |||
|
select mytable.a1, mytable.a2, mytable.a3, mytable.a4,from mytable where ((a2.mytable) like b*) Το παραπάνω θα σου επιστρέψει τα πεδία a1,a2,a3,a4 ως στήλες εαν το περιεχόμενο του a2 ξεκινάει απο b Φιλικά, Άγγελος |
|
#5
| |||
| |||
|
Δεν είναι αυτό που ζητάω Άγγελε! Μάλλον πάλι δεν έκανα σωστά την ερώτηση: Δεν με ενδιαφέρει το περιεχόμενο αλλά το όνομα των πεδίων Με τη select mytable.a1, mytable.a2, mytable.a3, mytable.a4 θα πάρω σωστά αποτελέσματα αλλά δεν ξέρω το ακριβές όνομα των πεδίων για το προκαθορίσω! Ξέρω μόνο ότι ξεκινάνε από a!!! χρειάζομαι κάτι σαν select mytable.a* για να "πιάσω" όλες τα δυνατά ονόματα: a1,a2,a20 κλπ |
|
#6
| ||||
| ||||
|
Γιάννη καλησπέρα! Δεν μπορείς μέσω 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. |
|
#7
| |||
| |||
|
Μάλλον λάθος κατάλαβα εγώ... Η λύση που σου πρότεινε ο Τάσος ίσως σε καλύψει... Προσωπικά δεν μπορώ να σε βοηθήσω, αν και είμαι περίεργος γιατί χρειάζεσαι κάτι τέτοιο... Πως γίνεται να μην ξέρεις τα πεδία του πίνακά σου? Μήπως η σχεδίασή σου, όπως είπε και ο Τάσος δεν είναι σωστή? Φιλικά, Άγγελος |
|
#8
| |||
| |||
|
Καλησπέρα Τάσο! Αν και "ζαλίστηκα" προσπαθώντας να "ερμηνεύσω" τον κώδικά σου, θα κοιτάξω να τον υλοποιήσω! Φίλε Άγγελε, Ο πίνακας θα δημιουργείται από διαφορετικά excel και γι αυτό δεν είναι σταθερό το όνομα των πεδίων... προσπαθώ να είναι όσο το δυνατόν παραμετροποιημένη η δημιουργία του! Ευχαριστώ για τη βοήθεια!!! |
|
#9
| |||
| |||
|
Τάσος THE Best! Δουλεύει άψογα! Κάτι τέτοιο είχα στο μυαλό μου!!!! ![]() ![]() ![]() Ελπίζω να καταφέρω και τα υπόλοιπα που έχω στο μυαλό μου! ![]() Ευχαριστώ και πάλι!! |
|
#10
| ||||
| ||||
|
Καλημέρα σε όλους! Το ίδιο "τραγούδι" αλλά σε λίγο διαφορετική εκτέλεση: ![]() Κώδικας: Function GetFlexQuery(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
On Error Resume Next
Set flds = CurrentDb.TableDefs(TableName).OpenRecordset.Fields
If Not flds Is Nothing Then
strSQL = strSQL & "SELECT [" & flds(0).Name & "]"
If Len(Pattern) Then
For Each fld In flds
If fld.Name Like Pattern Then
strSQL = strSQL & ", [" & fld.Name & "]"
End If
Next fld
End If
strSQL = strSQL & " FROM [" & TableName & "]"
Debug.Print strSQL
If Len(QueryName) Then
With DoCmd
.Close acQuery, QueryName, acSaveNo
.DeleteObject acQuery, QueryName
CurrentDb.CreateQueryDef QueryName, strSQL
Debug.Print "QueryDef """ & QueryName & """ created!"
Application.RefreshDatabaseWindow
'.OpenQuery QueryName
End With
End If
Set GetFlexQuery = CurrentDb.OpenRecordset(strSQL)
End If
End Function
Sub TestFlexQuery()
GetFlexQuery "Table1", "Query1", "a*"
Debug.Print GetFlexQuery("Table1", , "b*").Fields.Count
End Sub
![]() Τα λέμε! Γιάννης
__________________ Αν δεν το ρωτούσες, δεν θα το μαθαίναμε ποτέ...! ![]() ----------------------------------------------- Τελικά η γνώση, αντίθετα με ό,τι μέχρι σήμερα πίστευα, είναι η φυλακή της σκέψης. Όταν η αφετηρία είναι η ελεύθερη σκέψη, δεν χρειάζεται πλέον να φτάσεις πουθενά! |
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| Εργαλεία Θεμάτων | |
| Τρόποι εμφάνισης | |
| |
| ||||
| Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
| DelayTime σε εντολή | γιώργοςΚ | Access - Ερωτήσεις / Απαντήσεις | 7 | 05-07-16 20:44 |
| Εντολή Select All | γιώργοςΚ | Access - Ερωτήσεις / Απαντήσεις | 5 | 23-03-16 15:25 |
| Πρόβλημα με κώδικα Select Case Yes/No | γιώργοςΚ | Access - Ερωτήσεις / Απαντήσεις | 3 | 15-01-15 12:05 |
| [ Ερωτήματα ] Βοήθεια σε ερώτημα SQL (SELECT , WHERE) | parara | Access - Ερωτήσεις / Απαντήσεις | 3 | 30-01-14 23:11 |
Η ώρα είναι 11:22.







Υβριδικός τρόπος

