Esempio n. 1
0
        private void btnAjouter_Click(object sender, EventArgs e)
        {
            Champ nom = new Champ(NomTable.routepopoteroulante.ToString(), "rprNom", txtNouvelleRoute.Text);

            RequeteSelection reqSel = new RequeteSelection(NomTable.routepopoteroulante);

            reqSel.Condition = new ConditionRequete(Operateur.COMME, nom);

            if (!Global.BaseDonneesCABS.EnvoyerRequeteSelection(reqSel).EstVide&& !OutilsForms.PoserQuestion("Confirmation d'ajout", "Une route portant le même nom existe déjà. Voulez-vous quand même ajouter celle-ci?"))
            {
                return;
            }

            RequeteAjout reqAjout = new RequeteAjout(NomTable.routepopoteroulante, nom);
            int          nouvelIndex;

            if ((nouvelIndex = Global.BaseDonneesCABS.EnvoyerRequeteAjout(reqAjout)) < 0)
            {
                Journal.AfficherMessage("Une erreur est survenue lors de l'ajout d'une route. L'action a été annulée.", TypeMessage.ERREUR, true);
                return;
            }

            TreeNode nouveauNoeudRoute = new TreeNode(txtNouvelleRoute.Text);

            nouveauNoeudRoute.Tag = nouvelIndex;

            tvRoutesBeneficiaires.Nodes.Add(nouveauNoeudRoute);
            txtNouvelleRoute.Text = "";
        }
Esempio n. 2
0
        public override bool Supprimer()
        {
            if (!base.Supprimer())
            {
                return(false);
            }

            if (!ValiderDonnees())
            {
                return(false);
            }

            if (!OutilsForms.PoserQuestion("Confirmation suppression", "Voulez-vous vraiment supprimer ces livraisons?"))
            {
                return(false);
            }

            List <DateTime> datesASupprimer = new List <DateTime>();

            foreach (DateTime date in GetDatesConsiderees())
            {
                if (GetIndexLivraisonExistante(date) >= 0)
                {
                    datesASupprimer.Add(date);
                }
            }

            ConditionRequete   cond = new ConditionRequete(Operateur.EGAL, BeneficiaireCourant.GetChamp("perId"));
            RequeteSuppression reqSup;
            bool erreurAffichee = false;

            foreach (DateTime date in datesASupprimer)
            {
                Champ champDate = new Champ("livraisonpopoteroulante", "lprDate", date);

                ConditionRequete copieCond = new ConditionRequete(cond);
                copieCond.LierCondition(new ConditionRequete(Operateur.EGAL, champDate), true);

                reqSup = new RequeteSuppression(NomTable.livraisonpopoteroulante, copieCond);

                if (Global.BaseDonneesCABS.EnvoyerRequeteSuppression(reqSup) < 0 && !erreurAffichee)
                {
                    Journal.AfficherMessage("Une erreur est survenue lors de la suppression d'une ou plusieurs livraisons.", TypeMessage.ERREUR, true);
                    erreurAffichee = true;
                }
                else
                {
                    int indexLivraisonASupprimer = GetIndexLivraisonExistante(date);

                    if (indexLivraisonASupprimer >= 0)
                    {
                        Livraisons.Lignes.RemoveAt(indexLivraisonASupprimer);
                    }

                    SupprimerLivraisonCalendrier(date);
                }
            }

            return(true);
        }
Esempio n. 3
0
        public override bool Supprimer()
        {
            if (!base.Supprimer())
            {
                return(false);
            }

            if (!OutilsForms.PoserQuestion("Confirmation suppression", "Voulez-vous vraiment supprimer cette action?"))
            {
                return(false);
            }

            LigneTable action = ((LigneTable)((ComboBoxItem)cmbAction.SelectedItem).Value);

            RequeteSuppression reqSup = new RequeteSuppression(NomTable.actionactivite, new ConditionRequete(Operateur.EGAL, action.GetChamp("actaId")));

            if (Global.BaseDonneesCABS.EnvoyerRequeteSuppression(reqSup) < 0)
            {
                Journal.AfficherMessage("Une erreur est survenue lors de la suppression de l'action. L'action a été annulée.", TypeMessage.ERREUR, true);
                return(false);
            }

            cmbAction.Items.Remove(cmbAction.SelectedItem);

            if (cmbAction.Items.Count > 0)
            {
                cmbAction.SelectedIndex = 0;
            }

            return(true);
        }
Esempio n. 4
0
        public override bool ValiderDonnees()
        {
            if (!base.ValiderDonnees())
            {
                return(false);
            }

            int temp;

            if (!OutilsForms.VerifierCondition(!cbBeneficiaire.Checked && !cbBenevole.Checked && !cbEmploye.Checked, "Veuillez choisir au moins un type pour la personne") ||
                !OutilsForms.VerifierCondition(txtNom.Text.Length <= 0, "Veuillez entrer un nom valide.") ||
                !OutilsForms.VerifierCondition(txtPrenom.Text.Length <= 0, "Veuillez entrer un prénom valide.") ||
                !OutilsForms.VerifierCondition(dtpDateNaissance.Value > DateTime.Today, "Veuillez entrer une date de naissance valide.") ||
                !OutilsForms.VerifierCondition(mtxtTelephone1.Text.Length <= 0, "Veuillez entrer au moins un numéro de téléphone valide.") ||
                !OutilsForms.VerifierCondition(!Int32.TryParse(txtNoCivique.Text, out temp), "Veuillez entrer un numéro civique valide.") ||
                !OutilsForms.VerifierCondition(txtRue.Text.Length <= 0, "Veuillez entrer un nom de rue valide.") ||
                !OutilsForms.VerifierCondition(txtVille.Text.Length <= 0, "Veuillez entrer un nom de ville valide.") ||
                !OutilsForms.VerifierCondition(mtxtCodePostal.Text.Length <= 0, "Veuillez entrer un code postal valide.") ||
                !OutilsForms.VerifierCondition(txtCasePostale.Text.Length > 0 && !Int32.TryParse(txtCasePostale.Text, out temp), "Veuillez entrer un numéro de case postale valide.") ||
                !OutilsForms.VerifierCondition(chklbLangues.CheckedIndices.Count <= 0, "Veuillez sélectionner au moins une langue.") ||
                !OutilsForms.VerifierCondition(cmbEtatCivil.SelectedIndex == -1, "Veuillez sélectionner un état civil.") ||
                !OutilsForms.VerifierCondition(dtpDebutProbation.Value > dtpFinProbation.Value, "Veuillez entrer une période de probation valide."))
            {
                return(false);
            }

            if ((lblNomCouple.Text.Length > 0 && cmbEtatCivil.Text == "Célibataire") &&
                !OutilsForms.PoserQuestion("Confirmation", "L'état civil de la personne est \"Célibataire\" malgré l'enregistrement d'un couple.\nVoulez-vous enregistrer quand même?"))
            {
                return(false);
            }

            return(true);
        }
Esempio n. 5
0
        private void btnSupprimer_Click(object sender, EventArgs e)
        {
            TreeNode noeudRoute = tvRoutesBeneficiaires.SelectedNode;

            if (noeudRoute == null)
            {
                Journal.EcrireMessage("frmGestionRoutes : Bouton Supprimer enabled sans devoir l'être");
                btnSupprimer.Enabled = false;
                return;
            }

            if (!OutilsForms.PoserQuestion("Confirmation suppression", "Voulez-vous vraiment supprimer cette route? Cette action va retirer tous les bénéficiaires associer à celle-ci."))
            {
                return;
            }

            ConditionRequete   cond   = new ConditionRequete(Operateur.EGAL, "rprId", noeudRoute.Tag.ToString());
            RequeteSuppression reqSup = new RequeteSuppression(NomTable.routepopoteroulante, cond);

            if (Global.BaseDonneesCABS.EnvoyerRequeteSuppression(reqSup) < 0)
            {
                Journal.AfficherMessage("Une erreur est survenue lors de la suppression d'une route. L'action a été annulée.", TypeMessage.ERREUR, true);
                return;
            }

            foreach (TreeNode noeudBeneficiaire in noeudRoute.Nodes)
            {
                lbBeneficiaires.Items.Add(new ComboBoxItem(noeudBeneficiaire.Text, noeudBeneficiaire.Tag));
            }

            tvRoutesBeneficiaires.Nodes.Remove(noeudRoute);
            tvRoutesBeneficiaires_AfterSelect(tvRoutesBeneficiaires, new TreeViewEventArgs(null));
        }
Esempio n. 6
0
        private void dgvPersonnesARejoindre_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
        {
            if (PersonneCourante == null || !OutilsForms.PoserQuestion("Confirmation", "Voulez-vous vraiment supprimer cette personne à rejoindre?"))
            {
                e.Cancel = true;
                return;
            }

            btnEnregistrer.Enabled = btnAnnuler.Enabled = true;
            PersonnesARejoindreASupprimer.Add(CreerNouvellePersonneARejoindre(e.Row.Index));
        }
Esempio n. 7
0
        private void frmPrincipal_FormClosing(object sender, FormClosingEventArgs e)
        {
            Page pageCourante = (Page)tbcFormulaires.SelectedTab;

            if ((pageCourante == null || pageCourante.Contenu.QuitterPage()) &&
                OutilsForms.PoserQuestion("Confirmation", "Désirez-vous vraiment quitter l'application?"))
            {
                return;
            }

            e.Cancel = true;
        }
Esempio n. 8
0
        private void btnDesinscrireService_Click(object sender, EventArgs e)
        {
            if (!OutilsForms.PoserQuestion("Confirmation désinscription", "Voulez-vous vraiment désinscrire le bénéficiaire de ce service?"))
            {
                return;
            }

            if (Supprimer())
            {
                Vider();
                ChangerAccesControle(ModeFormulaire.AJOUT);
            }
        }
Esempio n. 9
0
        public override bool QuitterPage()
        {
            if (!base.QuitterPage())
            {
                return(false);
            }

            if (LigneAjoutee || LigneModifiee)
            {
                return(OutilsForms.PoserQuestion("Confirmation", "Une ou plusieurs personnes à rejoindre n'ont pas été enregistrées et seront perdues. Voulez-vous vraiment quitter sans enregistrer?"));
            }

            return(true);
        }
Esempio n. 10
0
        public override bool ValiderDonnees()
        {
            if (!base.ValiderDonnees())
            {
                return(false);
            }

            if (!OutilsForms.VerifierCondition(dtpDateNaissance.Value > DateTime.Today, "Veuillez entrer une date d'évaluation valide."))
            {
                return(false);
            }

            return(true);
        }
Esempio n. 11
0
        public override bool QuitterPage()
        {
            if (!base.QuitterPage())
            {
                return(false);
            }

            if (Mode == ModeFormulaire.AJOUT || Mode == ModeFormulaire.EDITION)
            {
                return(OutilsForms.PoserQuestion("Confirmation", "Des modifications n'ont pas été enregistrées et seront perdues.\nVoulez-vous vraiment quitter sans enregistrer?"));
            }

            return(true);
        }
Esempio n. 12
0
        public override bool ValiderDonnees()
        {
            if (!base.ValiderDonnees())
            {
                return(false);
            }

            if (!OutilsForms.VerifierCondition(dtpDateDemande.Value > DateTime.Now, "Veuillez entrer une date de demande valide"))
            {
                return(false);
            }

            return(true);
        }
Esempio n. 13
0
        private void btnSupprimerActivite_Click(object sender, EventArgs e)
        {
            if (!OutilsForms.PoserQuestion("Confirmation de suppression", "Voulez-vous vraiment supprimer cette activité?"))
            {
                return;
            }

            RequeteSuppression reqSup = new RequeteSuppression(NomTable.activite, new ConditionRequete(Operateur.EGAL, ((Champ)((ComboBoxItem)lbActivites.SelectedItem).Value)));

            if (Global.BaseDonneesCABS.EnvoyerRequeteSuppression(reqSup) < 0)
            {
                Journal.AfficherMessage("Une erreur est survenue lors de la suppression de l'activité. L'action a été annulée.", TypeMessage.ERREUR, true);
                return;
            }

            SupprimerItem(lbActivites);
        }
Esempio n. 14
0
        private void btnSupprimerSousChamp_Click(object sender, EventArgs e)
        {
            if (!OutilsForms.PoserQuestion("Confirmation de suppression", "Voulez-vous vraiment supprimer ce sous-champ? Toutes les activités reliées à ce sous-champ vont être également supprimées."))
            {
                return;
            }

            RequeteSuppression reqSup = new RequeteSuppression(NomTable.souschampactivite, new ConditionRequete(Operateur.EGAL, ((Champ)((ComboBoxItem)lbSousChamps.SelectedItem).Value)));

            if (Global.BaseDonneesCABS.EnvoyerRequeteSuppression(reqSup) < 0)
            {
                Journal.AfficherMessage("Une erreur est survenue lors de la suppression du sous-champ d'activités. L'action a été annulée.", TypeMessage.ERREUR, true);
                return;
            }

            SupprimerItem(lbSousChamps);
        }
Esempio n. 15
0
        private void btnVider_Click(object sender, EventArgs e)
        {
            if (PersonneCourante == null ||
                dgvPersonnesARejoindre.Rows.Count <= 1 ||
                !OutilsForms.PoserQuestion("Confirmation", "Voulez-vous vraiment supprimer toutes les personnes à rejoindre?"))
            {
                return;
            }

            for (int i = 0; i < dgvPersonnesARejoindre.Rows.Count - 1; ++i)
            {
                if (dgvPersonnesARejoindre.Rows[i].Cells["Id"].Value != null)
                {
                    PersonnesARejoindreASupprimer.Add(CreerNouvellePersonneARejoindre(i));
                }
            }

            dgvPersonnesARejoindre.Rows.Clear();
            btnEnregistrer.Enabled = btnAnnuler.Enabled = true;
        }
Esempio n. 16
0
        public override bool ValiderDonnees()
        {
            if (!base.ValiderDonnees())
            {
                return(false);
            }

            string frequence      = cmbFrequence.SelectedItem.ToString();
            bool   datesInvalides = frequence != "Date sélectionnée" && dtpDe.Value > dtpA.Value;
            bool   aucunJour      = frequence == "Semaine" && !cbLundi.Checked && !cbMardi.Checked &&
                                    !cbMercredi.Checked && !cbJeudi.Checked && !cbVendredi.Checked && !cbSamedi.Checked &&
                                    !cbDimanche.Checked;

            if (!OutilsForms.VerifierCondition(datesInvalides, "La date de début doit être plus petite ou égale à la date de fin.") ||
                !OutilsForms.VerifierCondition(aucunJour, "Veuillez sélectionner au moins une journée de la semaine."))
            {
                return(false);
            }

            return(true);
        }
Esempio n. 17
0
        private void btnFermerDossier_Click(object sender, EventArgs e)
        {
            DateTime nouvelleDateFermeture = cbDateSpecFermeture.Checked ? dtpDateSpecFermeture.Value : DateTime.Now;

            if (PersonneCourante == null || !OutilsForms.VerifierCondition(nouvelleDateFermeture > DateTime.Now, "Veuillez entrer une date de fermeture valide."))
            {
                return;
            }

            PersonneCourante.AjouterChamp("perDateFermeture", nouvelleDateFermeture);
            PersonneCourante.AjouterChamp("staId", Statuts.Lignes.Find(s => s.GetValeurChamp <string>("staNom") == "Fermé").GetChamp("staId").Valeur);

            if (!Enregistrer())
            {
                Journal.AfficherMessage("Une erreur s'est produite lors de la fermeture du dossier. L'action a été annulée.", TypeMessage.ERREUR, true);
            }
            else
            {
                EntrerPage();
                ChargerDossierPersonne(PersonneCourante);
            }
        }
Esempio n. 18
0
        private void btnRetirerBeneficiaire_Click(object sender, EventArgs e)
        {
            if (!OutilsForms.PoserQuestion("Confirmation suppression", "Voulez-vous vraiment retirer ce bénéficiaire de cette action?"))
            {
                return;
            }

            Champ indexBeneficiaire = ((Champ)((ComboBoxItem)lbBeneficiairesInclus.SelectedItem).Value);

            ConditionRequete cond = new ConditionRequete(Operateur.EGAL, indexBeneficiaire);

            cond.LierCondition(new ConditionRequete(Operateur.EGAL, ((LigneTable)((ComboBoxItem)cmbAction.SelectedItem).Value).GetChamp("actaId")), true);

            RequeteSuppression reqSup = new RequeteSuppression(NomTable.beneficiaireactionactivite, cond);

            if (Global.BaseDonneesCABS.EnvoyerRequeteSuppression(reqSup) < 0)
            {
                Journal.AfficherMessage("Une erreur est survenue lors du retirement du bénéficiaire de l'action. L'action a été annulée.", TypeMessage.ERREUR, true);
                return;
            }

            SupprimerItem(lbBeneficiairesInclus);
        }
Esempio n. 19
0
        public override bool Supprimer()
        {
            if (!base.Supprimer())
            {
                return(false);
            }

            if (!OutilsForms.PoserQuestion("Confirmation suppression", "Confirmez-vous vouloir supprimer cet personne de la base de données?"))
            {
                return(false);
            }

            RequeteSuppression reqSup = new RequeteSuppression(NomTable.personne, new ConditionRequete(Operateur.EGAL, PersonneCourante.GetChamp("perId")));

            if (Global.BaseDonneesCABS.EnvoyerRequeteSuppression(reqSup) < 0)
            {
                Journal.AfficherMessage("Une erreur est survenue lors de la suppression de la personne dans la base de données. L'action a été annulée.", TypeMessage.ERREUR, true);
                return(false);
            }

            PersonneCourante = null;
            return(true);
        }
Esempio n. 20
0
        public override bool Supprimer()
        {
            if (!base.Supprimer())
            {
                return(false);
            }

            if (!OutilsForms.PoserQuestion("Confirmation suppression", "Confirmez-vous vouloir supprimer cette évaluation de la base de données?"))
            {
                return(false);
            }

            int idEval = ((LigneTable)((ComboBoxItem)cmbEvaluationsPrecedentes.SelectedItem).Value).GetValeurChamp <int>("edaId");
            RequeteSuppression reqSup = new RequeteSuppression(NomTable.evaluationdepannagealimentaire,
                                                               new ConditionRequete(Operateur.EGAL, "edaId", idEval.ToString()));

            if (Global.BaseDonneesCABS.EnvoyerRequeteSuppression(reqSup) < 0)
            {
                Journal.AfficherMessage("Une erreur est survenue lors de la suppression de l'évaluation dans la base de données. L'action a été annulée.", TypeMessage.ERREUR, true);
                return(false);
            }

            return(true);
        }
Esempio n. 21
0
        private void btnCalculerRecus_Click(object sender, EventArgs e)
        {
            lblAvertissement.Visible = false;
            Recus.Vider();

            Table infosRecus = Global.BaseDonneesCABS.EnvoyerRequeteSelectionDirect("", String.Format(FORMAT_REQ, Decimal.ToInt32(nudAgeMinimum.Value), dtpDu.Value.ToShortDateString(), dtpAu.Value.ToShortDateString()));
            Champ temp;

            foreach (LigneTable infosRecu in infosRecus.Lignes)
            {
                LigneTable recu = new LigneTable("recupopote");

                int nbRepas = infosRecu.GetValeurChamp <int>("recNbRepas");

                recu.AjouterChamp("recNbRepas1", nbRepas);
                recu.AjouterChamp("recNbRepas2", nbRepas);
                recu.AjouterChamp("recNbRepas3", nbRepas);

                decimal montantClient = infosRecu.GetValeurChamp <decimal>("recMontantClient");

                recu.AjouterChamp("recMontantClient1", montantClient);
                recu.AjouterChamp("recMontantClient2", montantClient);
                recu.AjouterChamp("recMontantClient3", montantClient);

                string dateEmission = dtpDateEmission.Value.ToLongDateString();

                recu.AjouterChamp("recDateEmission1", dateEmission);
                recu.AjouterChamp("recDateEmission2", dateEmission);
                recu.AjouterChamp("recDateEmission3", dateEmission);

                string nom = infosRecu.GetValeurChamp <string>("perPrenom") + " " + infosRecu.GetValeurChamp <string>("perNom");

                recu.AjouterChamp("recNom1", nom);
                recu.AjouterChamp("recNom2", nom);
                recu.AjouterChamp("recNom3", nom);

                string adresse = infosRecu.GetValeurChamp <int>("perNoCivique").ToString() + ", " + infosRecu.GetValeurChamp <string>("perRue");

                if ((temp = infosRecu.GetChamp("perNoAppart")) != null && temp.Valeur != DBNull.Value)
                {
                    adresse += ", app. " + temp.Valeur.ToString();
                }

                if ((temp = infosRecu.GetChamp("perCasePostale")) != null && temp.Valeur != DBNull.Value)
                {
                    adresse += ", CP " + temp.Valeur.ToString();
                }

                adresse += ", " + infosRecu.GetValeurChamp <string>("perVille") + ", Québec, " + infosRecu.GetValeurChamp <string>("perCodePostal");

                recu.AjouterChamp("recAdresse1", adresse);
                recu.AjouterChamp("recAdresse2", adresse);
                recu.AjouterChamp("recAdresse3", adresse);

                decimal montantAdmissible     = montantClient * (nudPourcentageRemboursement.Value / 100.0m);
                string  montantAdmissibleMots = OutilsForms.ConvertirNombreEnMots(montantAdmissible);
                int     sousMontantAdmissible = Decimal.ToInt32(Math.Floor((montantAdmissible - Math.Floor(montantAdmissible)) * 100.0m));

                recu.AjouterChamp("recMontantMots1", montantAdmissibleMots);
                recu.AjouterChamp("recMontantMots2", montantAdmissibleMots);
                recu.AjouterChamp("recMontantMots3", montantAdmissibleMots);
                recu.AjouterChamp("recSous1", sousMontantAdmissible);
                recu.AjouterChamp("recSous2", sousMontantAdmissible);
                recu.AjouterChamp("recSous3", sousMontantAdmissible);
                recu.AjouterChamp("recMontantGras1", montantAdmissible);
                recu.AjouterChamp("recMontantGras2", montantAdmissible);
                recu.AjouterChamp("recMontantGras3", montantAdmissible);
                recu.AjouterChamp("recMontantAdmis1", montantAdmissible);
                recu.AjouterChamp("recMontantAdmis2", montantAdmissible);
                recu.AjouterChamp("recMontantAdmis3", montantAdmissible);

                string du = dtpDu.Value.ToLongDateString();
                string au = dtpAu.Value.ToLongDateString();

                recu.AjouterChamp("recDu1", du);
                recu.AjouterChamp("recDu2", du);
                recu.AjouterChamp("recDu3", du);
                recu.AjouterChamp("recAu1", au);
                recu.AjouterChamp("recAu2", au);
                recu.AjouterChamp("recAu3", au);

                Recus.AjouterLigne(recu);
            }

            IndexRecu = Recus.EstVide ? -1 : 0;

            ChangerAccesControle(ModeFormulaire.CONSULTATION);
        }
Esempio n. 22
0
        public override bool Enregistrer()
        {
            Global.BaseDonneesCABS.CommencerTransaction();

            if (!base.Enregistrer() || !ValiderDonnees())
            {
                Global.BaseDonneesCABS.AnnulerTransaction();
                return(false);
            }

            Champ indexPersonne = null;

            if (PersonneCourante != null)
            {
                indexPersonne = PersonneCourante.GetChamp("perId");
            }

            LigneTable adresseModifiee = null;

            if (Mode == ModeFormulaire.AJOUT)
            {
                LigneTable nouvellePersonne = CreerNouvellePersonne();
                nouvellePersonne.AjouterChamp("perDateOuverture", DateTime.Now);

                RequeteSelection reqSelNom = new RequeteSelection(NomTable.personne, "perId");
                reqSelNom.Condition = new ConditionRequete(Operateur.EGAL, "perNom", nouvellePersonne.GetChamp("perNom").ValeurSQL);
                reqSelNom.Condition.LierCondition(new ConditionRequete(Operateur.EGAL, "perPrenom", nouvellePersonne.GetChamp("perPrenom").ValeurSQL), true);

                if (!Global.BaseDonneesCABS.EnvoyerRequeteSelection(reqSelNom).EstVide&& !OutilsForms.PoserQuestion("Confirmation d'ajout", "Une autre personne porte les mêmes nom et prénom. Voulez-vous quand même ajouter celle-ci?"))
                {
                    Global.BaseDonneesCABS.AnnulerTransaction();
                    return(false);
                }

                if (StatutActif == null)
                {
                    Journal.AfficherMessage("La table des statuts est inexistante ou corrompue. L'action a été annulée.", TypeMessage.ERREUR, true);
                    Global.BaseDonneesCABS.AnnulerTransaction();
                    return(false);
                }

                nouvellePersonne.AjouterChamp(StatutActif);

                RequeteAjout reqAjout            = new RequeteAjout(NomTable.personne, nouvellePersonne);
                int          nouvelIndexPersonne = Global.BaseDonneesCABS.EnvoyerRequeteAjout(reqAjout);

                if (nouvelIndexPersonne == -1)
                {
                    Journal.AfficherMessage("Une erreur est survenue lors de l'ajout de la personne dans la base de données. L'action a été annulée.", TypeMessage.ERREUR, true);
                    Global.BaseDonneesCABS.AnnulerTransaction();
                    return(false);
                }

                indexPersonne = new Champ("Personne", "perId", nouvelIndexPersonne);
                nouvellePersonne.AjouterChamp(indexPersonne);
                PersonneCourante = nouvellePersonne;

                adresseModifiee = GetAdresseModifiee(PersonneCourante, new LigneTable("Personne"));
            }
            else if (Mode == ModeFormulaire.EDITION)
            {
                LigneTable personneModifiee = CreerNouvellePersonne();
                personneModifiee.AjouterChamp(PersonneCourante.GetChamp("staId"));

                RequeteModification reqModif = new RequeteModification(NomTable.personne, new ConditionRequete(Operateur.EGAL, indexPersonne), personneModifiee);
                int lignesModifiees          = Global.BaseDonneesCABS.EnvoyerRequeteModification(reqModif);

                if (lignesModifiees < 0)
                {
                    Journal.AfficherMessage("Une erreur est survenue lors de la modification de la personne. L'action a été annulée.", TypeMessage.ERREUR, true);
                    Global.BaseDonneesCABS.AnnulerTransaction();
                    return(false);
                }

                RequeteSuppression reqSup = new RequeteSuppression(NomTable.languepersonne, new ConditionRequete(Operateur.EGAL, indexPersonne));

                if (Global.BaseDonneesCABS.EnvoyerRequeteSuppression(reqSup) < 0)
                {
                    Journal.AfficherMessage("Une erreur est survenue lors de la suppression des langues parlées de la personne. L'action a été annulée.", TypeMessage.ERREUR, true);
                    Global.BaseDonneesCABS.AnnulerTransaction();
                    return(false);
                }

                personneModifiee.AjouterChamp(indexPersonne);
                PersonneCourante = personneModifiee;

                adresseModifiee = GetAdresseModifiee(PersonneCourante, personneModifiee);
            }

            if (IndexPersonneCouple != 0 && adresseModifiee != null &&
                OutilsForms.PoserQuestion("Modification adresse conjoint(e)", "Voulez-vous modifier l'adresse du conjoint(e) pour celle de la personne courante?"))
            {
                RequeteModification reqModif = new RequeteModification(NomTable.personne, new ConditionRequete(Operateur.EGAL, new Champ("Personne", "perId", IndexPersonneCouple)), adresseModifiee);
                int lignesModifiees          = Global.BaseDonneesCABS.EnvoyerRequeteModification(reqModif);

                if (lignesModifiees < 0)
                {
                    Journal.AfficherMessage("Une erreur est survenue lors de la modification de l'adresse du conjoint(e). L'action a été annulée.", TypeMessage.ERREUR, true);
                }
            }

            if (!MettreAJourTypesPersonne(indexPersonne))
            {
                Journal.AfficherMessage("Une erreur est survenue lors de la mise à jour des types de la personne dans la base de données. L'action a été annulée.", TypeMessage.ERREUR, true);
                Global.BaseDonneesCABS.AnnulerTransaction();
                return(false);
            }

            foreach (ComboBoxItem langue in chklbLangues.CheckedItems)
            {
                Champ idLangue = new Champ("Langue", "lanId", langue.Value);

                RequeteAjout reqAjout = new RequeteAjout(NomTable.languepersonne, indexPersonne, idLangue);

                if (Global.BaseDonneesCABS.EnvoyerRequeteAjout(reqAjout) < 0)
                {
                    Journal.AfficherMessage("Une erreur est survenue lors de l'ajout d'une langue parlée dans la base de données. L'action a été annulée.", TypeMessage.ERREUR, true);
                    Global.BaseDonneesCABS.AnnulerTransaction();
                    return(false);
                }
            }

            if (AncienIndexPersonneCouple != IndexPersonneCouple)
            {
                Champ premier  = new Champ("Couple", "perIdPremier", indexPersonne.Valeur);
                Champ deuxieme = new Champ("Couple", "perIdDeuxieme", IndexPersonneCouple);

                ConditionRequete condCouple = new ConditionRequete(Operateur.EGAL, "perIdPremier", indexPersonne.ValeurSQL);
                condCouple.LierCondition(new ConditionRequete(Operateur.EGAL, "perIdDeuxieme", indexPersonne.ValeurSQL), false);

                if (AncienIndexPersonneCouple == 0)
                {
                    RequeteAjout reqAjout = new RequeteAjout(NomTable.couple, premier, deuxieme);
                    if (Global.BaseDonneesCABS.EnvoyerRequeteAjout(reqAjout) < 0)
                    {
                        Journal.AfficherMessage("Une erreur est survenue lors de l'ajout du couple de la personne. L'action a été annulée.", TypeMessage.ERREUR, true);
                        Global.BaseDonneesCABS.AnnulerTransaction();
                        return(false);
                    }
                }
                else if (IndexPersonneCouple == 0)
                {
                    RequeteSuppression reqSup = new RequeteSuppression(NomTable.couple, condCouple);
                    if (Global.BaseDonneesCABS.EnvoyerRequeteSuppression(reqSup) < 0)
                    {
                        Journal.AfficherMessage("Une erreur est survenue lors de la suppression du couple de la personne. L'action a été annulée.", TypeMessage.ERREUR, true);
                        Global.BaseDonneesCABS.AnnulerTransaction();
                        return(false);
                    }
                }
                else
                {
                    RequeteModification reqModif = new RequeteModification(NomTable.couple, condCouple, premier, deuxieme);
                    if (Global.BaseDonneesCABS.EnvoyerRequeteModification(reqModif) < 0)
                    {
                        Journal.AfficherMessage("Une erreur est survenue lors de la modification du couple de la personne. L'action a été annulée.", TypeMessage.ERREUR, true);
                        Global.BaseDonneesCABS.AnnulerTransaction();
                        return(false);
                    }
                }
            }

            Global.BaseDonneesCABS.ConfirmerTransaction();
            return(true);
        }