Сохранить значение из выпадающего списка в имени файла - PullRequest
1 голос
/ 16 июня 2019

Я пытаюсь сохранить значение 1 или 2 комбинированных списков в имени файла.

Когда ничего не выбрано, имя файла для сохранения будет OverzichtTotaal.

Когда что-тов транзакции со списком (Me.KeuzeTransactie) (покупка, продажа ...), то имя файла для сохранения должно быть Overzicht Buy...

Если во втором поле со списком выбран год (Me.KeuzeDatum), тогдаимя файла должно быть Overzicht 2015.

И когда что-то выбрано в обоих выпадающих списках, тогда имя должно быть Overzicht 2015 Buy...

Private Sub CmdSave_Click()
    If Me.FilePath = "" Or IsNull(Me.FilePath) Then
        MsgBox "Kies een path!"
        Exit Sub
    End If

    If Right(Me.FilePath, 1) <> "\" Then Me.FilePath = Me.FilePath & "\"

    If Dir(FilePath, vbDirectory) = "" Then
        Shell ("cmd /c mkdir """ & FilePath & """")
    End If

    pathName = Me.FilePath

    If Me.KeuzeTransActie = "" Then
        fileName = pathName & " " & Format(Date, "yyyy-mm-dd") & " " & "OverzichtTotaal.pdf"
    End If
    If Not IsNull(Me.KeuzeDatum) Then
        fileName = pathName & " " & Format(Date, "yyyy-mm-dd") & " " & "Overzicht" & "Jaar.pdf"
    End If
    If Not IsNull(Me.KeuzeTransActie) Then
        fileName = pathName & " " & Format(Date, "yyyy-mm-dd") & " " & "Overzicht" & "Transactie.pdf"
    End If
    'fileName = pathName & " " & Format(Date, "yyyy-mm-dd") & " " & "Overzicht.pdf" & "Jaar" & "Transactie"
    DoCmd.OutputTo acOutputReport, "rptOverzicht", acFormatPDF, fileName, , , , acExportQualityPrint
    'DoCmd.Close acReport, "rptOverzicht"

1 Ответ

2 голосов
/ 16 июня 2019

Каждый модуль должен иметь Option Explicit в заголовке. Это потребует объявления переменных и поможет найти орфографические ошибки. В VBE установлено Tools>Options>Editor>check RequireVariableDeclaration, поэтому новые модули будут включены по умолчанию.

Справочные списки в конкатенации. Обратите внимание на использование символа + в конкатенации. Арифметика с нулевым значением приводит к нулевому значению, поэтому использование + для объединения комбобокса с пробелом возвращает нулевое значение, если комбобокс равен нулю, и дополнительное пространство не объединяется. Конкатенация с & будет игнорировать Null (если все входные данные не равны NULL) и вернет части строки. Это предполагает, что в выпадающих списках не может быть пустой строки.

Option Compare Database
Option Explicit
_________________________________________________

Private Sub CmdSave_Click()
    Dim fileName As String, booSave As Boolean

    With Me

        If .FilePath & "" = "" Then
            MsgBox "Kies een path!"

        Else

            If Right(.FilePath, 1) <> "\" Then .FilePath = .FilePath & "\"

            If Dir(.FilePath, vbDirectory) = "" Then MkDir .FilePath

            fileName = .FilePath & Format(Date, "yyyy-mm-dd") & " Overzicht" _
                 & Nz(" " + .KeuzeDatum & " " + .KeuzeTransActie.Column(1), "Totaal") & ".pdf"

            booSave = True
            If Dir(filename) <> "" Then
                If MsgBox("File already exists, do you want to overwrite?", vbYesNo) = vbNo Then booSave = False
            End If
            If booSave Then DoCmd.OutputTo acOutputReport, "rptOverzicht", acFormatPDF, fileName, , , , acExportQualityPrint

        End If

    End With

End Sub
...