Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Wanet Telecoms Ltd on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

naming a form dynamically 1

Status
Not open for further replies.

lanelouna

Programmer
Dec 19, 2002
71
GB
Hello,
I guess you know how to do this thing, I beleive it is quite simple, but I don't know how to do it.
in fact my problem is how to give a name to a form which is created dynamically when the users update years value.
this form is supposed to ask the users to enter some values: years and Percent. then when finished the user closes the form (the values will be saved to a table, but I haven't done this step yet)
my question is how to save the form wth a dynamic name
formname = "FormMR" & formNumber
knowing that I am using access 97.

I added here my code, which works fine
the only thing that i need to add is how can i give the form a name
thank you in advance
Lina





Private Sub InvestMRNombreAnnee02_AfterUpdate()



On Error GoTo InvestMRNombreAnnee02_Err
Dim frm As Form

Dim formNumber As String

Dim formName As String
Dim initialFormName As String
initialFormName = Me.Name
formNumber = Right(initialFormName, 2)
formName = "FormMR" & formNumber
Dim counterYears As Integer
Dim firstYear As Integer
Dim i As Integer
Dim a As String

counterYears = Me![InvestMRNombreAnnee02]
firstYear = Me![InvestMRpremAnneeInvest01]
'DoCmd.OpenForm formName, acDesign, "", "", , acHidden

Set frm = CreateForm(, "search")
a = frm.Name



Dim ctlTexteYear As Control, ctlTextePercent As Control
Dim ctlEtiquetteYear As Control, ctlEtiquetteTitre As Control
Dim ctlLabelYear As Control, ctlLabelPercent As Control
Dim ctlEtiquettePercent As Control


Dim entDonnéeYearX As Integer, entDonnéeYearY As Integer
Dim entDonnéePercentX As Integer, entDonnéePercentY As Integer
Dim entLabelDecaissementX As Integer, entLabelDecaissmentY As Integer
Dim entLabelTitreX As Integer, entLabelTitreY As Integer
Dim entLabelYearX As Integer, entLabelYearY As Integer
Dim entLabelPercentX As Integer, entLabelPercentY As Integer
Dim entLabelPourcentX As Integer, entLabelPourcentY As Integer
Dim entOkButtonX As Integer, entOkbuttonY As Integer

entLabelTitreX = 100
entLabelTitreY = 50
entLabelYearX = 2800
entLabelYearY = 300
entLabelPercentX = 4800
entLabelPercentY = 300
entOkButtonX = 10000
entOkbuttonY = 1500



Set ctlEtiquetteTitre = CreateControl(frm.Name, acLabel, , , "Répartition décaissements Materiel Roulant", entLabelTitreX, entLabelTitreY, 1, 1)
ctlEtiquetteTitre.Name = "titreMRRepartitionSc" & formNumber
Set ctlLabelYear = CreateControl(frm.Name, acLabel, , , "Année", entLabelYearX, entLabelYearY, 1, 1)
ctlLabelYear.Name = "titreMRAnneeSc" & formNumber
ctlLabelYear.FontWeight = 600
Set ctlLabelPercent = CreateControl(frm.Name, acLabel, , , "Pourcentage", entLabelPercentX, entLabelPercentY, 1, 1)
ctlLabelPercent.Name = "titreMRPercentSc" & formNumber
ctlLabelPercent.FontWeight = 600

For i = 1 To counterYears
' Définit les valeurs de position pour les nouveaux contrôles.

entLabelDecaissementX = 100
entLabelDecaissmentY = 100 + 500 * i
entDonnéeYearX = 2500
entDonnéeYearY = 100 + 500 * i
entDonnéePercentX = 4500
entDonnéePercentY = 100 + 500 * i
entLabelPourcentX = 6500
entLabelPourcentY = 100 + 500 * i


Set ctlTexteYear = CreateControl(frm.Name, acTextBox, , "", "", _
entDonnéeYearX, entDonnéeYearY)
ctlTexteYear.Name = "MRSC" & formNumber & "_Année_" & i

Set ctlEtiquetteYear = CreateControl(frm.Name, acLabel, , ctlTexteYear.Name, "Année " & i & " de décaissement:", _
entLabelDecaissementX, entLabelDecaissmentY, 1, 1)
ctlEtiquetteYear.Name = "LabelMRSC" & formNumber & "_Année_" & i




Set ctlTextePercent = CreateControl(frm.Name, acTextBox, , "", "", _
entDonnéePercentX, entDonnéePercentY)
ctlTextePercent.Name = "MRSC" & formNumber & "_Percent" & i

Set ctlEtiquettePercent = CreateControl(frm.Name, acLabel, , , " %", _
entLabelPourcentX, entLabelPourcentY, 1, 1)


Next i
Dim mdlName As String
Dim mdl As Module
Dim BtnClose As Control



Set BtnClose = CreateControl(frm.Name, acCommandButton, , , "", 8000, 500, 600, 600)
BtnClose.Name = "boutonFermer"
' describe button
With BtnClose
.Caption = "&Close"
.Cancel = True
.TabIndex = 2
End With
BtnClose.OnClick = "[Event Procedure]"
Dim strAddCode As String
Dim frm2 As Form

Set frm2 = Forms(frm.Name)
Set mdl = frm2.Module
' refer to the module

strAddCode = "" ' start to build code
'add code below to close form w/o saving it
strAddCode = "Private Sub " & BtnClose.Name & "_Click()" & vbCrLf
strAddCode = strAddCode & "DoCmd.Close, , acsaveyes"
strAddCode = strAddCode & vbCrLf
strAddCode = strAddCode & "End Sub" & vbCrLf
strAddCode = strAddCode & vbCrLf



With mdl ' add code to module here
.InsertText (strAddCode)

End With




DoCmd.OpenForm frm.Name, acNormal, "", "", , acNormal

InvestMRNombreAnnee02_Exit:
Exit Sub

InvestMRNombreAnnee02_Err:
MsgBox Error$
Resume InvestMRNombreAnnee02_Exit

End Sub



 
One note on that code. I found it interesting, and thought it would be useful to try, so I tried it out. Please notice that if you tested the code as is, you have to create a table for usage with it. But, also you have to take out the comment ' mark on the first line, or else it will not run, either.

You should be able to adapt some of the info to your existing code with no problem.
 
in fact it worked when i used the rename form thanks to your code


Dim defaultFrmName As String

Set frm = CreateForm(, "search")
defaultFrmName = frm.Name


DoCmd.Close acForm, frm.Name, acSaveYes
DoCmd.Rename formName, acForm, defaultFrmName
DoCmd.OpenForm formName, acNormal, "", "", , acNormal

your code is very helpful I appreciate it
thank you
Lina
 
Well, actually not my code, just a link I found. You're welcome, nonetheless.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top