Ανανέωση ιστοσελίδας

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 02-06-09, 13:38
Meteora
Guest
 
Μηνύματα: n/a
Προεπιλογή Update σε πεδίο πίνακα

Καλημέρα σας
...Απο ένα σύνθετο πλαίσιο αποδίδω τιμή σε μεταβλητή matima = combo11.Column(1) π.χ matima = "ΦΥΣΙΚΗ", matima = "ΜΑΘΗΜΑΤΙΚΑ",...
Οι λέξεις ΦΥΣΙΚΗ, ΜΑΘΗΜΑΤΙΚΑ,... αποτελούν πεδία ενός πίνακα με το όνομα "ΒΑΘΜΟΙ".
Σε μια θέση της εφαρμογής γράφω:

..........
Dim dbsContacts As Database
Dim rstTypes As DAO.Recordset

Set dbsContacts = CurrentDb
Set rstTypes = dbsContacts.OpenRecordset("ΒΑΘΜΟΙ")

If Not rstTypes.EOF Then rstTypes.MoveFirst

Do While Not rstTypes.EOF
rstTypes.Edit
rstTypes!matima = rstTypes!matima * 0.2
rstTypes.Update
rstTypes.MoveNext
Loop

Σκοπός μου -όπως φαίνεται- να αλλάξω το περιεχόμενο του παραμετρικού πεδίου matima σε όλες τις εγγραφές και να περάσω απο 100βάθμια βαθμολογική κλίμακα σε 20βάθμια, πολλαπλασιάζοντας με το 0,2.
Έκανα χρήση διάφορες 'φατσούλες' για την μορφή της προβληματικής εντολής, αλλά συνήθως παίρνω το μήνυμα 'Error 3265 Το στοιχείο δεν βρέθηκε σε αυτή τη συλλογή".
Ευχαριστώ εκ των προτέρων για τον χρόνο σας
Με εκτίμηση
O meteora
Απάντηση με παράθεση
  #2  
Παλιά 03-06-09, 09:10
Tassos
Guest
 
Μηνύματα: n/a
Προεπιλογή Re: Update σε πεδίο πίνακα

Καλημέρα σε όλους!

Αγαπητέ φίλε, η γνώμη μου είναι να χρησιμοποιήσεις τη μέθοδο .RunSQL ως εξής:

Κώδικας:
DoCmd.SetWarnings False    'Optional

   	       DoCmd.RunSQL "UPDATE Bathmoi SET Bathmoi.matima = Bathmoi.Matima*0.2;" 'Προαιρετικό

' ή με κριτήριο: DoCmd.RunSQL "UPDATE Bathmoi SET Bathmoi.matima = Bathmoi.Matima*0.2 WHERE (((Bathmoi.xPedio)=""Mathitis 1""));" ' 

' ή  από φόρμα: DoCmd.RunSQL "UPDATE Bathmoi SET Bathmoi.matima = Bathmoi.Matima*0.2 WHERE (((Bathmoi.xPedio)='" & Me.Combo1 & "'));" 

DoCmd.SetWarnings True

Δεν έχεις λόγους να ορίζεις μεταβλητές όταν δεν χρειάζεται να τις καλέσεις περισσότερες φορές.
Πχ.:
Κώδικας:
With CurrentDb.OpenRecordset("Bathmoi", 2)
        .MoveFirst
        Do While Not .EOF
            .Edit
            ![matima] = ![matima] * 0.2
            .Update
            .MoveNext
        Loop
    End With
Επίσης θα σου συνιστούσα να αποφεύγεις όσο γίνεται τους ελληνικούς χαραχτήρες στα ονόματα των αντικειμένων στην Access
που ίσως να προκαλούν το λάθος 3265 (Μη αναγνώριση κάποιου πεδίου).
Απάντηση με παράθεση
  #3  
Παλιά 04-06-09, 15:40
Meteora
Guest
 
Μηνύματα: n/a
Προεπιλογή Re: Update σε πεδίο πίνακα

Καλημέρα
Τάσο θερμά ευχαριστώ για την φροντισμένη απάντησή σου.
Εργάζομαι σε κάποια εφαρμογή με τον κώδικα-Βιβλιοθήκη-μέθοδο DAO στο ζήτημα της επεξεργασίας των εγγραφών πίνακα (Move, AddΝew, Find, Update και Delete). Υπάρχουν αρκετές ρουτίνες -γραμμένες σε 'λογική' DAO και κάποιες απο αυτές με ενδιαφέρει να καταλαβαίνω...
Τη μέθοδο .RunSQL φυσικά και έχω κάνει χρήση αρκετές φορές.
Επειδή ο όρος matima ειναι μεταβλητή που χρεώνεται όνομα πεδίου και όχι όνομα πεδίου η ίδια δημιουργήθηκε το πρόβλημα!
Στην εφαρμογή μου τώρα δουλεύει η εντολή (Η 1η απο αυτές που ανέφερες - ελαφρά προσαρμοσμένη):
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE ΒΑΘΜΟΙ SET ΒΑΘΜΟΙ." & matima & " = ΒΑΘΜΟΙ." & matima & "*0.2;"
DoCmd.SetWarnings False 
Με εντυπωσίασε η κομψότητα του κώδικα DAO που παραθέτεις. Όμως δεν μπορώ να τον βάλω να δουλέψει εκτός και άν το matima αντικατασταθεί απο υπαρκτό όνομα πεδίου.
Συγχαρητήρια για την νέα σου θέση στο Forum και κάθε επιτυχία. Μπράβο σου.
Με εκτίμηση
Ο meteora
Απάντηση με παράθεση
  #4  
Παλιά 04-06-09, 19:23
Tassos
Guest
 
Μηνύματα: n/a
Προεπιλογή Re: Update σε πεδίο πίνακα

Καλησπέρα σε όλους!

Αγαπητέ φίλε, αφού σ ευχαριστήσω για τα καλά σου λόγια, θα ήθελα να δοκιμάσεις ( αν φυσικά δεν έχεις καταλήξει)
τον παρακάτω κώδικα προκειμένου να χρησιμοποιήσεις μεταβλητή σε όνομα πεδίου:
Κώδικας:
Option Compare Database
Option Explicit

Sub UpdateTable(VarFieldName$)
    Dim xField As DAO.Field
    With CurrentDb.OpenRecordset("Bathmoi", 2)
        Set xField = .Fields(VarFieldName)
        .MoveFirst
        Do While Not .EOF
            .Edit
            xField = xField * 0.2
            .Update
            .MoveNext
        Loop
    End With
End Sub

Sub Call_UpdateTable()
    UpdateTable "FieldName"   ' όπου  "FieldName" = το όνομα του επιθυμητού πεδίου.
End Sub
Με εκτίμηση
Απάντηση με παράθεση
  #5  
Παλιά 08-06-09, 08:41
Meteora
Guest
 
Μηνύματα: n/a
Προεπιλογή Re: Update σε πεδίο πίνακα

Καλημέρα
Τάσο δούλεψε τέλεια! Θερμά σ'ευχαριστώ.
Νάσαι καλά. Η ζωή να προσφέρει σε σένα και τους άλλους ρομπέν των Forum, απλόχερα την καλή της πραμάτια.
Με εκτίμηση
Ο meteora
Απάντηση με παράθεση
  #6  
Παλιά 24-06-09, 22:01
Meteora
Guest
 
Μηνύματα: n/a
Προεπιλογή Re: Update σε πεδίο πίνακα

Καλησπέρα

Κάνω χρήση της εντολής :
SQL = "Update MATHTES " & _
"Set " & vrestmima & " = " & BATMOS & _ (1)
" where ID1= " & diktis
DoCmd.RunSQL SQL
για να ενημερωθεί το 'παραμετρικό' πεδίο Vrestmima απο την τιμή που πληκτρολογώ στο πεδίο BATMOS. Αν πληκτρολογήσω ακέραιο τότε βαίνουν όλα καλά. Αν όμως πληκρολογήσω δεκαδικό τότε εισπράτω το Err.Number 3144. Η εντολή (1) λέει ουσιαστικά το εξής:
Update ΜΑΤΗΤΕΣ Set Α142Β = 12,8 where ID1= 113
(Τμήμα Α1, Μάθημα με ID = 42 π.χ ΦΥΣΙΚΗ και Β τετράμηνο -για να εξηγήσω τη δομή του ονόματος του πεδίου που όπως προανέφερα εμφανίζει παραμετρικότητα μιας και το πεδίο δεν προυπάρχει στον πίνακα, αλλα δημιουργείται κάθε φορά που απαιτείται να διαχειριστούν βαθμοί σε κάποιο μάθημα!)
Αν αλλάξω τη μορφή της (1) και τη γράψω :
SQL = "Update Μαθητές Set Β158Α = Βαθμός where ID1= " & diktis (Δηλαδή αν εμφανίσω άμεσα το όνομα του πεδίου προορισμού), τότε όλα καλά! Κάτι τέτοιο όμως πρακτικά δεν μπορώ να το κάνω παρά μόμο δοκιμαστικά στο παράθυρο Imediatte

Το πάλεψα... Ζητώ συγνώμη αν κάνω κατάχρηση του χρόνου σας και όχι ...μόνο.

Θερμά ευχαριστώ
Ο Meteora
Απάντηση με παράθεση
Απάντηση στο θέμα

Εργαλεία Θεμάτων
Τρόποι εμφάνισης

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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[ Πίνακες ] Τιμή Πεδίου ίση με πεδίο άλλου πίνακα gaz_manos Access - Ερωτήσεις / Απαντήσεις 6 25-01-13 11:41
Ενημέρωση τιμών πίνακα από πεδίο φόρμας gath Access - Ερωτήσεις / Απαντήσεις 1 19-08-12 14:07
[ Πίνακες ] Update τιμών Πεδίων ενός πίνακα μέσω Excel Import Leader Access - Ερωτήσεις / Απαντήσεις 2 20-03-12 23:23
[ Φόρμες ] Πεδίο απο άλλη φόρμα / πίνακα crc Access - Ερωτήσεις / Απαντήσεις 6 11-01-10 20:12
help πεδιο σε πινακα sfedona85 Access - Ερωτήσεις / Απαντήσεις 5 24-02-09 07:44


Η ώρα είναι 13:04.