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

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 12-02-12, 18:37
Όνομα: Σάκης
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 04-02-2012
Μηνύματα: 49
Προεπιλογή Κώδικας ερωτήματος update σε VBA

Γεια σας παιδιά!!!
Έχω φτιάξει το παρακάτω ερώτημα.
UPDATE Paraggelies INNER JOIN Periexomena_Paraggelias ON Paraggelies.code = Periexomena_Paraggelias.code SET Periexomena_Paraggelias.need_call = True
WHERE (((Paraggelies.code)=[Forms].[Add_Paraggelies_final].[code]) AND ((Paraggelies.need_call)=True));

Επιπλέον έχω φτιάξει μία μακροεντολή που εκτελεί το ερώτημα αυτό και η μακροεντολή εκτελείται στο after_update ενός πεδίου. Λειτουργεί μια χαρά.

Θα ήθελα λοιπόν, αντί της μακροεντολής, να γράψω κώδικα στο after_update του πεδίου.
Μπορεί λοιπόν κάποιος να με βοηθήσει στο να γράψω τον παραπάνω κώδικα SQL σε VBA;
Απάντηση με παράθεση
  #2  
Παλιά 12-02-12, 20:40
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Σάκη υποθέτω ότι το πεδίο [Forms].[Add_Paraggelies_final].[code] βρίσκεται στη φόρμα που
υπάρχει και το πεδίο που θέλεις να χρησιμοποιήσεις κώδικα VBA στο συμβάν "μετά την ενημέρωση".

Έστω ότι το πεδίο εχει το όνομα myTextBox.

Μπορείς να χρησιμοποιήσεις το παρακάτω παράδειγμα:

Κώδικας:
Private Sub myTextBox_AfterUpdate()
    Dim strSQL As String
    strSQL = "UPDATE Paraggelies INNER JOIN Periexomena_Paraggelias ON Paraggelies.code =" & _
           " Periexomena_Paraggelias.code SET Periexomena_Paraggelias.need_call = True"
    strSQL = strSQL & " WHERE Paraggelies.code =" & Me.code & " AND Paraggelies.need_call = True"
    CurrentDb.Execute strSQL
End Sub
Αυτά όσον αφορά τη σύνταξη.

Το αν λειτουργήσει ή όχι εξαρτάται και από τη σχεδίαση της βάσης.

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #3  
Παλιά 12-02-12, 21:44
Όνομα: Σάκης
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 04-02-2012
Μηνύματα: 49
Προεπιλογή

Τάσο κατ'αρχάς σε ευχαριστώ για τη βοήθειά σου.
Δυστυχώς δε δούλεψε.
Στη φόρμα Add_Paraggelies_final έχω βάλει ένα κουμπί Update το οποίο εκτελεί το σχετικό ερώτημα. Το κουμπί λειτουργεί κανονικά, όμως παρατήρησα ότι τα αποτελέσματα του ερωτήματος δε φαίνονται αμέσως στη δευτερεύουσα φόρμα. Τι εννοώ...Το ερώτημα κάνει update στο πεδίο need_call, το οποίο βρίσκεται στη δευτερεύουσα φόρμα. Τα αποτελέσματα φαίνονται, αν φύγω από την εγγραφή και ξαναγυρίσω σε αυτήν.
Το γεγονός αυτό, μαζί με το γεγονός ότι ο κώδικας που μου έδωσες δε δούλεψε, με οδήγησε στο να βάλω στο after_update του need_call (της κανονικής φόρμας και όχι της δευτερεύουσας φόρμας) τον εξής κώδικα
Private Sub need_call_AfterUpdate()
Forms.Add_Periexomena_Paraggelias_deyt.need_call = IIf(Me.need_call = True, True, False)
End Sub

Απ' ό,τι καταλαβαίνω το Forms.Add_Periexomena_Paraggelias_deyt.need_call δεν είναι ο σωστός τρόπος για να προσπελάσω το need_call της δευτερεύουσας φόρμας.
Πιθανολογώ λοιπόν, ότι αν γράψω σωστά τον παραπάνω κώδικα, θα λυθεί το πρόβλημά μου.
Εδώ είναι το παράδειγμα http://dl.dropbox.com/u/58056089/example.mdb
Απάντηση με παράθεση
  #4  
Παλιά 12-02-12, 21:47
Όνομα: Σάκης
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 04-02-2012
Μηνύματα: 49
Προεπιλογή

Βασικά σε περίπτωση που το need_call == false,τότε δε θέλω να γίνεται τίποτα.
Άρα θα έπρεπε να γράψω τον κώδικα κάπως έτσι.
Forms.Add_Periexomena_Paraggelias_deyt.need_call = IIf(Me.need_call = True, True)
Απάντηση με παράθεση
  #5  
Παλιά 13-02-12, 05:09
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

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

Τώρα όμως που βλέπω τη βάση σου, δεν μπορώ να καταλάβω γιατί δεν πατάς το checkbox
κατευθείαν στην υποφόρμα;

Πες μας τι ακριβώς θέλεις να επιτύχεις.

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #6  
Παλιά 13-02-12, 10:19
Όνομα: Σάκης
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 04-02-2012
Μηνύματα: 49
Προεπιλογή

Λογική η απορία σου.
Αυτό που θέλω είναι το εξής: Αν για παράδειγμα στην υποφόρμα έχω 20 εγγραφές και θέλω και στις 20 το need_call να είναι true, δε θέλω να κουράζομαι και να το τσεκάρω και στις 20 εγγραφές, αλλά πατώντας ένα κουμπί ή τσεκάρωντας το need_call της κανονικής φόρμας να γίνονται αυτόματα όλα τα need_call της υποφόρμας true.
Απάντηση με παράθεση
  #7  
Παλιά 13-02-12, 11:34
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Στο AfterUpdate του στοιχείου 'need_call' πέρασε το παρακάτω:

Private Sub need_call_AfterUpdate()
Dim strSQL As String
strSQL = "UPDATE Periexomena_Paraggelias SET Periexomena_Paraggelias.need_call = " & _
Nz(Me.need_call) & " WHERE [code] =" & Nz(Me.code)
CurrentDb.Execute strSQL
Me.Add_Periexomena_Paraggelias_deyt.Form.Refresh
End Sub

Μπορείς ακόμα να μεταφέρεις το παραπάνω στοιχείο στην υποφόρμα στη θέση της ετικέτας 'Θέλει Υπενθύμιση' (στην κεφαλίδα της υποφόρμας) και να του αντιστοιχίσεις το παρακάτω:

Private Sub need_call_AfterUpdate()
Dim strSQL As String
strSQL = "UPDATE Periexomena_Paraggelias SET Periexomena_Paraggelias.need_call = " & _
Nz(Me.need_call) & " WHERE [code] =" & Nz(Me.code)
CurrentDb.Execute strSQL
Me.Refresh
End Sub

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

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #8  
Παλιά 13-02-12, 13:22
Όνομα: Σάκης
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 04-02-2012
Μηνύματα: 49
Προεπιλογή

Τάσο δουλεύει άψογα!!!
Έμαθα πολλά από τον κώδικα που μου έστειλες!!!
Σ' ευχαριστώ πολύ!!!
Απάντηση με παράθεση
  #9  
Παλιά 13-02-12, 17:40
Όνομα: Σάκης
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 04-02-2012
Μηνύματα: 49
Προεπιλογή

Τάσο, συγγνώμη που επανέρχομαι και πάλι, αλλά εντόπισα ένα λάθος.
Το ερώτημα Update ήθελα να εκτελείται εφόσον το need_call = true. Αν είναι false δηλαδή, δε θα ήθελα να επηρεάζει τα need_calls της υποφόρμας.

Γι'αυτό λοιπόν έβαλα τον εξής κώδικα
Dim strSQL As String
strSQL = "UPDATE Periexomena_Paraggelias SET Periexomena_Paraggelias.need_call = " & _
Nz(Me.need_call) & " WHERE [code] =" & Nz(Me.code)
If Me.need_call = True Then
CurrentDb.Execute strSQL
End If
Me.Refresh

Ο λόγος που χρησιμοποίησα την If είναι γιατί δεν μπορούσα στο Where να βάλω δεύτερο κριτήριο.
Έγραφα λοιπόν το εξής.
Dim strSQL As String
strSQL = "UPDATE Periexomena_Paraggelias SET Periexomena_Paraggelias.need_call = " & _
Nz(Me.need_call) & " WHERE [code] =" & Nz(Me.code) and Me.need_call = true
CurrentDb.Execute strSQL
Me.Refresh
End Sub

Αυτό που ήθελα να κάνω το πέτυχα με If, αλλά θα ήθελα να ξέρω πως γράφω σωστά τον παραπάνω κώδικα.
Απάντηση με παράθεση
  #10  
Παλιά 13-02-12, 18:14
Το avatar του χρήστη Meteora
Συντονιστής
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 28-12-2008
Περιοχή: Θεσσαλονίκη
Μηνύματα: 1.033
Προεπιλογή

Καλησπέρα

Δοκίμασε το:

...Nz(Me.need_call) & " WHERE [code] =" & Nz(Me.code) & " and Me.need_call = true"

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

Με εκτίμηση
Νίκος Δ.
Απάντηση με παράθεση
Απάντηση στο θέμα


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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[ Φόρμες ] After Update gmax Access - Ερωτήσεις / Απαντήσεις 2 07-08-15 06:00
Update τιμών σε εγγραφή.. pctechdr Access - Ερωτήσεις / Απαντήσεις 2 22-06-15 21:55
[ Ασφάλεια] Update εφαρμογής ACCESS μέσω Internet vraxnakisg Access - Ερωτήσεις / Απαντήσεις 7 18-06-15 02:29
Προβλημα με update jimrenoir Access - Ερωτήσεις / Απαντήσεις 0 14-06-11 11:54
Update σε πεδίο πίνακα Meteora Access - Ερωτήσεις / Απαντήσεις 5 24-06-09 22:01


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