Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   Argument not optional (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/5598-argument-not-optional.html)

gianniskar 13-07-20 09:26

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

Tasos 13-07-20 19:44

Γιάννη, το καλό είναι ότι σου δίνεται η πληροφορία του σφάλματος με νούμερο και περιγραφή.
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

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

gianniskar 13-07-20 20:02

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.ΟΝΟΜΑ)

Σε ευχαριστω

Tasos 13-07-20 20:40

Δεν χρειάζεται αφού είναι Public που σημαίνει ότι είναι προσβάσιμος από οπουδήποτε, ακόμα και από άλλα, "ξένα" προγράμματα.
Αυτό θα το διαπιστώσεις όταν πληκτρολογήσεις str=MakeNameFolder( και θα σου ανοίξει το popup με τα ορίσματα.

gianniskar 14-07-20 08:47

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

Και τελος αν γινεται να παιρβνει δυναμικα και να αποθηκευεται η εκαστοτε αναφορα με το ονομα της (πχ c:\test\ονομα_επιθετο\ονομα_αν φορας\)

Tasos 14-07-20 10:54

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


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

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

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

Τάσος

gianniskar 23-07-20 10:21

Καλημερα Τασο.Εχω διαβασει αρκετα νηματα οσο αφορα την access.Παντως οπως και να χει σε ευχαριστω για την βοηθεια :icon_yes:

Tasos 23-07-20 11:03

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

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

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

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

Με εκτίμηση

Τάσος


Η ώρα είναι 07:31.

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


Search Engine Optimization by vBSEO 3.3.2