Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
Αλλαγή τύπου πεδίου σε συνδεδεμένο πίνακα.
Παιδιά γεια σας, έχω μια βάσης Access που έχει συνδεδεμένους πίνακες με πολλά πεδία, για κάποιο λόγο δύο πεδία πρέπει να αλλάξουν από αριθμητικά σε κείμενο. Υπάρχει κάποιος γρήγορος τρόπος ή πρέπει να ξανασυνδεθεί ο πίνακας από την αρχή; Ευχαριστώ εκ των προτέρων !!! |
#2
| ||||
| ||||
Καλησπέρα! Δημήτρη, το σωστό είναι να αποσυνδεθεί ο εν λόγω πίνακας και να επανασυδεθεί αφού γίνουν οι απαραίτητες αλλαγές στα πεδία. Αν πρόκειται για τροποποιήσεις τύπων πεδίων σε έναν πίνακα μόνο, θα πρέπει να κάνεις τη διαδικασία χειροκίνητα. Αν εμπλέκονται περισσότεροι πίνακες, τότε κάνε τα εξής: Δημιουργησε ένα αντίγραφο της βάσης σου. Η αρχική βάση και το αντίγραφο της πρέπει να βρίσκονται στον ίδιο φάκελο. Άνοιξε την αρχική βάση πέρασε τον παρακάτω κώδικα σε μια λειτουργική μονάδα (Module) και τρέξε τον για να διαγράψεις όλες τις σχέσεις πινάκων που υπάρχουν στη βάση: Κώδικας: Option Compare Database Option Explicit Sub DeleteRelations() Dim dbs As DAO.Database Dim Rel As Relation Dim i As Integer Dim x As Integer Set dbs = CurrentDb x = dbs.Relations.Count For i = 0 To x - 1 Set Rel = dbs.Relations(0) dbs.Relations.Delete Rel.Name Next MsgBox x & " relationships have been deleted" End Sub Επικόλλησε τον παρακάτω κώδικα στη λειτουργική μονάδα και τρέξε την εντολή ImportAllRelations για να μεταφέρεις τις σχέσεις των πινάκων από το αντίγραφο της βάσης: Κώδικας: Sub ImportAllRelations() Dim i As Integer i = ImportRelations(CurrentProject.Path & "\Nordwind1.accdb") ' Άλλαξε το όνομα με αυτό του αντιγράφου της βάσης. ' Η κάθετος "\...." πρέπει να παραμείνει και το αντίγραφο πρέπει να βρίσκεται στον ίδιο φάκελο με την αρχική βάση. MsgBox i & " relationships have been imported" End Sub Function ImportRelations(DbName As String) As Integer ' Πηγή: Microsoft. Έγιναν τροποποιήσεις. Dim LocalDb As DAO.Database Dim RemoteDb As DAO.Database Dim LocalRel As DAO.Relation Dim RemoteRel As DAO.Relation Dim LocalField As Field Dim RemoteField As Field Dim tmpCount As Integer Dim x As Integer Dim i As Integer Dim RelErr As Boolean Set LocalDb = CurrentDb() Set RemoteDb = DBEngine.Workspaces(0).OpenDatabase(DbName) For i = 0 To RemoteDb.Relations.Count - 1 Set RemoteRel = RemoteDb.Relations(i) Set LocalRel = LocalDb.CreateRelation(RemoteRel.Name, _ RemoteRel.Table, RemoteRel.ForeignTable, RemoteRel.Attributes) RelErr = False For x = 0 To RemoteRel.Fields.Count - 1 Set RemoteField = RemoteRel.Fields(x) Set LocalField = LocalRel.CreateField(RemoteField.Name) LocalField.ForeignName = RemoteField.ForeignName On Error Resume Next LocalRel.Fields.Append LocalField RelErr = Err <> 0 On Error GoTo 0 Next x If Not RelErr Then On Error Resume Next LocalDb.Relations.Append LocalRel If Err <> 0 Then Else tmpCount = tmpCount + 1 End If On Error GoTo 0 End If Next i LocalDb.Close RemoteDb.Close ImportRelations = tmpCount End Function Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
#3
| |||
| |||
Τάσο θα ήθελα να ρωτήσω αν ο κώδικας που μου έγραψες αφορά συνδεδεμένους πίνακες δηλαδή πινάκες που βλέπουν εξωτερικά αρχεία πχ txt , xls κλπ ή σχέσεις μεταξύ πινάκων, εμένα το πρόβλημα μου είναι ή πρώτη περίπτωση δηλαδή θέλω να αλλάξω τύπους πεδίων πίνακα που βλέπει εξωτερικά αρχεία με κατάληξη .txt Δοκίμασα τον κώδικα και διαγράφτηκαν οι σχέσεις από τον πίνακα αλλά πάλι δεν μπόρεσα να αλλάξω τον τύπο των πεδίων. Ευχαριστώ για την άμεση απάντηση σου !!! |
#4
| ||||
| ||||
Δημήτρη, οι πίνακες που είναι συνδεδεμένοι με εξωτερική πηγή πχ. *.txt, Excel κ.α είναι μόνο για ανάγνωση. Συνεπώς δεν μπορείς να τροποποιήσεις ούτε πεδία, ούτε δεδομένα. Ωστόσο σε ορισμένες περιπτώσεις μπορείς να καθορίσεις τον τύπο των πεδίων με τον οδηγό εισαγωγής εξωτερικών δεδομένων. Αφού πρόκειται για αρχείο *.txt, ξεκίνησε τη διαδικασία σύνδεσης του εξωτερικού αρχείου με τη βοήθεια του οδηγού. Όταν φτάσεις στο βήμα που φαίνεται στην εικόνα παρακάτω θα μπορέσεις να επιλέξεις τον κατάλληλο τύπο δεδομένων για τα πεδία που θέλεις. Καλή συνέχεια! Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
#5
| |||
| |||
Οκ αυτό ακριβώς είχα και εγώ στο μυαλό μου να κάνω αλλά επειδή ο πίνακας έχει 285 πεδία και πρέπει να αλλάξουν 3 είπα μήπως γλιτώσω να το κάνω, Ο κώδικας που έβαλες παραπάνω ήδη μου χρησίμευσε σε μία άλλη περίπτωση με σχέσεις μεταξύ πινάκων, να είσαι καλά .
|
#6
| ||||
| ||||
Καλημέρα! Δεν θα μπορέσεις να εισάγεις 285 πεδία. Το όριο σε πίνακα Access είναι 255 πεδία. Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
#7
| |||
| |||
Έχεις απόλυτο δίκιο, λάθος δικό μου στη διατύπωση, τόσα είναι τα πεδία αλλά είναι χωρισμένα σε δύο πίνακες που ο ένας έχει 200 και ο άλλος τα υπόλοιπα. Φιλικά Δημητρης |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Παρόμοια Θέματα | ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[ Φόρμες ] Τιμή πεδίου απο πίνακα | gaz_manos | Access - Ερωτήσεις / Απαντήσεις | 6 | 25-11-15 20:24 |
Αλλαγή Font σε πινακα WORD | thanosgr | Access - Ερωτήσεις / Απαντήσεις | 4 | 17-11-14 09:50 |
Αυτόματη ενημέρωση πεδίου και αλλαγή του | NIC | Access - Ερωτήσεις / Απαντήσεις | 6 | 18-09-13 10:16 |
[ Πίνακες ] Ενημέρωση πεδίου πίνακα | kosta | Access - Ερωτήσεις / Απαντήσεις | 5 | 11-12-12 10:02 |
[ Φόρμες ] Φόρμα τύπου πίνακα | Δημήτρης | Access - Ερωτήσεις / Απαντήσεις | 2 | 10-01-12 09:29 |
Η ώρα είναι 09:33.