Merci beaucoup pour ta réponse, j'ai corrigé certain points que tu as mentionné.
Voila le fameux de l'histoire, le code ci dessous fait une requete SQL sur une base Access
la ligne de ma requete à savoir:
char szSql[256] = "SELECT * FROM base WHERE CODNIV='00684'";
je voudrai rendre dans cette requête CODNIV variable grace a ce que saisie l'utilisateur (variable groupe)
J'ai vue que cela était ^possible grace à la fonction strcat
Merci de votre aide
*********************
/* Connexion et execution de requete sur un base de donnees Microsoft Access */
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#include <string.h>
#pragma comment(lib, "odbc32.lib")
int main(int argc, char *argv[])
{
char groupe[5];
char test[50];
printf ("Quel Groupe souhaitez vous analyser ?\n");
scanf("%s",groupe);
strcat(strcpy(test,"SELECT * FROM base WHERE CODNIV="),groupe);
HENV hEnv;
HDBC hDbc;
RETCODE rc;
int iOut;
char strOut[256];
char szDSN[256] = "driver={Microsoft Access Driver (*.mdb)};dbq=[ydu.mdb];";
/* char szSql[256] = "SELECT * FROM base"; */
char szSql[256] = "SELECT * FROM base WHERE CODNIV='00684'";
/* char szSql[256] = "SELECT * FROM base WHERE CODNIV='00684' and CODPRD='01.006'"; */
int ret1;
int ret2;
int ret3;
int ret4;
int ret5;
char CODNIV[128];
char TYPNIV[128];
char CODPRD[128];
int PRODC;
int OBJANNEE;
/* 1 - Connexion a la BDD Access */
rc = SQLAllocEnv(&hEnv);
rc = SQLAllocConnect(hEnv, &hDbc);
rc = SQLDriverConnect(hDbc, NULL, (unsigned char*)szDSN, SQL_NTS, (unsigned char*)strOut, 255, (SQLSMALLINT*)&iOut, SQL_DRIVER_NOPROMPT);
/* 2 - Preparation de la requete */
HSTMT hStmt;
rc = SQLAllocStmt(hDbc,&hStmt);
rc = SQLPrepare(hStmt,(unsigned char*)szSql, SQL_NTS);
/* 3 - Execution de la requete (Apres avoir binder les champs de resultats) */
/* rc = SQLBindCol(hStmt, tab_column, tr_type, tr_value, tr_len, len_or_ind); */
rc = SQLBindCol(hStmt, 1, SQL_C_CHAR, CODNIV, 128, (SQLINTEGER*)&ret1);
rc = SQLBindCol(hStmt, 2, SQL_C_CHAR, TYPNIV, 128, (SQLINTEGER*)&ret2);
rc = SQLBindCol(hStmt, 3, SQL_C_CHAR, CODPRD, 128, (SQLINTEGER*)&ret3);
rc = SQLBindCol(hStmt, 4, SQL_C_ULONG, &PRODC, 4, (SQLINTEGER*)&ret4);
rc = SQLBindCol(hStmt, 5, SQL_C_ULONG, &OBJANNEE, 4, (SQLINTEGER*)&ret5);
rc = SQLExecute(hStmt);
/* IMPORTANT : Pour les requetes du style DROP/CREATE/UPDATE... */
/*Vous pouvez utiliser : rc = SQLExecDirectA(hStmt,(unsigned char*)szSql,SQL_NTS); */
/* 4 - Boucle pour afficher les resultats */
while(!(SQLFetch(hStmt) & 0xFFFE))
{
printf("{%s}{%s}{%s}{%i}{%i}\n",CODNIV, TYPNIV, CODPRD, PRODC, OBJANNEE);
}
/* 5 - Liberations et fermeture de la connection a la BDD */
rc = SQLFreeStmt(hStmt, SQL_DROP);
rc = SQLDisconnect(hDbc);
rc = SQLFreeEnv(hEnv);
getch();
return 0;
}
****************************
ydu