Attribute VB_Name = "mod_FormBuilder" Option Compare Database Option Explicit ' ============================================ ' mod_FormBuilder - Generateur de formulaires ' Execute BuildAllForms() pour creer les forms ' ============================================ Public Sub BuildAllForms() On Error GoTo ErrHandler BuildFormAccueil BuildFormClients BuildFormProjets BuildFormSaisieTemps BuildFormHistorique MsgBox "Tous les formulaires ont ete crees!", vbInformation, "TimeTrack Pro" Exit Sub ErrHandler: MsgBox "Erreur: " & Err.Description, vbCritical, "Erreur" End Sub Public Sub BuildFormAccueil() Dim frm As Form, ctl As Control On Error Resume Next DoCmd.DeleteObject acForm, "frm_Accueil" On Error GoTo 0 Set frm = CreateForm() frm.Caption = "TimeTrack Pro - Accueil" frm.RecordSelectors = False frm.NavigationButtons = False frm.ScrollBars = 0 frm.Width = 7000 frm.Section(0).Height = 5000 ' Titre Set ctl = CreateControl(frm.Name, acLabel, acDetail, , , 500, 300, 5500, 600) ctl.Caption = "TimeTrack Pro" ctl.FontSize = 24 ctl.FontBold = True ctl.ForeColor = RGB(0, 102, 204) ctl.Name = "lblTitre" ' Sous-titre Set ctl = CreateControl(frm.Name, acLabel, acDetail, , , 500, 950, 5000, 350) ctl.Caption = "Gestionnaire de temps professionnel" ctl.FontSize = 11 ctl.FontItalic = True ctl.ForeColor = RGB(100, 100, 100) ctl.Name = "lblSousTitre" ' Bouton Clients Set ctl = CreateControl(frm.Name, acCommandButton, acDetail, , , 500, 1700, 2500, 550) ctl.Caption = "Gerer les Clients" ctl.Name = "btnClients" ctl.OnClick = "=OpenFormClients()" ' Bouton Projets Set ctl = CreateControl(frm.Name, acCommandButton, acDetail, , , 500, 2450, 2500, 550) ctl.Caption = "Gerer les Projets" ctl.Name = "btnProjets" ctl.OnClick = "=OpenFormProjets()" ' Bouton Saisie Set ctl = CreateControl(frm.Name, acCommandButton, acDetail, , , 500, 3200, 2500, 550) ctl.Caption = "Saisir du Temps" ctl.Name = "btnSaisie" ctl.OnClick = "=OpenFormSaisieTemps()" ' Bouton Historique Set ctl = CreateControl(frm.Name, acCommandButton, acDetail, , , 500, 3950, 2500, 550) ctl.Caption = "Voir l'Historique" ctl.Name = "btnHistorique" ctl.OnClick = "=OpenFormHistorique()" ' Stats Set ctl = CreateControl(frm.Name, acLabel, acDetail, , , 3800, 1700, 1500, 300) ctl.Caption = "Clients:" ctl.FontBold = True Set ctl = CreateControl(frm.Name, acTextBox, acDetail, , , 5300, 1700, 1200, 300) ctl.ControlSource = "=DCount('*','tbl_Clients')" ctl.Name = "txtStatClients" ctl.Enabled = False ctl.Locked = True ctl.BackStyle = 0 ctl.BorderStyle = 0 Set ctl = CreateControl(frm.Name, acLabel, acDetail, , , 3800, 2100, 1500, 300) ctl.Caption = "Projets:" ctl.FontBold = True Set ctl = CreateControl(frm.Name, acTextBox, acDetail, , , 5300, 2100, 1200, 300) ctl.ControlSource = "=DCount('*','tbl_Projets','Actif=True')" ctl.Name = "txtStatProjets" ctl.Enabled = False ctl.Locked = True ctl.BackStyle = 0 ctl.BorderStyle = 0 Set ctl = CreateControl(frm.Name, acLabel, acDetail, , , 3800, 2500, 1500, 300) ctl.Caption = "Heures:" ctl.FontBold = True Set ctl = CreateControl(frm.Name, acTextBox, acDetail, , , 5300, 2500, 1200, 300) ctl.ControlSource = "=Nz(DSum('Duree','tbl_Temps'),0)" ctl.Name = "txtStatHeures" ctl.Enabled = False ctl.Locked = True ctl.BackStyle = 0 ctl.BorderStyle = 0 ctl.Format = "0.0" DoCmd.Close acForm, frm.Name, acSaveYes DoCmd.Rename "frm_Accueil", acForm, frm.Name End Sub Public Sub BuildFormClients() Dim frm As Form, ctl As Control On Error Resume Next DoCmd.DeleteObject acForm, "frm_Clients" On Error GoTo 0 Set frm = CreateForm() frm.RecordSource = "tbl_Clients" frm.Caption = "Gestion des Clients" frm.DefaultView = 0 frm.NavigationButtons = True frm.RecordSelectors = True ' Header frm.Section(acHeader).Visible = True frm.Section(acHeader).Height = 550 Set ctl = CreateControl(frm.Name, acLabel, acHeader, , , 200, 120, 4000, 350) ctl.Caption = "Gestion des Clients" ctl.FontSize = 14 ctl.FontBold = True ctl.Name = "lblHeader" ' Champs Set ctl = CreateControl(frm.Name, acLabel, acDetail, , , 200, 150, 1400, 280) ctl.Caption = "ID Client:" Set ctl = CreateControl(frm.Name, acTextBox, acDetail, , , 1700, 150, 1000, 280) ctl.ControlSource = "ClientID" ctl.Name = "txtClientID" ctl.Enabled = False ctl.Locked = True ctl.TabStop = False Set ctl = CreateControl(frm.Name, acLabel, acDetail, , , 200, 520, 1400, 280) ctl.Caption = "Nom:*" Set ctl = CreateControl(frm.Name, acTextBox, acDetail, , , 1700, 520, 4000, 280) ctl.ControlSource = "Nom" ctl.Name = "txtNom" Set ctl = CreateControl(frm.Name, acLabel, acDetail, , , 200, 890, 1400, 280) ctl.Caption = "Email:" Set ctl = CreateControl(frm.Name, acTextBox, acDetail, , , 1700, 890, 4000, 280) ctl.ControlSource = "Email" ctl.Name = "txtEmail" Set ctl = CreateControl(frm.Name, acLabel, acDetail, , , 200, 1260, 1400, 280) ctl.Caption = "Telephone:" Set ctl = CreateControl(frm.Name, acTextBox, acDetail, , , 1700, 1260, 2500, 280) ctl.ControlSource = "Telephone" ctl.Name = "txtTelephone" Set ctl = CreateControl(frm.Name, acLabel, acDetail, , , 200, 1630, 1400, 280) ctl.Caption = "Notes:" Set ctl = CreateControl(frm.Name, acTextBox, acDetail, , , 1700, 1630, 4000, 700) ctl.ControlSource = "Notes" ctl.Name = "txtNotes" ' Boutons Set ctl = CreateControl(frm.Name, acCommandButton, acDetail, , , 200, 2500, 1700, 450) ctl.Caption = "Nouveau" ctl.Name = "btnNouveau" ctl.OnClick = "=GoToNewRecord()" Set ctl = CreateControl(frm.Name, acCommandButton, acDetail, , , 2000, 2500, 1700, 450) ctl.Caption = "Supprimer" ctl.Name = "btnSupprimer" ctl.OnClick = "=DeleteCurrentRecord()" Set ctl = CreateControl(frm.Name, acCommandButton, acDetail, , , 3800, 2500, 1900, 450) ctl.Caption = "Retour Accueil" ctl.Name = "btnRetour" ctl.OnClick = "=OpenFormAccueil()" DoCmd.Close acForm, frm.Name, acSaveYes DoCmd.Rename "frm_Clients", acForm, frm.Name End Sub Public Sub BuildFormProjets() Dim frm As Form, ctl As Control On Error Resume Next DoCmd.DeleteObject acForm, "frm_Projets" On Error GoTo 0 Set frm = CreateForm() frm.RecordSource = "tbl_Projets" frm.Caption = "Gestion des Projets" frm.DefaultView = 0 frm.NavigationButtons = True ' Header frm.Section(acHeader).Visible = True frm.Section(acHeader).Height = 550 Set ctl = CreateControl(frm.Name, acLabel, acHeader, , , 200, 120, 4000, 350) ctl.Caption = "Gestion des Projets" ctl.FontSize = 14 ctl.FontBold = True ' Champs Set ctl = CreateControl(frm.Name, acLabel, acDetail, , , 200, 150, 1400, 280) ctl.Caption = "ID Projet:" Set ctl = CreateControl(frm.Name, acTextBox, acDetail, , , 1700, 150, 1000, 280) ctl.ControlSource = "ProjetID" ctl.Enabled = False ctl.Locked = True Set ctl = CreateControl(frm.Name, acLabel, acDetail, , , 200, 520, 1400, 280) ctl.Caption = "Client:*" Set ctl = CreateControl(frm.Name, acComboBox, acDetail, , , 1700, 520, 4000, 280) ctl.ControlSource = "ClientID" ctl.RowSource = "SELECT ClientID, Nom FROM tbl_Clients ORDER BY Nom" ctl.ColumnCount = 2 ctl.ColumnWidths = "0;3800" ctl.BoundColumn = 1 ctl.Name = "cboClient" Set ctl = CreateControl(frm.Name, acLabel, acDetail, , , 200, 890, 1400, 280) ctl.Caption = "Nom projet:*" Set ctl = CreateControl(frm.Name, acTextBox, acDetail, , , 1700, 890, 4000, 280) ctl.ControlSource = "Nom" ctl.Name = "txtNom" Set ctl = CreateControl(frm.Name, acLabel, acDetail, , , 200, 1260, 1400, 280) ctl.Caption = "Taux horaire:" Set ctl = CreateControl(frm.Name, acTextBox, acDetail, , , 1700, 1260, 1500, 280) ctl.ControlSource = "TauxHoraire" ctl.Format = "Currency" ctl.Name = "txtTaux" Set ctl = CreateControl(frm.Name, acLabel, acDetail, , , 200, 1630, 1400, 280) ctl.Caption = "Actif:" Set ctl = CreateControl(frm.Name, acCheckBox, acDetail, , , 1700, 1630, 400, 280) ctl.ControlSource = "Actif" ctl.Name = "chkActif" Set ctl = CreateControl(frm.Name, acLabel, acDetail, , , 200, 2000, 1400, 280) ctl.Caption = "Description:" Set ctl = CreateControl(frm.Name, acTextBox, acDetail, , , 1700, 2000, 4000, 700) ctl.ControlSource = "Description" ctl.Name = "txtDescription" ' Boutons Set ctl = CreateControl(frm.Name, acCommandButton, acDetail, , , 200, 2850, 1700, 450) ctl.Caption = "Nouveau" ctl.OnClick = "=GoToNewRecord()" Set ctl = CreateControl(frm.Name, acCommandButton, acDetail, , , 2000, 2850, 1700, 450) ctl.Caption = "Supprimer" ctl.OnClick = "=DeleteCurrentRecord()" Set ctl = CreateControl(frm.Name, acCommandButton, acDetail, , , 3800, 2850, 1900, 450) ctl.Caption = "Retour Accueil" ctl.OnClick = "=OpenFormAccueil()" DoCmd.Close acForm, frm.Name, acSaveYes DoCmd.Rename "frm_Projets", acForm, frm.Name End Sub Public Sub BuildFormSaisieTemps() Dim frm As Form, ctl As Control On Error Resume Next DoCmd.DeleteObject acForm, "frm_SaisieTemps" On Error GoTo 0 Set frm = CreateForm() frm.RecordSource = "tbl_Temps" frm.Caption = "Saisie du Temps" frm.DefaultView = 0 frm.NavigationButtons = True frm.DataEntry = True ' Header frm.Section(acHeader).Visible = True frm.Section(acHeader).Height = 550 Set ctl = CreateControl(frm.Name, acLabel, acHeader, , , 200, 120, 4000, 350) ctl.Caption = "Saisie du Temps" ctl.FontSize = 14 ctl.FontBold = True ' Champs Set ctl = CreateControl(frm.Name, acLabel, acDetail, , , 200, 150, 1400, 280) ctl.Caption = "Projet:*" Set ctl = CreateControl(frm.Name, acComboBox, acDetail, , , 1700, 150, 4500, 280) ctl.ControlSource = "ProjetID" ctl.RowSource = "SELECT p.ProjetID, c.Nom & ' - ' & p.Nom AS Projet FROM tbl_Projets p INNER JOIN tbl_Clients c ON p.ClientID = c.ClientID WHERE p.Actif=True ORDER BY c.Nom, p.Nom" ctl.ColumnCount = 2 ctl.ColumnWidths = "0;4300" ctl.BoundColumn = 1 ctl.Name = "cboProjet" Set ctl = CreateControl(frm.Name, acLabel, acDetail, , , 200, 550, 1400, 280) ctl.Caption = "Date:*" Set ctl = CreateControl(frm.Name, acTextBox, acDetail, , , 1700, 550, 2000, 280) ctl.ControlSource = "Date" ctl.Format = "Short Date" ctl.DefaultValue = "=Date()" ctl.Name = "txtDate" Set ctl = CreateControl(frm.Name, acLabel, acDetail, , , 200, 950, 1400, 280) ctl.Caption = "Duree (h):*" Set ctl = CreateControl(frm.Name, acTextBox, acDetail, , , 1700, 950, 1200, 280) ctl.ControlSource = "Duree" ctl.Format = "0.00" ctl.Name = "txtDuree" Set ctl = CreateControl(frm.Name, acLabel, acDetail, , , 200, 1350, 1400, 280) ctl.Caption = "Description:" Set ctl = CreateControl(frm.Name, acTextBox, acDetail, , , 1700, 1350, 4500, 900) ctl.ControlSource = "Description" ctl.Name = "txtDescription" ' Boutons Set ctl = CreateControl(frm.Name, acCommandButton, acDetail, , , 200, 2400, 2200, 500) ctl.Caption = "Enregistrer + Nouveau" ctl.Name = "btnSauver" ctl.OnClick = "=SaveAndNew()" Set ctl = CreateControl(frm.Name, acCommandButton, acDetail, , , 2600, 2400, 1800, 500) ctl.Caption = "Historique" ctl.Name = "btnHistorique" ctl.OnClick = "=OpenFormHistorique()" Set ctl = CreateControl(frm.Name, acCommandButton, acDetail, , , 4600, 2400, 1600, 500) ctl.Caption = "Accueil" ctl.Name = "btnRetour" ctl.OnClick = "=OpenFormAccueil()" DoCmd.Close acForm, frm.Name, acSaveYes DoCmd.Rename "frm_SaisieTemps", acForm, frm.Name End Sub Public Sub BuildFormHistorique() Dim frm As Form, ctl As Control Dim strSQL As String On Error Resume Next DoCmd.DeleteObject acForm, "frm_Historique" On Error GoTo 0 strSQL = "SELECT t.TempsID, c.Nom AS Client, p.Nom AS Projet, t.Date, t.Duree, " & _ "t.Duree*p.TauxHoraire AS Montant, t.Description " & _ "FROM (tbl_Temps t INNER JOIN tbl_Projets p ON t.ProjetID=p.ProjetID) " & _ "INNER JOIN tbl_Clients c ON p.ClientID=c.ClientID ORDER BY t.Date DESC" Set frm = CreateForm() frm.RecordSource = strSQL frm.Caption = "Historique des Temps" frm.DefaultView = 2 frm.AllowEdits = False frm.AllowAdditions = False frm.AllowDeletions = False ' Header frm.Section(acHeader).Visible = True frm.Section(acHeader).Height = 900 Set ctl = CreateControl(frm.Name, acLabel, acHeader, , , 200, 80, 4000, 350) ctl.Caption = "Historique des Temps" ctl.FontSize = 14 ctl.FontBold = True Set ctl = CreateControl(frm.Name, acCommandButton, acHeader, , , 200, 500, 1800, 350) ctl.Caption = "Saisir Temps" ctl.OnClick = "=OpenFormSaisieTemps()" Set ctl = CreateControl(frm.Name, acCommandButton, acHeader, , , 2100, 500, 1800, 350) ctl.Caption = "Accueil" ctl.OnClick = "=OpenFormAccueil()" Set ctl = CreateControl(frm.Name, acLabel, acHeader, , , 4200, 500, 1200, 350) ctl.Caption = "Total heures:" ctl.FontBold = True Set ctl = CreateControl(frm.Name, acTextBox, acHeader, , , 5400, 500, 1200, 350) ctl.ControlSource = "=Nz(DSum('Duree','tbl_Temps'),0)" ctl.Format = "0.00" ctl.Enabled = False ctl.BackStyle = 0 ctl.BorderStyle = 0 ' Colonnes detail Set ctl = CreateControl(frm.Name, acTextBox, acDetail, , , 100, 50, 1400, 250) ctl.ControlSource = "Client" Set ctl = CreateControl(frm.Name, acTextBox, acDetail, , , 1600, 50, 1400, 250) ctl.ControlSource = "Projet" Set ctl = CreateControl(frm.Name, acTextBox, acDetail, , , 3100, 50, 1100, 250) ctl.ControlSource = "Date" ctl.Format = "Short Date" Set ctl = CreateControl(frm.Name, acTextBox, acDetail, , , 4300, 50, 700, 250) ctl.ControlSource = "Duree" ctl.Format = "0.00" Set ctl = CreateControl(frm.Name, acTextBox, acDetail, , , 5100, 50, 1100, 250) ctl.ControlSource = "Montant" ctl.Format = "Currency" Set ctl = CreateControl(frm.Name, acTextBox, acDetail, , , 6300, 50, 2500, 250) ctl.ControlSource = "Description" DoCmd.Close acForm, frm.Name, acSaveYes DoCmd.Rename "frm_Historique", acForm, frm.Name End Sub