Gebruik jokertekens verbieden

Status
Niet open voor verdere reacties.

Monique75

Gebruiker
Lid geworden
6 mrt 2015
Berichten
40
In een access formulier wordt met een druk op de knop een rapport opgeslagen op sharepoint met als bestandsnaam de scheepsnaam (dit is een ingevuld veld). Dit werkt prima. Er zijn bepaalde tekens die je in een bestandsnaam niet mag gebruiken nl " * : <>? / \ | dit krijg ik voor een deel ondervangen door er een opdracht in te zetten dat als een van deze tekens gebruikt is je dan er zelf een andere naam aan moet geven (is niet handig en praktisch om zelf iedere keer een bestandsnaam te geven).

bijv.:
Code:
 If Bestandsnaam Like ("*/*") Then
DoCmd.OpenForm FouteBestandsnaam

Dit werkt prima. Echter werkt dit natuurlijk niet voor de jokertekens zoals * en ?

Nou mag het van mij ook zo worden ingesteld dat die tekens niet gebruikt mogen worden in dat veld
of zoals hierboven in een if functie dat als ze wel worden gebruikt dat je dan een ander bestandsnaam moet geven.

Ik krijg het nergens voor elkaar dat de * of ? dan als teken wordt gezien en niet als jokerteken.

Hoop dat mijn vraag een beetje duidelijk is en dat iemand me kan helpen hoe voorkom ik dat die tekens gebruikt worden of als ze gebruikt worden dat ik ze met een if functie kan ondervangen
 
Dit: If Bestandsnaam Like ("*/*") Then is een hele onhandige manier van checken. Je kunt veel beter Instr gebruiken. Maar ik zou dus, voordat je überhaupt aan opslaan toekomt, bij het genereren van Bestandsnaam al de foutieve tekens afvangen. Dus voorkomen dat ze gebruikt kunnen worden. Je werkt vanaf een formulier, dus ik neem aan dat je een tekstvak hebt waarin de bestandsnaam moet worden ingetypt?
 
Klopt dat zou mijn favoriete oplossing zijn voorkomen dat ze gebruikt worden. Maar ook dat kan ik niet vinden. Je hebt allerlei mogelijkheden om te zorgen dat een veld op een bepaalde manier wordt ingevuld maar ook hier loop ik aan tegen het feit dat dan de joker als zodanig gezien worden.

De bestandsnaam is dus de scheepsnaam die eerder al gebruikt is
 
Hier de code bij het openen van het ene rapport moet er een ander rapport op sharepoint worden opgeslagen onder de scheepsnaam. Ik had nu de if functie eventueel als oplossing dat ingeval dat teken voorkomt er een formulier opent waarin je zelf een andere naam moet geven maar het teken gewoon niet gebruiken in het veld scheepsnaam is een betere oplossing

Code:
Private Sub Knop77_Click()
On Error GoTo Err_Knop77_Click

    Dim stDocName As String

    stDocName = "Afleveringsbon intern"
    DoCmd.OpenReport stDocName, acPreview
    
    Dim stDocName_2 As String
    Dim Locatie As String
    Dim Bestandsnaam As String
    Dim FouteBestandsnaam

    
    Locatie = "hier staat mijn sharepoint locatie"
    Bestandsnaam = "Opstellijst " & Me.Naam_schip & ".pdf"
    stDocName_2 = "Schip_vastegegevens"
    FouteBestandsnaam = "LeestekensInBestandsnaam"
    
 If Bestandsnaam Like ("*/*") Then
DoCmd.OpenForm FouteBestandsnaam


    DoCmd.OutputTo acOutputReport, stDocName_2, acFormatPDF, Locatie & Bestandsnaam, False


Exit_Knop77_Click:
    Exit Sub

Err_Knop77_Click:
    MsgBox Err.Description
    Resume Exit_Knop77_Click
    
End Sub
 
Laatst bewerkt:
Je haalt de schipsnaam uit dit veld: Me.Naam_schip. Is dat een vrij tekstveld, of komt dat uit de database? Als het laatste het geval is, heb je wellicht een probleem als je tekens in de naam gaat veranderen. Hoe wil je dat de 'verboden' tekens worden vervangen?
 
Dat is uit een database. Als de oplossing wordt dat het mogelijk is om het gebruik ervan te verbieden bij invoeren van het schip dan zorg ik wel dat de bestaande allemaal aangepast wordt (zijn er nu maar een paar waar die tekens gebruikt worden).

Als er een mogelijkheid is dit tijdens het opslaan van het document automatisch te vervangen mag dit gewoon vervangen worden door _ dan vind men het document ook gewoon.

Het zijn maar een paar scheepsnamen waar dit fout gaat (de tekens komen over het algemeen niet voor in een scheepsnaam) dus als het zoals ik nu heb met een functie te ondervangen is dat je het voor die paar namen zelf handmatig moet aanpassen is dat ook een oplossing.

Alleen nu krijg ik voor die paar schepen een niet leesbaar document omdat hij niet om kan gaan met die tekens.
 
Ik zou het dan zo oplossen:
Code:
Dim stDocName As String, stDocName_2 As String, Locatie As String, Bestandsnaam As String, Bestandsnaam2 As String
Const sChk As String = "*:<>?/\|"
Dim i As Byte
    stDocName = "Afleveringsbon intern"
''    DoCmd.OpenReport stDocName, acPreview
    Locatie = "hier staat mijn sharepoint locatie"
    ''Bestandsnaam = "Opstellijst " & Me.Naam_schip & ".pdf"
    Bestandsnaam = "Opstellijst " & InputBox("Typ de naam van een schip", "Schipsnaam", "Bootje * <> ??| of zoiets" & ".pdf")
    Bestandsnaam2 = Bestandsnaam
    For i = 1 To Len(sChk)
        Bestandsnaam2 = Replace(Bestandsnaam2, Mid(sChk, i, 1), "_")
    Next i
    MsgBox Bestandsnaam2

Ik heb uiteraard getest met een Inputbox, want ik heb je db niet. Maar bij mij werkt 't prima.
 
Het is gelukt wederom weer superbedankt voor je hulp. (gebruik hem vaak al weet je dat meestal niet:d)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan