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

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 28-01-09, 23:12
Meteora
Guest
 
Μηνύματα: n/a
Προεπιλογή Μεταφορά δεδομένων απο πεδίο σε πεδίο

Καλησπέρα σε όλα τα παιδιά του νέου Forum.
Κώστα μπράβο σου! Καλή συνέχεια φίλτατε...

Εχω ένα πίνακα Table1 και αυτός περιέχει πεδία :
1. Αλφαριθμητικα (Επίθετο, Όνομα, τμήμα...) και
2. Πεδία αριθμητικά ΠεδίοΑ και Πεδίο1, πεδίο2, ...πεδίο50!
Σε μια φόρμα -πολλών στοιχείων- εμφανίζω τα αλφαριθμητικά πεδία και το πεδίοΑ. Η φόρμα ειναι φιλτραρισμένη ως προς το πεδίο [τμήμα]. Στο πεδίοΑ προσθέτω-αλλάζω και γενικά διαχειρίζομαι αριθμούς (βαθμολογία μαθητών).
Ψάχνω την εντολή με την οποία αυτό το υλικό που διαχειρίστηκα στη φιλτραρισμένη φόρμα να περάσει απο το πεδίοΑ στο π.χ. πεδίο1

Ελπίζω να ειναι εντολή και όχι κάποιο "σμήνος" απο γραμμές κώδικα.

Με εκτίμηση και ευχή να είστε όλοι καλά
meteora
Απάντηση με παράθεση
  #2  
Παλιά 29-01-09, 09:52
Όνομα: Ηλιάδης Κωνσταντίνος
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 13-12-2008
Περιοχή: Chicago
Μηνύματα: 119
Προεπιλογή Re: Μεταφορά δεδομένων απο πεδίο σε πεδίο

Φίλε Meteora Καλημέρα,

Σ'ευχαριστώ για τα καλά σου λόγια και εύχομαι οι προσδοκίες μας να εκπληρωθούν.
Λοιπόν Να δώσω 2 λύσεις τις οποίες διαλέγεις και εφαρμόζεις. Θα αναφέρω φυσικά τα πλεονεκτήματα αυτών των λύσεων :

1. Η φόρμα σου έχει ουσιαστικά όλα τα πεδία καθότι αυτά βρίσκονται στον πίνακα Table1. Επομένως μία απλή λύση είναι να δώσεις στο Event AfterUpdate του πεδίουΑ την εξής γραμμή κώδικα
Κώδικας:
me.Πεδίο1=me.ΠεδίοΑ
2. Μία εντολή SQL και πάλι στο Event AfterUpdate του πεδίουΑ την εξής γραμμή κώδικα
Κώδικας:
docmd.RunSql("Update Table1 Set Table.Πεδίο1=" & me.ΠεδίοΑ &" where τμήμα='"& me.τμήμα & "'")
Αναλύω τώρα συνοπτικά τα πλεονεκτήματα της κάθε λύσης εφόσον πρώτα αναφέρω ότι και στις δύο περιπτώσεις το αποτέλεσμα είναι το ίδιο.

1. Με την πρώτη λύση έχεις ουσιαστικά ένα copy-paste των τιμών που έχουν τα πεδία της φόρμας. Δεν χρειάζεται refresh η φόρμα και το αποτέλεσμα είναι άμεσα ορατό. Τι μπορεί όμως να συμβεί. Αν το πεδίοΑ είναι το τελευταίο στοιχείο-αντικείμενο της φόρμας τότε μετά το Enter ή γενικώς το afterupdate του μεταβαίνουμε σε νέα εγγραφή της φόρμας και η Access αναξιόπιστα μπορεί να δώσει την τιμή του ΠεδίουΑ στο πεδίο1 της επόμενης εγγραφής και όχι της ιδίας εγγραφής.
2. Εδώ έχουμε εντολή SQL που είναι πιο αξιόπιστη σ'αυτό που του ζητάμε να κάνει. Ενημερώνει το λοιπόν την τιμή Πεδίο1 με το ΠεδίοΑ αρκεί το τμήμα να είναι το Unique ID δηλαδή το πρωτεύον κλειδί. Δηλαδή κάθε εγγραφή να έχει ως μοναδικό κλειδί το τμήμα και το τμήμα να μην επαναλαμβάνεται σε άλλη εγγραφή. (Επειδή αυτό όπως καταλαβαίνω δεν ισχύει βάλε στην 2η λύση όπου τμήμα ένα πεδίο που είναι και ο μοναδικός αριθμός UniqueID.

Προσπαθώντας να γίνω το κατά δύναμην αναλυτικός, εύχομαι να μην σε μπέρδεψα. Αν όμως χρειάζεσαι περαιτέρω βοήθεια ξαναστείλε μου ερώτημα ή αν θέλεις στείλε μου σε PM την βάση σου.

Φιλικά

kon73 / iliadisk
Απάντηση με παράθεση
  #3  
Παλιά 29-01-09, 19:28
Meteora
Guest
 
Μηνύματα: n/a
Προεπιλογή Re: Μεταφορά δεδομένων απο πεδίο σε πεδίο

Καλησπέρα

[α] Η πρώτη προτεινόμενη λύση δούλεψε. Η παρατήρηση περί 'αναξιοπιστίας' του Kon73 για τη περίπτωση της τελευταίας εγγραφής σωστή. (έχω σχετική εμπειρία απο τη σχολική μονάδα στην οποία εργάζομαι...).
[β] Τη δεύτερη προτεινόμενη λύση την 'έντυσα' ως εξής και φυσικά δουλεύει!

Private Sub πεδιοΑ_LostFocus()

DoCmd.SetWarnings False '(1)

Dim diktis As Integer '(2)
diktis = Me.ID1 '(2)
DoCmd.RunSQL ("Update table1 Set table1.πεδιο1=" & Me.πεδίοΑ & " where ID1=" & diktis)

DoCmd.SetWarnings True '(1)

End Sub

Εξηγώ (για όσους γνωρίζουν λιγότερα απο μένα) :
* Με τις εντολές (1) απενεργοποιώ και ξανα-ενεργοποιώ τις προειδοποιήσεις τις access για τις περιπτώσεις delete, update,...
* Με τις εντολές (2) ορίζω μια αριθμητική μεταβλητή που φορτώνεται την τιμή του [ID1] της τρέχουσας εγγραφής. Το [ID1] είναι το κλειδί της κάθε εγγραφής.
* Η εντολή SQL έχει ελαφρώς διαφοροποιηθεί σε σχέση με την προτεινόμενη απο τον Kon73 διότι το diktis ειναι αριθμητική μεταβλητή.

Θα παρατηρήσετε ότι τον κώδικα φόρτωσα στο LostFocus του πεδίουΑ, διότι στο AfterUpdate με έδινε ένα μήνυμα περί "δράσης κάποιου άλλου χρήστη..."
Στο LostFocus η εργασία γίνεται εντελώς 'αθόρυβα'.

Φυσικά δεκτή κάθε παρατήρηση
Ευχαριστώ τον Kon73.

Με εκτίμηση

Meteora
Απάντηση με παράθεση
  #4  
Παλιά 29-01-09, 20:42
Όνομα: Ηλιάδης Κωνσταντίνος
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 13-12-2008
Περιοχή: Chicago
Μηνύματα: 119
Προεπιλογή Re: Μεταφορά δεδομένων απο πεδίο σε πεδίο

Παράθεση:
Αρχική Δημοσίευση από Meteora
Θα παρατηρήσετε ότι τον κώδικα φόρτωσα στο LostFocus του πεδίουΑ, διότι στο AfterUpdate με έδινε ένα μήνυμα περί "δράσης κάποιου άλλου χρήστη..."
Στο LostFocus η εργασία γίνεται εντελώς 'αθόρυβα'.

Φυσικά δεκτή κάθε παρατήρηση, ('Οχι για μένα αλλά για τη φουκαριάρα την ...μάναααα μου!)

Ευχαριστώ τον Kon73.

Με εκτίμηση

Meteora
Φίλε Meteora χαίρομαι για την ανάλυση που παραθέτεις στο topic γιατί σωστά αντιλαμβάνεσαι ότι το εδώ Forum στόχο έχει την ανάγνωση των topics από όλους προς ενημέρωσή τους. Ωστόσο το AfterUpdate του πεδίου δείχνει ότι η εγγραφή δεν έχει ξεκλειδωθεί αλλά είναι σε status edit και κλειδωμένη καθότι γίνεται afterupdate του πεδίου και μόνο και όχι της εγγραφής. Για να δουλέψει το AfterUpdate του ΠεδίουΑ θα πρέπει να γίνει πριν την εντολή SQL ένα
Κώδικας:
me.dirty=false
το οποίο αποθηκεύει την εγγραφή και επομένως την ξεκλειδώνει-απεγκλωβίζει και μετά μπορεί να δουλέψει και η SQL εγγραφή.
Επίσης για το να μην υπάρχουν μηνύματα σε ερωτήματα διαγραφής κλπ αντί του κώδικα που προτείνεις
Βάζεις 'Application.SetOption "Confirm Action Queries", False εδώ γίνεται μια αλλαγή στις επιλογές της Access - Tools-Options -(Tab) Edit/Find - Action queries διαμέσου κώδικα.

Φιλικά

Ηλιάδης Κωνσταντίνος / Kon73
Απάντηση με παράθεση
  #5  
Παλιά 30-01-09, 16:20
Meteora
Guest
 
Μηνύματα: n/a
Προεπιλογή Re: Μεταφορά δεδομένων απο πεδίο σε πεδίο

Καλησπέρα

Φίλτατε Κωνσταντίνε η εντολή Application.SetOption "Confirm Action Queries", False μπαίνει στις ιδιότητες της φόρμας -ας πούμε στο "Με τη φόρτωση" , στο "Με την ενεργοποίηση" , ...κάπου αλλού ;

Με εκτίμηση
meteora
Απάντηση με παράθεση
  #6  
Παλιά 30-01-09, 20:03
Όνομα: Ηλιάδης Κωνσταντίνος
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 13-12-2008
Περιοχή: Chicago
Μηνύματα: 119
Προεπιλογή Re: Μεταφορά δεδομένων απο πεδίο σε πεδίο

Αγαπητέ φίλε μου meteora,

Η εντολή αυτή μπαίνει συνήθως σε ένα Function (Συνάρτηση) μέσα σε ένα module (Λειτουργική μονάδα) της MsAccess η οποία συνάρτηση καλείται είτε με την μακροεντολή autoexec (Μακροεντολή Autoexec καλείται αυτόματα με την έναρξη της εφαρμογής) είτε με το φόρτωμα μίας φόρμας που ανοίγει αυτόματα με την έναρξη της εφαρμογής.

Γενικώς οι εντολές Application.SetOption μπορούν να αλλάξουν τις τιμές των options της Access κάνοντας χρήση VBA.
Υπάρχουν γενικώς πολλές επιλογές που μπορούν να αλλάξουν μέσω VBA. Ακόμα και επιλογές options του περιβάλλοντος της VBA.

Με αφορμή επίσης αυτό το Forum, περιμένω προτάσεις για βελτιώσεις και γενικώς παρατηρήσεις των υπηρεσιών που προσφέρω για την MsAccess.

Φιλικά

Ηλιάδης Κωνσταντίνος
kon73
Απάντηση με παράθεση
Απάντηση στο θέμα


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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[ Φόρμες ] Πεδίο Φόρμας mgeorge Access - Ερωτήσεις / Απαντήσεις 2 21-07-14 19:28
Δημιουργία πεδίου με εξάρτηση των δεδομένων από άλλο πεδίο panagiotag Access - Ερωτήσεις / Απαντήσεις 6 07-11-11 10:31
[ Φόρμες ] Πεδίο με χρώμα artchrist73 Access - Ερωτήσεις / Απαντήσεις 4 24-05-11 20:00


Η ώρα είναι 08:57.