Rename Forms probleem/vraag

Status
Niet open voor verdere reacties.

Speeer445

Gebruiker
Lid geworden
10 jun 2021
Berichten
8
Beste, ik ondervind een probleem bij docmd... waarom weet ik niet maar wil het wel begrijpen.

Als ik DoCmd.Rename "AdresCrediteur", acForm, "Adres_Crediteur" in een functie zet dan werkt die op een of andere manier niet.
Echter zet ik dit in het directscherm dan werkt het wel, waarom?

Gr Speeer445
 
Als je wilt weten wat er gebeurt, is het handig als wij óók weten wat er gebeurt. Daarvoor geef je te weinig informatie. Wat doe je precies?
 
Klein tipje van de sluier:
Als ik DoCmd.Rename "AdresCrediteur", acForm, "Adres_Crediteur" in een functie zet dan werkt die op een of andere manier niet.
Een functie is iets als dit:
Code:
Sub RenameForm()
    DoCmd.Rename "AdresCrediteur", acForm, "Adres_Crediteur"
End Sub
En dat werkt bij mij prima.
 
Probeer eens door je code te steppen en check wat er precies gebeurt. Misschien zorgt de logica van je functie ervoor dat de regel niet uitgevoerd wordt.
 
Een functie met één regel laat zich lastig steppen. Die doet 't, of doet 't niet. Ik weet wel wat er aan de hand is (denk ik), maar ik wacht toch liever even tot TS een keer reageert. Wellicht ziet-ie het probleem zelf ook al wel :).
 
@Octafish: Ik heb die functie van Speer nog niet gezien, dus weet niet hoeveel regels die heeft. Ik neem dus aan dat hij de code naar jou heeft gestuurd en als je dan weet wat er aan de hand is, dan is het wat kinderachtig om het antwoord niet te geven.
 
Ik heb óók geen code gezien, maar ik weet wél een reden (denk niet dat er veel meer zijn) dat dit probleem veroorzaakt. En daar is dus een simpele oplossing voor. Maar het lijkt mij wel zo netjes dat TS een keer reageert. Tot die tijd voel ík mij niet geroepen welke oplossing dan ook te posten. We antwoorden tenslotte om de TS te helpen, verder niets :d.
 
Function met code en reactie bijlage

Beste allemaal, bedankt voor de reacties...
Code :

Function fktRename()
DoCmd.Rename "AdresCrediteur", acForm, "Adres_Crediteur"
end Function

Reactie VBA...
 

Bijlagen

  • Knipsel.PNG
    Knipsel.PNG
    5,9 KB · Weergaven: 23
Staat het formulier open als je het wil hernoemen? Danlukt dat immers niet.
 
@noella: Ik wist wel dat je de reden zelf zou vinden :).
 
@TS: geen idee waarom je daar een functie voor zou maken/gebruiken. Mij lijkt het een actie die je maar éénmaal uitvoert, en het veranderen van één letter in de naam van een formulier is echt veel minder werk dan daar een functie alleen daarvoor maken. Dus wat is het nut hiervan?
 
@Octafish: met een beetje moeite kan je misschien zelf de reden vinden ;)
 
@noella: lezen is blijkbaar lastig met deze warme dagen. Ik had in bericht #5 (ja, ik geef toe: een tijd terug) al aangegeven dat ik de reden wist. In ieder geval één reden. En ja: die heb jij dus uiteindelijk zelf ook bedacht. Nogmaals: ik geef antwoord op vragen van TS. Als iemand anders (zoals jij) een antwoord wil op een nog niet gestelde vraag, dan zou ik zeggen: maak zelf een vraag aan. Krijg je uiteraard gelijk het juiste antwoord, hoef je niet te wachten tot TS reageert :d.
 
OctaFish, geen form open... daarbij een sub kan ik moeilijk oproepen, runnen, ik ken eigenlijk geen VBA.. ik stoei alleen maar ermee.
Een Functie kan ik runnen.. dat kan ik wel. Een regel in een functie... het zouden er meer moeten zijn maar het haperde hierop en dus probeer ik het maar eens met een regel... Vandaar.

"Een functie met één regel laat zich lastig steppen. Die doet 't, of doet 't niet. Ik weet wel wat er aan de hand is (denk ik), maar ik wacht toch liever even tot TS een keer reageert. Wellicht ziet-ie het probleem zelf ook al we"... ik zou niet weten hoe ik dit anders zou moeten doen.....!

AL met al... ik kom er niet achter... ook geen goed antwoord van jullie... blijf dus met dit probleem zitten..
Nu heb ik maar alles via het directscherm gedaan en ben er klaar mee maar ik snap het niet en jullie dus ook niet scheinbaar, jammer...

MVG Speeer445
 
Een functie gebruik je in principe alleen maar als je een resultaat wil terugkrijgen, als je alleen een actie wenst uit te voeren kan je beter een sub routine gebruiken. Ik zou ook de naam als parameter meegeven, zo kan je de sub of functie meerdere malen gebruiken

dus iets als:
Code:
Public Sub sRenameForm(strOldName As String, strNewName As String)
  DoCmd.Rename strNewName, acForm, strOldName
End Sub

of als functie:

Code:
Public Function fRenameForm(strOldName As String, strNewName As String) As String
On Error GoTo Err_fRenameForm

    DoCmd.Rename strNewName, acForm, strOldName
    fRenameForm = "Het formulier is hernoemd naar " & strNewName
    Exit Function
    
Err_fRenameForm:
    fRenameForm = "De actie is mislukt.  Foutmelding: " & Err.Description

End Function

Als je de code oproept moet je dan wel de namen als parameters meegeven.
 
Wij snappen het prima, maar je legt je vraag nogal beroerd uit. Ik heb althans geen idee waarom je dit met VBA zou doen. Er is (in de uitvoeringspraktijk) geen enkel verschil tussen een functieprocedure en een Sub procedure. Dus dat de de één wél kan maken en de ander niet, is nogal verwonderlijk. Alsof je wél in een gele panda kan rijden, maar niet in een rode :). De voorbeelden van Noella zijn wat dat betreft hopelijk duidelijk genoeg voor je. Al ben ik het niet met de eerste zin eens; ik maak althans dat onderscheid tussen functies en subs niet zo strak.
 
Helaas maar toch bedankt voor de reactie...

Gr Speeer445
 

Bijlagen

  • Knipsel1.PNG
    Knipsel1.PNG
    21,9 KB · Weergaven: 27
Dan stel ik voor dat je een voorbeeld van je database zipt en hier bijvoegt zodat we zelf kunnen proberen met jou database.
 
Je krijgt sowieso een foutmelding als je de actie eenmaal hebt uitgevoerd; dan bestaat het oorspronkelijke bestand namelijk niet meer. Ik heb de 'functie' nou een paar keer gedraaid (met dezelfde bestandsnamen in twee varianten) en hij doet het prima. Nogmaals: leg eerst je werkwijze eens goed uit, want je doet dus iets verkeerd. En wij weten niet wat. En dat maakt helpen nogal ingewikkeld.
 
Aangezien de functie/sub geparametriseerd is kan je die zo vaak uitvoeren als je wil. Alleen de juiste parameters invoeren.
Een andere vraag: als je in het VBA venster de optie Tools -> References kiest, staat daar ergens 'Missing ' voor de naam van een referentie/bibliotheek?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan