| Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
![]() |
| | Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
|
#1
| |||
| |||
|
Χρόνια Πολλά σ' όλους Χριστός Ανέστη. Για άλλη μία φορά θα χρειαστώ την βοήθεια από τα μέλη του φόρουμ. Παραθέτω δύο κώδικες, τους οποίους μου τους έστειλε ο Γιώργος (kapetang) σε παλαιότερα θέματα που είχα ζητήσει βοήθεια και εκτελούν τις ακόλουθες εντολές: Ο 1ος μας επιτρέπει να αποθηκεύσουμε σε μορφή pdf έκθεση σε φάκελο που θα επιλέξουμε εμείς. Ο 2ος μας προειδοποιεί για την ύπαρξη αρχείου με το ίδιο όνομα σε προκαθορισμένο φάκελο. Αυτό που θέλω να πετύχω και δεν μπόρεσα, αν και έχω κάνει αρκετές προσπάθειες, να μπορέσω να "παντρέψω" τους δύο κώδικες. Δηλ. ένας κώδικας που με μία εντολή να γίνεται η εξαγωγή του pdf σε φάκελο της επιλογής μου και ταυτόχρονα να υπάρχει μία προειδοποίηση για το εάν στον ίδιο φάκελο υπάρχει ήδη αρχείο με το ίδιο όνομα. Οι προναφερόμενοι κώδικες : 1ος αποθήκευση σε φάκελο επιλογής μας Κώδικας: Public Function PicFolder() As String
Dim blnSelect As Boolean
Dim fld As Object
Set fld = Application.FileDialog(4)
fld.AllowMultiSelect = False
blnSelect = fld.Show
If blnSelect Then
PicFolder = fld.SelectedItems(1)
End If
End Function
Private Sub cmdPDF_ΔελτιοΠαραγγελιας_Click()
Dim strFolder As String
strFolder = PicFolder
If strFolder <> "" Then
DoCmd.OpenReport "RptΔελτία παραγγελίας", acViewPreview, ,
"[ΟΝΟΜΑ_ΠΡΟΜΗΘΕΥΤΗ]=" & "'" & [ΟΝΟΜΑ_ΠΡΟΜΗΘΕΥΤΗ] & "'"
DoCmd.OutputTo acOutputReport, "RptΔελτία παραγγελίας", acFormatPDF,
strFolder & "\" & CStr(ΟΝΟΜΑ_ΠΡΟΜΗΘΕΥΤΗ) & "_Σύνολο Παραγγελιών_" & Format(Now(),
"yyyymmdd") & ".pdf", True
Else
MsgBox "Δεν επιλέξατε φάκελο"
End If
DoCmd.Close acReport, "RptΔελτία παραγγελίας", acSaveNo
End Sub
Κώδικας: Private Sub Εντολή482_Click()
Dim FileName As String
FileName = "C:\Users\" & "ΔΠ." & CStr(ΚωδΔελτίουπαραγγελίας) & _
"_κ.κ.." & CStr(Κείμενο218) & "_" & Format((Κείμενο194),
"yyyymmdd") & ".pdf"
If Dir(FileName) <> "" Then
If MsgBox("Το αρχείο:" & vbCrLf & FileName & vbCrLf & _
"Υπάρχει. Να αντικατασταθεί;", vbCritical + vbYesNo) = vbOK Then
DoCmd.OutputTo acOutputReport, "RptΔελτία παραγγελίας", acFormatPDF,
FileName, True
End If
Else
DoCmd.OutputTo acOutputReport, "RptΔελτία παραγγελίας", acFormatPDF,
FileName, True
End If
End Sub
Τίμος |
|
#2
| |||
| |||
|
Καλημέρα Τίμο δοκίμασε τον παρακάτω κώδικα: Κώδικας: Public Function PicFolder() As String
Dim blnSelect As Boolean
Dim fld As Object
Set fld = Application.FileDialog(4)
fld.AllowMultiSelect = False
blnSelect = fld.Show
If blnSelect Then
PicFolder = fld.SelectedItems(1)
End If
End Function
Private Sub cmdPDF_ΔελτιοΠαραγγελιας_Click()
Dim strFolder As String, strFile As String
strFolder = PicFolder
If strFolder <> "" Then
DoCmd.OpenReport "RptΔελτία παραγγελίας", acViewPreview, , _
"[ΟΝΟΜΑ_ΠΡΟΜΗΘΕΥΤΗ]=" & "'" & [ΟΝΟΜΑ_ΠΡΟΜΗΘΕΥΤΗ] & "'"
strFile = strFolder & "\" & CStr(ΟΝΟΜΑ_ΠΡΟΜΗΘΕΥΤΗ) & "_Σύνολο Παραγγελιών_" & _
Format(Now(), "yyyymmdd") & ".pdf"
Exists strFile
Else
MsgBox "Δεν επιλέξατε φάκελο"
End If
DoCmd.Close acReport, "RptΔελτία παραγγελίας", acSaveNo
End Sub
Public Sub Exists(FileName As String)
If Dir(FileName) <> "" Then
If MsgBox("Το αρχείο:" & vbCrLf & FileName & vbCrLf & _
"Υπάρχει. Να αντικατασταθεί;", vbCritical + vbYesNo) = vbYes Then
DoCmd.OutputTo acOutputReport, "RptΔελτία παραγγελίας", acFormatPDF, _
FileName, True
End If
Else
DoCmd.OutputTo acOutputReport, "RptΔελτία παραγγελίας", acFormatPDF, _
FileName, True
End If
End Sub
Τελευταία επεξεργασία από το χρήστη kapetang : 06-05-17 στις 10:28. Αιτία: Σημείωση |
|
#3
| |||
| |||
|
Καλησπέρα Γιώργο, Σε ευχαριστώ για την άμεση απάντηση σου. Έβαλα τους τρεις κώδικες που έστειλες στην ΒΔ αλλά κάτι γίνεται με τον τελευταίο - "Public Sub Exists" - που αναφέρεται στην αντικατάσταση του αρχείου εφόσον υπάρχει ίδιο. Εμφανίζεται το MsgBox και εάν ζητήσεις αντικατάσταση του αρχείου δεν το κάνει. Μπορείς να κάνεις κάτι για να διορθωθεί και να δουλεύει ολοκληρωμένα; Και κάτι άλλο προς διευκρίνιση, όπως είναι γραμμένος ο κώδικας "Public Sub Exists" γίνεται εξαγωγή αρχείου pdf από την έκθεση "RptΔελτία Παραγγελίας" για κάθε προμηθευτή. Για κάθε εντολή εξαγωγής αρχείου της ίδιας λογικής, δηλ. αποθήκευση σε φάκελο επιλογής μου και ερώτηση εάν υπάρχει ήδη, θα πρέπει να γράφω εκ νέου τον κώδικα "Public Sub Exists" - σωστά; Ευχαριστώ Τίμος |
|
#4
| |||
| |||
|
Καλησπέρα 1) Ο κώδικας, δε δοκιμάστηκε αφού δε διαθέτω τη ΒΔ. 2) Δε θα ξαναγράψεις τον κώδικα. 3) Μετά το μήνυμα πρόσθεσε τον κώδικα: Kill FileName και ξαναδοκίμασε. Κανονικά πρέπει να διαγράφεται το παλιό αρχείο και να αποθηκεύεται το νέο. 4) Ο φάκελος στον οποίο αποθηκεύεται το αρχείο θα πρέπει να επιτρέπει αλλαγές |
|
#5
| |||
| |||
|
Τώρα το είδα άλλαξε το vbOk με το vbYes
|
|
#6
| |||
| |||
|
Γιώργο, Τελικά μετά από αρκετές δοκιμές ανακάλυψα πως έχει πρόβλημα ο κώδικας που παραθέτω. Μου τον έστειλες σε προηγούμενο θέμα που είχα ζητήσει βοήθεια και παρόλου που απάντησα ότι δουλεύει, αλλά λόγω φόρτου εργασίας δεν είχα παρατηρήσει ότι δεν κάνει αντικατάσταση του αρχείου. Σήμερα το πρόσεξα από την ώρα στην ημερομηνία τροποποίησης του αρχείου στις ιδιότητες, παραμένει η αρχική και δεν αλλάζει εκτελώντας την εντολή κατά την διάρκεια της ίδιας μέρας. Εάν μπορείς να βοηθήσεις θα ήταν χρήσιμο. Κώδικας: Private Sub Εντολή482_Click()
Dim FileName As String
FileName = "C:\Users\" & "ΔΠ." & CStr(ΚωδΔελτίουπαραγγελίας) & _
"_κ.κ.." & CStr(Κείμενο218) & "_" & Format((Κείμενο194),_
"yyyymmdd") & ".pdf"
DoCmd.OpenReport "RptΔελτία παραγγελίας", acViewPreview, , _
"[ΟΝΟΜΑ_ΠΡΟΜΗΘΕΥΤΗ]=" & "'" & [ΟΝΟΜΑ_ΠΡΟΜΗΘΕΥΤΗ] & "'"
If Dir(FileName) <> "" Then
If MsgBox("Το αρχείο:" & vbCrLf & FileName & vbCrLf & _
"Υπάρχει. Να αντικατασταθεί;", vbCritical + vbYesNo) = vbOK Then
DoCmd.OutputTo acOutputReport, "RptΔελτία παραγγελίας", acFormatPDF, _
FileName, True
End If
Else
DoCmd.OutputTo acOutputReport, "RptΔελτία παραγγελίας", acFormatPDF, _
FileName, True
End If
DoCmd.Close acReport, "RptΔελτία παραγγελίας", acSaveNo
End Sub
Τίμος |
|
#7
| |||
| |||
|
Καλησπέρα γιώργο, Και εγώ μόλις έστειλα την τελευταία ανάρτηση είδα την απάντηση σου : Παράθεση:
Θα κάνω και τις αλλαγές στους προηγούμενους κώδικες και θα επανέλθω με απάντηση. Ευχαριστώ για τον χρόνο σου Τίμος |
|
#8
| |||
| |||
|
Γιώργο, Κάνοντας αντικατάσταση του vbOk με το vbYes δουλεύει τώρα και η εντολή με τον συνδιασμό των τριών κωδικών. Κάτι τελευταίο για να κλείσει το θέμα, το "Kill FileName" σε ποιο σημείο του κώδικα Public Sub Exists θα πρέπει να το προσθέσω ώστε να είναι εφαρμόσιμος και σε άλλες εντολές. Κώδικας: Public Sub Exists(FileName As String)
If Dir(FileName) <> "" Then
If MsgBox("Το αρχείο:" & vbCrLf & FileName & vbCrLf & _
"Υπάρχει. Να αντικατασταθεί;", vbCritical + vbYesNo) = vbOK Then
DoCmd.OutputTo acOutputReport, "RptΔελτία παραγγελίας", acFormatPDF, _
FileName, True
End If
Else
DoCmd.OutputTo acOutputReport, "RptΔελτία παραγγελίας", acFormatPDF, _
FileName, True
End If
End Sub
Τίμος |
|
#9
| |||
| |||
|
Αφού δουλεύει δε χρειάζεται να προστεθεί η εντολή Kill.
|
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
| ||||
| Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
| [ Εκθέσεις ] Εξαγωγή αρχείου σε μορφή pdf και σε θέση της επιλογής μου | ΤΙΜΟΣ | Access - Ερωτήσεις / Απαντήσεις | 2 | 07-04-17 14:57 |
| [ Πίνακες ] Επιλογή Επωνύμων από Λίστα και ταυτόχρονη συμπλήρωση του Ονόματος | argisl | Access - Ερωτήσεις / Απαντήσεις | 4 | 01-06-16 20:38 |
| [ Εκθέσεις ] Εξαγωγή αρχείου σε μορφή pdf με προειδοποίηση ύπαρξης με ίδιου όνομα | ΤΙΜΟΣ | Access - Ερωτήσεις / Απαντήσεις | 2 | 04-12-15 08:44 |
| [VBA] Χρήση μεταβλητής ονοματος αρχείου σε vlookup | Βασίλης Καραχάλιος | Excel - Ερωτήσεις / Απαντήσεις | 0 | 14-10-14 19:57 |
| [Γενικά] Ταυτόχρονη χρήση ίδιου αρχείου απο δύο χρήστες στο ίδιο τοπικό δίκτυο | Βασίλης Καραχάλιος | Excel - Ερωτήσεις / Απαντήσεις | 5 | 03-04-14 08:47 |
Η ώρα είναι 22:04.


Αλλαγή σε γραμμικό τρόπο

