Problème d'insertion dans une table via une interface Visual C++

Problème d'insertion dans une table via une interface Visual C++ - C - Programmation

Marsh Posté le 22-09-2008 à 10:51:17    

je suis entrain de faire une petite application sur visual C++ et j'ai un problème.
Je voudrais faire une insertion dans cette table :

 
Code :
  1. CREATE TABLE Beneficier (idbenef  INTEGER PRIMARY KEY IDENTITY(1,1),
  2.                         idadh VARCHAR (4),
  3.                         code_eq  VARCHAR(4),
  4.                         datebenef datetime NOT NULL,
  5.                         FOREIGN KEY (idadh) REFERENCES Adherents
  6.               ON DELETE CASCADE     
  7.               ON UPDATE CASCADE,    
  8.                         FOREIGN KEY (code_eq) REFERENCES Equipements
  9.             ON DELETE CASCADE     
  10.             ON UPDATE CASCADE);
 

Et voici mon code d'insertion

Code :
  1. void ChargerTableBeneficier(HWND hDlg)
  2. {
  3. //on va ramener de la base de donnees ces élélments
  4. char szcodequip[4+1];
  5. char szidadher[4+1];
  6. char szdate_benef[8+1];
  7. SQLINTEGER      cbInt=0, cbChar = SQL_NTS;
  8.        
  9.             /* Allocate statement handle */
  10. retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
  11.            
  12.             /* Process data SQL_SUCCESS  */
  13. retcode = SQLPrepare(hstmt,"INSERT INTO Beneficier (idadh,code_eq,datebenef) VALUES (?, ?, ?)", SQL_NTS);
  14. /* Specify data types and buffers for OrderID, CustID, OpenDate, SalesPerson, */
  15. /* Status parameter data. */
  16. SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR,
  17. SQL_CHAR, 4+1, 0, szidadher, 0, &cbChar);
  18. SQLBindParameter(hstmt, 3,  SQL_PARAM_INPUT, SQL_C_CHAR,
  19. SQL_CHAR, 4+1, 0, szcodequip, 0, &cbChar);
  20. SQLBindParameter(hstmt, 4, SQL_PARAM_INPUT, SQL_C_CHAR,
  21. SQL_CHAR, 8+1, 0, szdate_benef, 0, &cbChar);
  22. //Je récupère mes données de l'écran par exemple....
  23. //je renseigne mes valeur à inserer
  24.          GetDlgItemText(hDlg,IDC_IDADH,(LPTSTR)szidadher,4+1);
  25.         GetDlgItemText(hDlg,IDC_CODE_EQUIP,(LPTSTR)szcodequip,4+1);
  26.     GetDlgItemText(hDlg,IDC_DATE_BENEF,(LPTSTR)szdate_benef,8+1);
  27. /* Execute statement with second row. */
  28. retcode = SQLExecute(hstmt);
  29. }


 Et j'appelle cette fonction à ce niveau :

 
Code :
  1. LRESULT CALLBACK DLGCoopera(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
  2. {
  3.   switch (message)
  4. {
  5.  case WM_INITDIALOG:
  6.   Charger_code_equip(hDlg);
  7.   Charger_idAdh(hDlg);
  8.    return TRUE;
  9.  case WM_COMMAND:
  10.   if (LOWORD(wParam) == IDOK) 
  11.   {
  12.    ChargerTableAcheteur(hDlg);
  13.    ChargerTableEquip(hDlg);
  14.    ChargerTableBeneficier(hDlg);
  15.    EndDialog(hDlg, LOWORD(wParam));
  16.    return TRUE;
  17.   }
  18.   if(LOWORD(wParam) == IDCANCEL)
  19.   {
  20.    EndDialog(hDlg, LOWORD(wParam));
  21.    return TRUE;
  22.   }
  23.  /* if(LOWORD(wParam) == IDC_MODIFIER)
  24.   {
  25.    ExempleModification(hDlg);
  26.    //EndDialog(hDlg, LOWORD(wParam));
  27.    return TRUE;
  28.   }*/
  29.   break;
  30. }
  31.     return FALSE;
  32. }
 

Et qd j'éffectue mon insertion via mon interface graphique de Visual C++ , les données ne sont pas inserer au niveau de la table.
Alors je voudrais que vous me donniez un de coup de main merci.

 


Édité par Elmoricq : ajout des balises code pour plus de lisibilité


Message édité par Elmoricq le 22-09-2008 à 10:54:25
Reply

Marsh Posté le 22-09-2008 à 10:51:17   

Reply

Marsh Posté le 22-09-2008 à 10:55:56    

Tu mets le code retour dans la variable "retcode", mais tu ne la testes pas. Es-tu sûr que la requête s'est correctement déroulée ?

Reply

Marsh Posté le 22-09-2008 à 11:13:19    

Oui je l'ai testé le code retour est 1 alors je suppose que c'est bon

Reply

Marsh Posté le 22-09-2008 à 11:17:57    

Mais la table n'est pas renseigner quand j'effectue une insertion

Reply

Marsh Posté le 22-09-2008 à 11:36:37    

colfarell a écrit :

Oui je l'ai testé le code retour est 1 alors je suppose que c'est bon


 
C'est "1" ou c'est "SQL_SUCCESS" le code retour ?
Je ne connais pas la valeur de SQL_SUCCESS, mais en règle générale quand tout se passe bien, la norme voudrait plutôt qu'une fonction retourne "0".
Compare plutôt ton code retour aux valeurs standards : http://msdn.microsoft.com/en-us/library/ms713584.aspx
(et pas seulement pour SQL_Execute, faut tester toutes les fonctions que tu appelles pour attraper d'éventuelles erreurs)

Reply

Marsh Posté le 22-09-2008 à 11:47:15    

Stp vérifie mon code pour voir s'il ya quelque chose qui ne va.Merci

Reply

Marsh Posté le 22-09-2008 à 11:52:02    

[:quardelitre]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed