Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   Μαζική διαγραφή πολλών συνημμένων (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/3929-maziki-diagrafi-pollon-synimmenon.html)

kouk 21-11-15 17:45

Μαζική διαγραφή πολλών συνημμένων
 
Καλησπέρα σε όλο το forum.
Για μια ακόμα φορά ζητώ την βοήθεια σας σε ένα πρόβλημά μου..

Έχω μία φόρμα στην οποία εμφανίζετε ένα περιγραφή "Note", μια ημερομηνία "Date" και 4 διαφορετικές επισυναπτόμενες εικόνες "Image_1", "Image_2", "Image_3" και "Image_4".

Το ερώτημά μου είναι πώς μπορώ με ένα "clik" να κάνω ταυτόχρονη διαγραφή μόνο των τεσσάρων εικόνων χωρίς να διαγράψω όλη την εγγραφή (δηλ την ημερομηνία "Date" και τις σημειώσεις "Note")???

kapetang 22-11-15 10:38

Καλημέρα

Σωτήρη, υποθέτω ότι οι εικόνες είναι αποθηκευμένες στο πεδίο 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

Η διαγραφή δε μπορεί να αναιρεθεί, συνεπώς πρέπει να είμαστε προσεκτικοί.


Φιλικά/Γιώργος

kouk 25-11-15 19:56

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


πού κάνω λάθος...:wall:

kapetang 25-11-15 20:55

1 Συνημμένο(α)
Σωτήρη, πήγαινε στον κώδικα, μενού Tools, επιλογή References και έλεγξε αν υπάρχουν οι αναφορές που φαίνονται στο συνημμένο.

Αν δε λυθεί το πρόβλημα ανέβασε δείγμα της ΒΔ.

kouk 26-11-15 12:38

1 Συνημμένο(α)
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"... για τα υπόλοιπα??? :035:

Ευχαριστώ

kapetang 26-11-15 14:48

Καλησπέρα
Σωτήρη, νόμιζα ότι έχεις ένα πεδίο τύπου 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

Φιλικά/Γιώργος

kouk 26-11-15 16:23

kapetang πολύ γρήγορος και πάλι αφού κατάφερα να σου δώσω να καταλάβεις τι θέλω....
όμως πάλι κάτι δεν πάει καλά..
...λογικά κάτι δεν πάει καλά με το loop...

μου βγάζει λάθος εδώ:

"Me.Controls(images(i)).Requery"

kapetang 26-11-15 17:29

Πιθανόν τα ονόματα των πεδίων στη φόρμα, δεν ταυτίζονται με τα ονόματα των πεδίων στον πίνακα: "USimage1", "USimage2", "USimage3", "USimage4", "USimage5".

kouk 27-11-15 10:07

kapetang ευχαριστώ πολύ για τις πολύτιμες συμβουλές σου πάνω στις οποίες βασίστηκα για να βρω την παρακάτω λύση:icon_yes:

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, Δεν υπάρχει τρέχουσα εγγραφή".

Καμιά ένσταση στην παραπάνω λύση ή ιδέα στα ψιλοπροβληματάκια που προέκυψαν?

kapetang 27-11-15 10:47

1 Συνημμένο(α)
Καλημέρα

Σωτήρη, υπάρχουν ενστάσεις, αλλά αντί να τις περιγράψω, δοκίμασε:

1) Πέρασε στο επισυναπτόμενο αρχείο πολλές εικόνες σε κάποια (ή όλα) τα πεδία συνημμένων (πχ USimage2, USimage4) και πάτησε το κουμπί.

2) Δοκίμασε το ίδιο με τον κώδικά σου.

Δες τη διαφορά.

Φιλικά/Γιώργος

kouk 27-11-15 15:25

1 Συνημμένο(α)
Ευχαριστώ για ακόμη μια φορά kapetang για τις συμβουλές σου και για τον χρόνο σου σπεταλάς με μένα τον άσχετο!!!
Το παράδειγμά σου δουλεύει πολύ καλά και αυτό είναι που θέλω όμως όταν το προσαρμόζω στην βάση μου δεν "τρέχει" .....
:too_angry:

Δεν μπορώ να καταλάβω τι κάνω λάθος...
Από την άλλη η βάση μου είναι πολύ μεγάλη και πολύπλοκη για να μπορέσω να σου την στείλω.
Παρακάτω σου επισυνάπτω κάποιες εικόνες από το πρόβλημα που μου βγάζει..

Ευχαριστώ για ακόμη μία φορά για τον χρόνο σου..

kapetang 27-11-15 17:03

Σωτήρη, δώσε στα πεδία συνημμένων στη φόρμα ίδιο όνομα με αυτό που έχουν στον πίνακα.
Χρησιμοποίησε αντιγραφή και επικόλληση.
Το ξανάπα, αλλά .......

kouk 27-11-15 20:32

1 Συνημμένο(α)
kapetang.....

δες συνημμένο ?????
και πως τρέχει με την δικιά μου πρωτόγονη λύση έχοντας τα ίδια πεδία???

:wall:

kapetang 27-11-15 20:56

1 Συνημμένο(α)
Φίλε μου έχεις μπερδευτεί.

Στο συνημμένο σου φαίνεται η ιδιότητα Control Source (προέλευση στοιχείου ελέγχου) και όχι το όνομα.

Για το όνομα δες το συνημμένο.

kouk 03-12-15 15:51

kapetang

αν και καθυστερημένα (γιατί έλειπα), ευχαριστώ πολύ...:worthy:
...έφαγα μεγάλο φλαςςς...
Ο κώδικά σου δουλεύει τέλεια!!!

Ευχαριστώ για την υπομονή σου και την επιμονή σου να με ξεστραβώσεις...


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

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2