Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
Μαζική διαγραφή πολλών συνημμένων
Καλησπέρα σε όλο το forum. Για μια ακόμα φορά ζητώ την βοήθεια σας σε ένα πρόβλημά μου.. Έχω μία φόρμα στην οποία εμφανίζετε ένα περιγραφή "Note", μια ημερομηνία "Date" και 4 διαφορετικές επισυναπτόμενες εικόνες "Image_1", "Image_2", "Image_3" και "Image_4". Το ερώτημά μου είναι πώς μπορώ με ένα "clik" να κάνω ταυτόχρονη διαγραφή μόνο των τεσσάρων εικόνων χωρίς να διαγράψω όλη την εγγραφή (δηλ την ημερομηνία "Date" και τις σημειώσεις "Note")??? |
#2
| |||
| |||
Καλημέρα Σωτήρη, υποθέτω ότι οι εικόνες είναι αποθηκευμένες στο πεδίο fImages τύπου attachment (συνημμένο) και ότι το κουμπί λέγεται cmdDelImages. Ο παρακάτω κώδικας, που εκτελείται πατώντας το κουμπί, θα διαγράψει όλες τις εικόνες από το πεδίο fImages της τρέχουσας εγγραφής. Κώδικας: Private Sub cmdDelImages_Click() Dim rs As DAO.Recordset2, rsIm As DAO.Recordset2 Set rs = Me.RecordsetClone rs.Bookmark = Me.Bookmark Set rsIm = rs.Fields("[fImages]").Value Do Until rsIm.EOF rsIm.Delete rsIm.MoveNext Loop Me.[fImages].Requery rsIm.Close rs.Close End Sub Φιλικά/Γιώργος Τελευταία επεξεργασία από το χρήστη kapetang : 22-11-15 στις 12:30. |
#3
| |||
| |||
kapetang ευχαριστώ πολύ... μόλις είδα την λύση που μου πρότεινες ....όμως κάτι δεν πάει καλά... μου βγάζει ένα μύνημα "user-defined type not defined" Private Sub cmdDelImages_Click() Dim rs As DAO.Recordset2, rsIm As DAO.Recordset2 Set rs = Me.RecordsetClone rs.Bookmark = Me.Bookmark Set rsIm = rs.Fields("[USimage1]").Value Do Until rsIm.EOF rsIm.Delete rsIm.MoveNext Loop Me.[USimage1].Requery rsIm.Close rs.Close End Sub πού κάνω λάθος... |
#4
| |||
| |||
Σωτήρη, πήγαινε στον κώδικα, μενού Tools, επιλογή References και έλεγξε αν υπάρχουν οι αναφορές που φαίνονται στο συνημμένο. Αν δε λυθεί το πρόβλημα ανέβασε δείγμα της ΒΔ. |
#5
| |||
| |||
kapetang ευχαριστώ για ακόμη μία φορά... από αυτά τα λίγα που διάβασα είχα ενεργοποίησα και το "Microsoft DAO 3.6 Object Library" αλλά όπως καταλαβαίνεις δε λειτούργησε... και συν τις άλλοις δεν μου άφηνε να ενεργοποιήσω και την επιλογή σου "Microsoft Oficce 14.0 Access database engine Object Library". Με το απενενεργοποίησα το "Microsoft DAO 3.6 Object Library" όλα καλά!! Όμως έτσι μου σβήνει μόνο το ένα συνημμένο "USimage1" που έχει μια εικόνα. Υπάρχουν άλλα 5 συνημμένα "USimage2" &"USimage3" & "USimage4" & "USimage5" & "USimage6" που έχουν το καθένα από μία φωτογραφία. Από αυτό που κατάλαβα είναι ότι το LOOP "δουλεύει" μόνο για όσες εικόνες έχει το συνημμένο "USimage1"... για τα υπόλοιπα??? Ευχαριστώ |
#6
| |||
| |||
Καλησπέρα Σωτήρη, νόμιζα ότι έχεις ένα πεδίο τύπου Attachment (συνημμένο) με πολλές εικόνες. Για να διαγράψεις όλες τις εικόνες από όλα τα πεδία συνημμένων, δοκίμασε τον κώδικα: Κώδικας: Private Sub cmdDelImages_Click() Dim rs As DAO.Recordset2, rsIm As DAO.Recordset2 Dim images As Variant, i As Long 'Εδώ συμπληρώνουμε τα ονόματα των πεδίων images = Array("USimage1", "USimage2", "USimage3", "USimage4", "USimage5") Set rs = Me.RecordsetClone rs.Bookmark = Me.Bookmark For i = 0 To UBound(images) Set rsIm = rs.Fields(images(i)).Value Do Until rsIm.EOF rsIm.Delete rsIm.MoveNext Loop Me.Controls(images(i)).Requery Next rsIm.Close rs.Close End Sub |
#7
| |||
| |||
kapetang πολύ γρήγορος και πάλι αφού κατάφερα να σου δώσω να καταλάβεις τι θέλω.... όμως πάλι κάτι δεν πάει καλά.. ...λογικά κάτι δεν πάει καλά με το loop... μου βγάζει λάθος εδώ: "Me.Controls(images(i)).Requery" |
#8
| |||
| |||
Πιθανόν τα ονόματα των πεδίων στη φόρμα, δεν ταυτίζονται με τα ονόματα των πεδίων στον πίνακα: "USimage1", "USimage2", "USimage3", "USimage4", "USimage5".
|
#9
| |||
| |||
kapetang ευχαριστώ πολύ για τις πολύτιμες συμβουλές σου πάνω στις οποίες βασίστηκα για να βρω την παρακάτω λύση Private Sub cmdDelImages_Click() Dim rs As DAO.Recordset2, rsIm As DAO.Recordset2 Set rs = Me.RecordsetClone rs.Bookmark = Me.Bookmark Set rsIm = rs.Fields("[USimage1]").Value rsIm.Delete Set rs = Me.RecordsetClone rs.Bookmark = Me.Bookmark Set rsIm = rs.Fields("[USimage2]").Value rsIm.Delete Set rs = Me.RecordsetClone rs.Bookmark = Me.Bookmark Set rsIm = rs.Fields("[USimage3]").Value rsIm.Delete Set rs = Me.RecordsetClone rs.Bookmark = Me.Bookmark Set rsIm = rs.Fields("[USimage4]").Value rsIm.Delete Set rs = Me.RecordsetClone rs.Bookmark = Me.Bookmark Set rsIm = rs.Fields("[USimage5]").Value rsIm.Delete Set rs = Me.RecordsetClone rs.Bookmark = Me.Bookmark Set rsIm = rs.Fields("[USimage6]").Value rsIm.Delete MsgBox "Delete All!!!" End Sub Τελικά δεν ήταν τα πεδία στην φόρμα που δεν ταυτίζονται με τα ονόματα των πεδίων στον πίνακα γιατί με τα ίδια πεδία "τρέχει" η παραπάνω λύση... Απλός με τον παραπάνω τρόπο πρέπει να κλείσω και να ξανανοίξω την φόρμα για να εξαφανισθούν οι φωτογραφίες και όταν δεν έχουν όλα τα πεδία συνημμένη φωτογραφία (πχ λείπει συνημμένο στο πεδίο "USimage6" μου βγάζει το μήνυμα " Run-time error 3021, Δεν υπάρχει τρέχουσα εγγραφή". Καμιά ένσταση στην παραπάνω λύση ή ιδέα στα ψιλοπροβληματάκια που προέκυψαν? |
#10
| |||
| |||
Καλημέρα Σωτήρη, υπάρχουν ενστάσεις, αλλά αντί να τις περιγράψω, δοκίμασε: 1) Πέρασε στο επισυναπτόμενο αρχείο πολλές εικόνες σε κάποια (ή όλα) τα πεδία συνημμένων (πχ USimage2, USimage4) και πάτησε το κουμπί. 2) Δοκίμασε το ίδιο με τον κώδικά σου. Δες τη διαφορά. Φιλικά/Γιώργος |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Παρόμοια Θέματα | ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
Μαζική ενημέρωση πεδίου | kapetang | Access samples - Χρήσιμα αρχεία & παραδείγματα | 0 | 18-09-16 10:28 |
[ Πίνακες ] προσάρτηση συνημμένων μηνύματος σε πίνακα | mousatos | Access - Ερωτήσεις / Απαντήσεις | 0 | 08-02-16 11:02 |
[ Εκθέσεις ] Έκθεση συνημμένων | Γιωργος Μπεστ | Access - Ερωτήσεις / Απαντήσεις | 2 | 16-06-12 13:07 |
[Εκτύπωση] Εκτύπωση πολλών αρχείων, πολλών επιλογών | mak | Excel - Ερωτήσεις / Απαντήσεις | 7 | 11-06-12 13:34 |
Η ώρα είναι 10:30.