- Public Function create_form(sql As String) As Boolean
- Dim frm As Form
- Dim rst As Recordset
- dim ctl as control
- dim i, j as integer
- ' --Ouvrir le formulaire en mode modification et caché
- DoCmd.OpenForm "F_AFFICHAGE", acDesign
- , , , , acHidden
- ' --suppression de tous les contrôles avant de les créer de nouveau
- For Each ctl In Forms!F_AFFICHAGE.Controls
- ctl.DeleteControl "F_AFFICHAGE", ctl.Name
- Next ctl
- ' --Source de données de mon formulaire
- Forms![F_AFFICHAGE].RecordSource = sql
- Set rst = Currentdb.OpenRecordset(sql)
- ' --nous ne pensons pas que vous aurez plus de 100 contrôles
- Dim controle(1 To 100) As Control
- ' --Création des contrôles
- If rst.RecordCount <> 0 Then
- i = 1
- j = 1000
- While i < rst.Fields.Count
- ' -- Créer le contrôle i
- Set controle(i) = CreateControl("F_AFFICHAGE", acTextBox)
- ' --lui affecter un nom
- controle(i).Name = "TXT_" & rst.Fields(i).Name
- ' --le positionner sur le formulaire
- controle(i).Left = 100 + j
- ' --Définir sa largeur
- controle(i).Width = 1150
- ' --Définir sa couleur de fond
- controle(i).BackColor = "14742270"
- ' --Définir son effet visuel
- controle(i).SpecialEffect = 0
- controle(i).BackStyle = 0
- controle(i).BorderStyle = 1
- ' --source de données de ce contrôle
- controle(i).ControlSource = rst.Fields(i).Name
- i = i + 1
- j = j + 1150
- Wend
- End If
- ' --Création des entêtes
- j = 1000
- i = 1
- While i < rst.Fields.Count
- Set controle(i) = CreateControl("F_AFFICHAGE", acTextBox, acHeader)
- controle(i).Name = "HD_" & rst.Fields(i).Name
- controle(i).Left = 100 + j
- controle(i).Width = 1150
- controle(i).Height = 700
- controle(i).BackColor = "10081789"
- controle(i).SpecialEffect = 0
- controle(i).BorderStyle = 1
- controle(i).TextAlign = 2
- controle(i).FontWeight = 700
- controle(i).ControlSource = "='" & rst.Fields(i).Name & "'"
- i = i + 1
- j = j + 1150
- Wend
- rst.close
- set rst = Nothing
- ' --Sauvegarder le formulaire
- DoCmd.Save acForm, "F_AFFICHAGE"
- End Function
Public Function create_form(sql As String) As Boolean
Dim frm As Form
Dim rst As Recordset
dim ctl as control
dim i, j as integer
' --Ouvrir le formulaire en mode modification et caché
DoCmd.OpenForm "F_AFFICHAGE", acDesign
, , , , acHidden
' --suppression de tous les contrôles avant de les créer de nouveau
For Each ctl In Forms!F_AFFICHAGE.Controls
ctl.DeleteControl "F_AFFICHAGE", ctl.Name
Next ctl
' --Source de données de mon formulaire
Forms![F_AFFICHAGE].RecordSource = sql
Set rst = Currentdb.OpenRecordset(sql)
' --nous ne pensons pas que vous aurez plus de 100 contrôles
Dim controle(1 To 100) As Control
' --Création des contrôles
If rst.RecordCount <> 0 Then
i = 1
j = 1000
While i < rst.Fields.Count
' -- Créer le contrôle i
Set controle(i) = CreateControl("F_AFFICHAGE", acTextBox)
' --lui affecter un nom
controle(i).Name = "TXT_" & rst.Fields(i).Name
' --le positionner sur le formulaire
controle(i).Left = 100 + j
' --Définir sa largeur
controle(i).Width = 1150
' --Définir sa couleur de fond
controle(i).BackColor = "14742270"
' --Définir son effet visuel
controle(i).SpecialEffect = 0
controle(i).BackStyle = 0
controle(i).BorderStyle = 1
' --source de données de ce contrôle
controle(i).ControlSource = rst.Fields(i).Name
i = i + 1
j = j + 1150
Wend
End If
' --Création des entêtes
j = 1000
i = 1
While i < rst.Fields.Count
Set controle(i) = CreateControl("F_AFFICHAGE", acTextBox, acHeader)
controle(i).Name = "HD_" & rst.Fields(i).Name
controle(i).Left = 100 + j
controle(i).Width = 1150
controle(i).Height = 700
controle(i).BackColor = "10081789"
controle(i).SpecialEffect = 0
controle(i).BorderStyle = 1
controle(i).TextAlign = 2
controle(i).FontWeight = 700
controle(i).ControlSource = "='" & rst.Fields(i).Name & "'"
i = i + 1
j = j + 1150
Wend
rst.close
set rst = Nothing
' --Sauvegarder le formulaire
DoCmd.Save acForm, "F_AFFICHAGE"
End Function