Formulier aanmaken run modus

Status
Niet open voor verdere reacties.

sanders1969

Gebruiker
Lid geworden
29 dec 2018
Berichten
243
Onderstaande code kan ik een formulier aanmaken in run modus echter loopt het vast bij het declareren van de frm object.
Ik zie dat de formulier is aangemaakt in mijn formulierlijst.
Moet ik een refresh doen of iets dergelijks?


Code:
Dim strFormNameCopy As String
Dim strFormNamePaste As String
Dim frm As Form

    strFormNameCopy = "frmTemplate"
    strFormNamePaste = "frmNieuw"
    
    DoCmd.CopyObject NewName:=strFormNamePaste, SourceObjectType:=acForm, SourceObjectName:=strFormNameCopy
    Set frm = Forms(strFormNamePaste)
    Set ctl = CreateControl(strFormNamePaste, acLabel, acDetail, "", "", 100, 100, 100, 100)
    With ctl
       .Name = "Label1"
       .Caption = "Hello World!"
       .Height = 200
       .Width = 500
       .FontSize = 11
       .Visible = True
       .BackColor = vbBlack
       .ForeColor = vbWhite
    End With
    DoCmd.OpenForm strFormNamePaste
 
na de 'set' gebruik je het object frm toch niet meer ...
Pas laatste regel eens aan :

Code:
DoCmd.OpenForm frm
 
Laatst bewerkt:
Ja die had ik ook al geprobeerd maar ik kan dan geen objecten aanmaken in formulier.
Vandaar dat ik het frm object wilde declareren en pas wanneer de control is aangemaakt in betreffende formulier dan pas openen.
Heb je nog een suggestie?
 
Ik zei dan ook 'laatste regel' dus na de declaraties, ook van de controls...
Maar het zou inderdaad wel kunnen zijn dat je geen control kan aanmaken op een object dat je nog niet hebt geopend.
Dus zou je het moeten openen en pas laten zien als het 'af' is...

Dat kan je doen met de Screenupdating = false/true switch
 
Laatst bewerkt:
Nope lukt nog steeds niet en ik heb online al wat gevonden maar blijft vastlopen op frm object declaratie

Code:
Dim strFormNameCopy As String
Dim strFormNamePaste As String
Dim frm As Form

    strFormNameCopy = "frmTemplate"
    strFormNamePaste = "frmNieuw"
    
    RefreshDatabaseWindow
    DoCmd.Close acForm, strFormNamePaste
    
    RefreshDatabaseWindow
    DoCmd.DeleteObject acForm, strFormNamePaste
    
    RefreshDatabaseWindow

    DoCmd.CopyObject NewName:=strFormNamePaste, SourceObjectType:=acForm, SourceObjectName:=strFormNameCopy
    RefreshDatabaseWindow
    DoCmd.OpenForm strFormNamePaste
    DoCmd.Close acForm, strFormNamePaste
    
    Set frm = Forms(strFormNamePaste).Form
    Set ctl = CreateControl(strFormNamePaste, acLabel, acDetail, "", "", 100, 100, 100, 100)
    With ctl
       .Name = "Label1"
       .Caption = "Hello World!"
       .Height = 200
       .Width = 500
       .FontSize = 11
       .Visible = True
       .BackColor = vbBlack
       .ForeColor = vbWhite
    End With
 
Alles wat je eraan toegevoegd hebt doet volgens mij niets terzake en maakt er eigenlijk gewoon een zootje van : je sluit forms die nog niet waren geopend, opent een form om hem onmiddellijk zonder wijziging weer te sluiten etc...
Sloop al die onzin beter er terug uit ...
 
En daarna probeer je beste eens met :

Code:
Dim frm as Object
 
Op de regel met de declaratie ? DIM ? lijkt me sterk ...
 
Run zelf maar:

Code:
Dim strFormNameCopy As String
Dim strFormNamePaste As String
Dim frm As Object

    strFormNameCopy = "frmTemplate"
    strFormNamePaste = "frmNieuw"
    
    DoCmd.CopyObject NewName:=strFormNamePaste, SourceObjectType:=acForm, SourceObjectName:=strFormNameCopy
    RefreshDatabaseWindow
    
    DoCmd.OpenForm strFormNamePaste
    DoCmd.Close acForm, strFormNamePaste
    
    Set frm = Forms(strFormNamePaste).Form
    Set ctl = CreateControl(strFormNamePaste, acLabel, acDetail, "", "", 100, 100, 100, 100)
    With ctl
       .Name = "Label1"
       .Caption = "Hello World!"
       .Height = 200
       .Width = 500
       .FontSize = 11
       .Visible = True
       .BackColor = vbBlack
       .ForeColor = vbWhite
    End With
 
Draadje heeft lang genoeg geduurd, het wordt tijd voor een oplossing :)
Code:
    DoCmd.CopyObject NewName:=strFormNamePaste, SourceObjectType:=acForm, SourceObjectName:=strFormNameCopy
    DoCmd.OpenForm strFormNamePaste, acDesign
    Set frm = Forms(strFormNamePaste)
 
Zo werkt het ....

Code:
Sub test()
Dim strFormNameCopy As String
Dim strFormNamePaste As String


    strFormNameCopy = "frmTemplate"
    strFormNamePaste = "frmNieuw"
    
    DoCmd.CopyObject NewName:=strFormNamePaste, SourceObjectType:=acForm, SourceObjectName:=strFormNameCopy
    DoCmd.OpenForm strFormNamePaste, acDesign
    Set ctl = CreateControl(strFormNamePaste, acLabel, acDetail, "", "", 100, 100, 100, 100)
    With ctl
       .Name = "Label1"
       .Caption = "Hello World!"
       .Height = 200
       .Width = 500
       .FontSize = 11
       .Visible = True
       .BackColor = vbBlack
       .ForeColor = vbWhite
    End With
End Sub
 
Heren

Bedankt!, Top het werkt!
En Octafish, toen ik jou voorbij zag komen, was in de supermarkt, wist ik, hehe het is opgelost haha...
 
Absoluut niet !!! Ik heb nét iets later dan jij op de zendknop gedrukt omdat ik het ganse codestuk aan het testen was ...
Van bescheidenheid heb jij ook nooit last hé !
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan