Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > Αλλαγή τύπου πεδίου σε συνδεδεμένο πίνακα.

Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια!

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 03-09-13, 14:05
Όνομα: Δημήτρης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 15-12-2011
Μηνύματα: 23
Προεπιλογή Αλλαγή τύπου πεδίου σε συνδεδεμένο πίνακα.

Παιδιά γεια σας, έχω μια βάσης Access που έχει συνδεδεμένους πίνακες με πολλά πεδία, για κάποιο λόγο δύο πεδία πρέπει να αλλάξουν από αριθμητικά σε κείμενο. Υπάρχει κάποιος γρήγορος τρόπος ή πρέπει να ξανασυνδεθεί ο πίνακας από την αρχή;
Ευχαριστώ εκ των προτέρων !!!
Απάντηση με παράθεση
  #2  
Παλιά 03-09-13, 16:12
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Καλησπέρα!
Δημήτρη, το σωστό είναι να αποσυνδεθεί ο εν λόγω πίνακας και να επανασυδεθεί αφού γίνουν οι απαραίτητες αλλαγές στα πεδία.

Αν πρόκειται για τροποποιήσεις τύπων πεδίων σε έναν πίνακα μόνο, θα πρέπει να κάνεις τη διαδικασία χειροκίνητα.

Αν εμπλέκονται περισσότεροι πίνακες, τότε κάνε τα εξής:

Δημιουργησε ένα αντίγραφο της βάσης σου.

Η αρχική βάση και το αντίγραφο της πρέπει να βρίσκονται στον ίδιο φάκελο.

Άνοιξε την αρχική βάση πέρασε τον παρακάτω κώδικα σε μια λειτουργική μονάδα (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  
Παλιά 03-09-13, 22:49
Όνομα: Δημήτρης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 15-12-2011
Μηνύματα: 23
Προεπιλογή

Τάσο θα ήθελα να ρωτήσω αν ο κώδικας που μου έγραψες αφορά συνδεδεμένους πίνακες δηλαδή πινάκες που βλέπουν εξωτερικά αρχεία πχ txt , xls κλπ ή σχέσεις μεταξύ πινάκων, εμένα το πρόβλημα μου είναι ή πρώτη περίπτωση δηλαδή θέλω να αλλάξω τύπους πεδίων πίνακα που βλέπει εξωτερικά αρχεία με κατάληξη .txt
Δοκίμασα τον κώδικα και διαγράφτηκαν οι σχέσεις από τον πίνακα αλλά πάλι δεν μπόρεσα να αλλάξω τον τύπο των πεδίων.

Ευχαριστώ για την άμεση απάντηση σου !!!
Απάντηση με παράθεση
  #4  
Παλιά 04-09-13, 01:06
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Δημήτρη, οι πίνακες που είναι συνδεδεμένοι με εξωτερική πηγή πχ. *.txt, Excel κ.α είναι μόνο για ανάγνωση.

Συνεπώς δεν μπορείς να τροποποιήσεις ούτε πεδία, ούτε δεδομένα.

Ωστόσο σε ορισμένες περιπτώσεις μπορείς να καθορίσεις τον τύπο των πεδίων με τον οδηγό εισαγωγής εξωτερικών δεδομένων.

Αφού πρόκειται για αρχείο *.txt, ξεκίνησε τη διαδικασία σύνδεσης του εξωτερικού αρχείου με τη βοήθεια του οδηγού.

Όταν φτάσεις στο βήμα που φαίνεται στην εικόνα παρακάτω θα μπορέσεις να επιλέξεις τον κατάλληλο τύπο δεδομένων για τα πεδία που θέλεις.

Αλλαγή τύπου πεδίου σε συνδεδεμένο πίνακα.-image1.png

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

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #5  
Παλιά 04-09-13, 07:39
Όνομα: Δημήτρης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 15-12-2011
Μηνύματα: 23
Προεπιλογή

Οκ αυτό ακριβώς είχα και εγώ στο μυαλό μου να κάνω αλλά επειδή ο πίνακας έχει 285 πεδία και πρέπει να αλλάξουν 3 είπα μήπως γλιτώσω να το κάνω, Ο κώδικας που έβαλες παραπάνω ήδη μου χρησίμευσε σε μία άλλη περίπτωση με σχέσεις μεταξύ πινάκων, να είσαι καλά .
Απάντηση με παράθεση
  #6  
Παλιά 04-09-13, 11:11
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Καλημέρα!

Δεν θα μπορέσεις να εισάγεις 285 πεδία. Το όριο σε πίνακα Access είναι 255 πεδία.

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #7  
Παλιά 04-09-13, 12:30
Όνομα: Δημήτρης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 15-12-2011
Μηνύματα: 23
Προεπιλογή

Έχεις απόλυτο δίκιο, λάθος δικό μου στη διατύπωση, τόσα είναι τα πεδία αλλά είναι χωρισμένα σε δύο πίνακες που ο ένας έχει 200 και ο άλλος τα υπόλοιπα.
Φιλικά
Δημητρης
Απάντηση με παράθεση
Απάντηση στο θέμα


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός 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.