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

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 13-07-20, 10:26
Όνομα: ΙΩΑΝΝΗΣ
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 27-01-2020
Μηνύματα: 83
Προεπιλογή Argument not optional

Kαλημερα.Εχω το συκεκριμενο error.Δεν μπορεσα να βρω καποια ακρη ομως για να το λυσω




Public Function MakeNameFolder(ByVal sEpitheto As String, ByVal sOnoma As String) As String
Dim strname As String
If dir(strParentFolder, vbDirectory) = "" Then
MkDir strParentFolder
End If
If Len(sOnoma) * Len(sEpitheto) Then
strname = Replace(sOnoma, " ", "_") & "_" & _
Replace(sEpitheto, " ", "_")
End If
MakeNameFolder = strParentFolder & strname
End Function
Function FileExist(FileFullPath As String) As Boolean
Dim value As Boolean
value = False
If dir(FileFullPath) <> "" Then
value = True
End If
FileExist = value
End Function

Function pdfSave() As String

Dim fileName As String, fldrPath As String, filePath As String
Dim answer As Integer
Dim strFolder As String
Dim strNewFolder As String

strNewFolder = MakeNameFolder 'το error ειναι εδω
strFolder = MakeNameFolder

On Error GoTo err_Hander

fileName = "Αίθουσα_Τοκετών" & "_" & Format(date, "dd-mm-yyyy")
filePath = MakeNameFolder & "\" & fileName & ".pdf"

If MakeNameFolder <> "" Then
If dir(MakeNameFolder, vbDirectory) = "" Then
MkDir MakeNameFolder
MsgBox "Δημιουργήθηκε φάκελος" & vbCrLf & strParentFolder, vbOKOnly + vbInformation, "Φάκελος Ειδικευόμενου"
End If

If FileExist(filePath) Then
answer = MsgBox("Tο αρχείο υπάρχει ήδη" & vbNewLine & filePath & vbNewLine & vbNewLine & _
"Να γίνει αντικατάσταση;", vbYesNo + vbInformation, "Αντικατάσταση")


If answer = vbNo Then
Exit Function
Else
DoCmd.OutputTo acReport, "Αίθουσα_Τοκετών", acFormatPDF, filePath
MsgBox "Το αρχείο αντικαταστάθηκε στον φάκελο " & vbCrLf & filePath, vbOKOnly + vbInformation, "Αποθήκευση αναφοράς"
Shell "EXPLORER.EXE" & " " & Chr(34) & strFolder & Chr(34), vbNormalFocus
End If

Else
DoCmd.OutputTo acReport, "Αίθουσα_Τοκετών", acFormatPDF, filePath
MsgBox "Το αρχείο αποθηκεύτηκε στον φάκελο " & vbCrLf & filePath, vbOKOnly + vbInformation, "Αποθήκευση αναφοράς"
Shell "EXPLORER.EXE" & " " & Chr(34) & strFolder & Chr(34), vbNormalFocus



End If
End If
Exit Function
err_Hander:
MsgBox "Error #" & Err.Number & vbCrLf & Err.Description
End Function
Απάντηση με παράθεση
  #2  
Παλιά 13-07-20, 20:44
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Γιάννη, το καλό είναι ότι σου δίνεται η πληροφορία του σφάλματος με νούμερο και περιγραφή.
Argument not optional: Σημαίνει ότι σε κάποιο σημείο του κώδικα καλείται κάποια συνάρτηση ή εντολή χωρίς να της έχουν δοθεί ένα ή περισσότερα απαραίτητα ορίσματα.

Δες εδώ:https://docs.microsoft.com/en-us/dot...t-not-optional

Στο παράδειγμα σου καλείς strNewFolder = MakeNameFolder όπου πολύ σωστά προκαλείται σφάλμα αφού η συνάρτηση:

MakeNameFolder(ByVal sEpitheto As String, ByVal sOnoma As String) απαιτεί 2 ορίσματα.

Θα πρέπει λοιπόν να γράψεις: strNewFolder =MakeNameFolder("Το επίθετο","Το όνομα")

Φυσικά αντί για "Το επίθετο","Το όνομα" θα δώσεις 2 μεταβλητές πχ. Lastname, Firstname

Καλή συνέχεια!
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #3  
Παλιά 13-07-20, 21:02
Όνομα: ΙΩΑΝΝΗΣ
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 27-01-2020
Μηνύματα: 83
Προεπιλογή

ok Τασο θα το κοιταξω.Ναι ειχα καταλαβει οτι θελει ορισματα αλλα δεν ηξερα τι να βαλω.πχ τωρα εβαλα
strNewFolder =MakeNameFolder("Epitheto","onoma")

Aπλα δεν καταλαβα πως θα λειτουργησει ολο αυτο οπως μου απαντησες και στο αλλο ποστ


Τον παρακάτω κώδικα (Function) μπορείς να τον βάλεις στο ίδιο Module:

Public Function MakeNameFolder(ByVal sEpitheto As String, ByVal sOnoma As String) As String
Const strParentFolder As String = "C:\test"
Dim strname As String
If Dir(strParentFolder, vbDirectory) = "" Then
MkDir strParentFolder
End If
If Len(sOnoma) * Len(sEpitheto) Then
strname = Replace(sOnoma, " ", "_") & "_" & _
Replace(sEpitheto, " ", "_")
End If
MakeNameFolder = strParentFolder & strname
End Function

Αντικατέστησε των κώδικα που έχεις στην αναφορά με:"θα το βαλω σε event load_form"

str=MakeNameFolder(Me.ΕΠΙΘΕΤΟ, Me.ΟΝΟΜΑ)

Σε ευχαριστω
Απάντηση με παράθεση
  #4  
Παλιά 13-07-20, 21:40
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Δεν χρειάζεται αφού είναι Public που σημαίνει ότι είναι προσβάσιμος από οπουδήποτε, ακόμα και από άλλα, "ξένα" προγράμματα.
Αυτό θα το διαπιστώσεις όταν πληκτρολογήσεις str=MakeNameFolder( και θα σου ανοίξει το popup με τα ορίσματα.
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #5  
Παλιά 14-07-20, 09:47
Όνομα: ΙΩΑΝΝΗΣ
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 27-01-2020
Μηνύματα: 83
Προεπιλογή

Καλημερα.Τασο επειδη δεν μου βγαινει.Οπως θα δεις στην βαση που αναβαζω στην ουσια θελω ,αφου ανοιξω μια αναφορα και κανω δεξι κλικ-εξαγωγη σε pdf,να αποθηκευεται σε συγκεκριμενη τοποθεσια που εχω δηλωσει (αυτο λειτουργει πχ c:\test) αλλα και να φτιαχνει ταυτοχρονα φακελο με το ονομα και το επιθετο (πχ c:\test\ονομα_επιθετο\)

Και τελος αν γινεται να παιρβνει δυναμικα και να αποθηκευεται η εκαστοτε αναφορα με το ονομα της (πχ c:\test\ονομα_επιθετο\ονομα_αν φορας\)
Συνημμένα Αρχεία
Τύπος Αρχείου: zip report.zip (142,7 KB, 3 εμφανίσεις)
Απάντηση με παράθεση
  #6  
Παλιά 14-07-20, 11:54
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Φίλε μου Γιάννη, θα πρέπει να μελετήσεις λίγο παραπάνω την Access και την VBA για να μπορείς να διαχειριστείς τις απαντήσεις που υπάρχουν σε αφθονία και στο φόρουμ αυτό αλλά και στο Internet γενικότερα.


Θα σου κοστίσει λιγότερο χρόνο να μελετήσεις και να μάθεις από το να προσπαθείς να πειραματίζεσαι πάνω σε άγνωστα αντικείμενα που δεν έχεις μάθει ακόμα.

Σου επισυνάπτω ένα αρχείο/παράδειγμα που πιστεύω ότι θα σε βοηθήσει να συνεχίσεις.

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

Τάσος
Συνημμένα Αρχεία
Τύπος Αρχείου: accdb report1.accdb (520,0 KB, 10 εμφανίσεις)
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #7  
Παλιά 23-07-20, 11:21
Όνομα: ΙΩΑΝΝΗΣ
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 27-01-2020
Μηνύματα: 83
Προεπιλογή

Καλημερα Τασο.Εχω διαβασει αρκετα νηματα οσο αφορα την access.Παντως οπως και να χει σε ευχαριστω για την βοηθεια
Απάντηση με παράθεση
  #8  
Παλιά 23-07-20, 12:03
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Γιάννη να είσαι καλά!

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

Η θεωρία "περισσότερη μελέτη" που ανέφερα στο προηγούμενο μου μήνυμα είναι εμπειρία μιας εικοσαετίας στο χώρο και είναι κάτι που εγώ προσωπικά εφαρμόζω και θα εφαρμόζω για πάντα.
Αυτό βεβαίως δεν είναι πάντα εφικτό. Πρέπει να υπάρχουν και οι κατάλληλες προϋποθέσεις όπως χρόνος, καθαρό μυαλό (μακριά από έγνοιες κλπ.) ώστε να μπορεί κανείς να συγκεντρωθεί και να αποδώσει.

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

Με εκτίμηση

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
Απάντηση στο θέμα


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

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



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