[VC++, ODBC, Access] Requêtes autres que de type SELECT [Résolu]

Signaler
Messages postés
130
Date d'inscription
mercredi 2 janvier 2002
Statut
Membre
Dernière intervention
7 juillet 2012
-
cs_Tibabou
Messages postés
130
Date d'inscription
mercredi 2 janvier 2002
Statut
Membre
Dernière intervention
7 juillet 2012
-
Bonjour,

    J'utilise VC++ et ODBC pour me connecter à une base Access. J'arrive à exécuter une requête de type SELECT et récupérer tout ce que je veux.
En revanche, je ne sais pas comment exécuter un simple INSERT, UPDATE ou DELETE.
Voilà pour mes SELECT :

// ... connexion...
// préparation
rc = SQLAllocStmt(hDbc,&hStmt);
rc = SQLPrepare(hStmt,"SELECT ... ", SQL_NTS);
// bind
rc = SQLBindCol(hStmt, 1, SQL_C_ULONG, &num, 4, (SQLINTEGER*)&ret);
// exec
rc = SQLExecute(hStmt);

// Boucle pour afficher les resultats
while(!(SQLFetch(hStmt) & 0xFFFE) )
{
//...
}

Comment faire pour les autres types de requêtes ?
J'ai essayé SQLExecDirectA(hStmt,(unsigned char*)szSql,SQL_NTS); mais sans succès

Merci de votre aide.
Tibabou

2 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
copier coller depuis un de mes progs:

  if(SQLPrepare(hstmt, "INSERT INTO Praticiens (Nom,Prenom) VALUES (?,?)", SQL_NTS) & 0xFFFE) goto freeStmt;
  SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR,
                    SQL_CHAR, 40, 0, szbuff, 0, &lenNm);
  SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR,
                    SQL_CHAR, 40, 0, szbuff+44, 0, &lenPrnm);
  if(SQLExecute(hstmt) & 0xFFFE) goto freeStmt;
etc, etc.

ciao...
BruNews, MVP VC++
Messages postés
130
Date d'inscription
mercredi 2 janvier 2002
Statut
Membre
Dernière intervention
7 juillet 2012

Il me manquait un exemple sur les entiers :
SQLBindParameter(hStmt, 3, SQL_PARAM_INPUT, SQL_C_SHORT,SQL_SMALLINT, 0, 0, &num, 0, NULL);

Cela fonctionne maintenant.
Merci pour ton aide BruNews.

Salutations,
Tibabou