Salut les boss.
Je suis en train de coder une appli. delphi en ce moment et là ça ne va pas ...
Explications: J'utilise le fichier ADODB_TLB pour le codage de mon appli. En essayant des insertions ou des mise à jours, je reçois le message 'Aucune valeur donnée pour un ou plusieurs des paramètres requis'. La logique de mon appli est la suivante:
"avant l'insertion d'un nouveau patient dans la table TPatient, je créé un objet de type TPatient et il est passé en paramètre à une fonction d'un objet de type TPatientBLL qui se charge de de la création de la requête d'insertion. Une fois créée, cette requête est passée en paramètre à un objet de type TManipData spécialisé dans la manipulation des données ..."
Exemple de code:
- création du patient à insérer ->
- insertion du patient ->
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 m_NewPatient := TPatient.Create; with m_NewPatient do begin Id := StrToInt(Self.txtNumero.Text); Nom := Self.txtNom.Text; Prenom := Self.txtPrenom.Text; Sexe := Self.cbxSexe.Text; Age := StrToInt(Self.txtAge.Text); TypePatient := 'true'; Profession := TProfessionBLL.Instance.ProfessionHTable.GetKeyByValue(cbxProfession.Text); Adresse := Self.txtAdresse.Text; end;
- céation de la requête d'insertion ->
Code : Sélectionner tout - Visualiser dans une fenêtre à part TPatientBLL.Instance.Update(m_NewPatient);
- execution de la requête ->
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ReqInsert := 'INSERT INTO TPatient VALUES (' + IntToStr(NewPatient.Id) + ',' + NewPatient.Nom + ',' + NewPatient.Prenom + ',' + NewPatient.Sexe + ',' + IntToStr(NewPatient.Age) + ',' + NewPatient.Adresse + ',' + NewPatient.TypePatient + ',' + IntToStr(NewPatient.Profession) + ')' ;
- définition de TManipData.ExecuteCommand(Req :string) ->
Code : Sélectionner tout - Visualiser dans une fenêtre à part m_ManipData.ExecuteCommand(ReqInsert);
Lorsque j'essais des suppressions, cela marche correctement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 procedure TManipData.ExecuteCommand(Req :String); var Count :OleVariant; begin Count := 0; try TConnexionBase.Instance.GetConnexion.Execute(Req,Count,adCmdText); except on EDataBaseError do ShowMessage('Erreur execution de commande !'); end; end;
J'ai essayer pas mal de code se rapportant à l'utilisation de la fonction Execute de l'objet Connection, mais sans espoir.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ReqDelete := 'DELETE FROM TPatient WHERE IdPat =' + IntToStr(PatientID); m_ManipData.ExecuteCommand(ReqDelete);
Merci pour votre compréhension.
Partager