Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
Διαχωρισμός πίνακα
Καλημέρα. Ξέρει κάποιος αν υπάρχει τρόπος να διαχωρίσεις έναν πίνακα σε πολλούς; Δίνω ένα παράδειγμα. Έχω έναν πίνακα με 6000 εγγραφές. Ανά 200 εγγραφές περίπου έχουν κοινό δεδομένο σε ένα πεδίο. Υπάρχει τρόπος να διασπάσω αυτόν τον πίνακα σε πίνακες με βάση αυτό το πεδίο; ΠΕΔΙΑ: ID ONOMA EPONYMO OMOADA Θέλω να σπάσω τον αρχικό πίνακα σε πίνακες με βάση την ομάδα. π.χ. Στο excel θα έκανα μια ταξινόμηση με βάση την ομάδα και με αντιγραφή και επικόλληση θα δημιουργούσα τα αρχεία. Το ερώτημά μου είναι, αν υπάρχει κάποιος αυτοματοποιημένος τρόπος για να το κάνω αυτό. Ευχαριστώ. |
#2
| ||||
| ||||
Καλησπέρα! Μάνο, έστω ότι ο πίνακας ονομάζεται "BigTable" και το πεδίο ομαδοποίησης "OMADA" Ο παρακάτω κώδικας νομίζω ότι θα σε εξυπηρετήσει: Κώδικας: Option Compare Database Option Explicit Sub Test() 'MainTableName = "το όνομα του πίνακα" 'GroupFieldName = "το όνομα του πεδίου ομαδοποίησης" 'OverWriteTables: True για αντικατάσταση πινάκων με το ίδιο όνομα. SplitTable MainTableName:="BigTable", GroupFieldName:="OMADA", OverWriteTables:=True End Sub Function SplitTable(MainTableName As String, _ GroupFieldName As String, _ OverWriteTables As Boolean) Dim dbs As DAO.Database Dim rsTeams As DAO.Recordset Dim strSQL As String Dim AllTables As DAO.TableDefs Dim GroupField As DAO.Field Dim NewTableName As String MainTableName = "[" & MainTableName & "]" GroupFieldName = "[" & GroupFieldName & "]" Set dbs = CurrentDb Set AllTables = dbs.TableDefs Set rsTeams = dbs.OpenRecordset( _ "SELECT DISTINCT " & MainTableName & "." & GroupFieldName & _ " FROM " & MainTableName & " WHERE nz(" & GroupFieldName & ","""")<>""""", dbOpenSnapshot) If rsTeams.RecordCount Then Set GroupField = rsTeams.Fields(GroupFieldName) rsTeams.MoveFirst While Not rsTeams.EOF NewTableName = Replace(GroupField.Value, " ", "_") strSQL = "SELECT " & MainTableName & ".* INTO " & NewTableName strSQL = strSQL & " FROM " & MainTableName & " WHERE " _ & MainTableName & "." & GroupFieldName & " ='" & GroupField.Value & "'" If TableExists(AllTables, GroupField.Value) Then If OverWriteTables Then AllTables.Delete GroupField.Value AllTables.Refresh Else GoTo NextRec End If End If dbs.Execute strSQL AllTables.Refresh NextRec: rsTeams.MoveNext Wend Application.RefreshDatabaseWindow End If rsTeams.Close Set rsTeams = Nothing End Function Function TableExists(AllTables As TableDefs, TableName As String) Dim tdf As DAO.TableDef For Each tdf In AllTables If tdf.Name = TableName Then TableExists = True Exit For End If Next End Function Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών Τελευταία επεξεργασία από το χρήστη Tasos : 21-05-13 στις 20:59. |
#3
| |||
| |||
Παράθεση:
Για να είμαι ειλικρινής δεν το έχω δοκιμάσει ακομά γιατί δεν ξέρω που να βάλω τον παραπάνω κώδικα που μου έστειλες. Και πάλι ευχαριστώ. |
#4
| |||
| |||
Το βάζω σαν module;
|
#5
| ||||
| ||||
Καλημέρα! Μάνο, μπορείς να βάλεις τη συνάρτηση SplitTable() σε μια κοινή λειτουργική μονάδα και να την τρέχεις από φόρμα αντιστοιχώντας τις γραμμές του κώδικα της εντολής Test σε ένα κουμπί. Καλή συνέχεια!Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
#6
| |||
| |||
Τάσο καλημέρα. Μου βγάζει ένα μήνυμα run-time error '3607' Η είσοδος στο ερώτημα πρέπει να περιέχει τουλάχιστον έναν πίνακα ή ένα ερώτημα. Όταν κάνω debug με πάει εδώ If TableExists(AllTables, GroupField.Value) Then If OverWriteTables Then AllTables.Delete GroupField.Value AllTables.Refresh Else GoTo NextRec End If End If dbs.Execute strSQL AllTables.Refresh NextRec: rsTeams.MoveNext Τι μπορεί να είναι; |
#7
| |||
| |||
Φίλε Τάσο καλησπέρα. Σου επισυνάπτω μία βάση με έναν πίνακα και 2 πεδία. Θα μπορούσες να βάλεις τον κώδικα που μου έδωσες να δεις γιατί δεν μου τρέχει; Σε ευχαριστώ εκ των προτέρων. |
#8
| ||||
| ||||
Καλησπέρα Μάνο! Δεν έπρεπε να σου παρουσιάσει αυτό το σφάλμα. Δοκίμασε το συνημμένο. Σε μένα λειτουργεί κανονικά. Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών Τελευταία επεξεργασία από το χρήστη Tasos : 04-06-13 στις 12:03. |
#9
| |||
| |||
Βγάζει μη αναγνωρίσιμη μορφή το αρχείο που μου έστειλες.
|
#10
| |||
| |||
Τάσο δεν μου ανοίγει το αρχείο που μου έστειλες. Όταν πάω να το ανοίξω μου λέει μή αναγνωρίσιμη μορφή. |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Παρόμοια Θέματα | ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[Συναρτήσεις] Διαχωρισμός ενός αριθμού. | Niha | Excel - Ερωτήσεις / Απαντήσεις | 3 | 11-08-15 09:49 |
[ Ερωτήματα ] Διαχωρισμός Πεδίου σε πεδία | jimrenoir | Access - Ερωτήσεις / Απαντήσεις | 2 | 18-12-14 18:51 |
[Γενικά] Διαχωρισμός σε φύλλα | Θανάσης | Excel - Ερωτήσεις / Απαντήσεις | 12 | 14-05-11 16:45 |
[ Εκθέσεις ] Διαχωρισμός ονοματεπώνυμου | mgeorge | Access - Ερωτήσεις / Απαντήσεις | 6 | 08-05-11 01:45 |
Διαχωρισμός δεδομένων πεδίου | JohnD | Access - Ερωτήσεις / Απαντήσεις | 13 | 08-09-10 15:43 |
Η ώρα είναι 07:16.