|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
IMPORSQL -> IMPORTATION DE FICHIER AVEC UN LIEN ODBC
Information sur la source
Description
Ce programme permet d'importer un fichier dans une base de donnée de type SQL Server ou Acces avec les autres je n'ai pas testé. Pour ce faire il suffit de créer un lien ODBC. Le format du fichier d'import est décrit dans l'aide ou plus bas Version 1.0.2 : Porter sous le compilateur Dec C++ Controle de la bonne execution de la requete 'Insert' et retour du code erreur
Source
- Extrait du code l'importation du fichier :
-
- /* Lancement de l'importation */
- void ImportFile ( HWND, char ServeurODBC[MAIN_LEN+1], char LoginAdmin[MAIN_LEN+1], char PwdAdmin[MAIN_LEN+1], char DirFile[MAIN_LEN+1], char NameTable[MAIN_LEN+1], char Colonne[LONG_LEN+1] )
- {
- // Déclaration des variables
- SQLRETURN retcode;
- char requete[1024+1]="";
- char buffer[1024+1]="";
- FILE *fp;
-
- // Vérification de la présence du fichier
- if ( (fp = fopen( DirFile, "rb")) == NULL)
- {
- /* Erreur impossible de creer le fichier de sortie */
- MessageBox(hWndMain,"Attention le fichier n'existe pas !","Erreur",MB_OK|MB_ICONERROR);
- }
- else
- {
- // Vérification de la présence de colonnes
- if ( strlen ( Colonne ) !=0 )
- {
- // Insertion des valeurs contenu dans le fichier
- while ( fgets ( buffer, 1024, fp) != NULL )
- {
- // Contruction de la requete du type INSERT INTO MaTable (Monchamp1, MonChamp2 ....) VALUES ( MaValeur1, MaValeur2 ...)
- strcpy ( requete, "INSERT INTO ");
- strcat ( requete, NameTable);
- strcat ( requete, " (");
- strcat ( requete, Colonne);
- strcat ( requete, ")");
- strcat ( requete, " VALUES ");
- strcat ( requete, "(");
- strcat ( requete, buffer );
- strcat ( requete, ")");
-
- MessageBox(hWndMain,requete,"DEBUG",MB_OK|MB_ICONINFORMATION);
-
- // Connexion à la base de données
- retcode=SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
-
- if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
- retcode=SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3,0);
-
- if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
- retcode=SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
-
- if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
- retcode=SQLConnect(hdbc, (SQLCHAR*)ServeurODBC, SQL_NTS, (SQLCHAR*)LoginAdmin, SQL_NTS, (SQLCHAR*)PwdAdmin, SQL_NTS);
- else
- {
- MessageBox(hWndMain,"Impossible de se connecter à la base de données","Erreur",MB_OK|MB_ICONERROR);
- return;
- }
-
- if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
- retcode=SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
-
- if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
- {
- retcode=SQLExecDirect(hstmt, (SQLCHAR*)requete, SQL_NTS);
-
- if( retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO )
- {
- // OK
- }
- else
- {
- sprintf( Erreur, "Impossible d'executer la requete ! code => %x", SQL_ERROR);
-
- MessageBox(hWndMain,Erreur,"Erreur",MB_OK|MB_ICONERROR);
- break;
- }
- }
- else
- {
- MessageBox(hWndMain,"Impossible de se connecter à la base de données","Erreur",MB_OK|MB_ICONERROR);
- }
-
- /* Déconnexion */
- SQLFreeStmt(hstmt, SQL_DROP);
- SQLDisconnect(hdbc);
- SQLFreeConnect(hdbc);
-
-
- }
- fclose(fp);
-
- MessageBox(hWndMain,"Fin de la procédure d'importation","Information",MB_OK|MB_ICONINFORMATION);
-
- }
- }
- }
Extrait du code l'importation du fichier :
/* Lancement de l'importation */
void ImportFile ( HWND, char ServeurODBC[MAIN_LEN+1], char LoginAdmin[MAIN_LEN+1], char PwdAdmin[MAIN_LEN+1], char DirFile[MAIN_LEN+1], char NameTable[MAIN_LEN+1], char Colonne[LONG_LEN+1] )
{
// Déclaration des variables
SQLRETURN retcode;
char requete[1024+1]="";
char buffer[1024+1]="";
FILE *fp;
// Vérification de la présence du fichier
if ( (fp = fopen( DirFile, "rb")) == NULL)
{
/* Erreur impossible de creer le fichier de sortie */
MessageBox(hWndMain,"Attention le fichier n'existe pas !","Erreur",MB_OK|MB_ICONERROR);
}
else
{
// Vérification de la présence de colonnes
if ( strlen ( Colonne ) !=0 )
{
// Insertion des valeurs contenu dans le fichier
while ( fgets ( buffer, 1024, fp) != NULL )
{
// Contruction de la requete du type INSERT INTO MaTable (Monchamp1, MonChamp2 ....) VALUES ( MaValeur1, MaValeur2 ...)
strcpy ( requete, "INSERT INTO ");
strcat ( requete, NameTable);
strcat ( requete, " (");
strcat ( requete, Colonne);
strcat ( requete, ")");
strcat ( requete, " VALUES ");
strcat ( requete, "(");
strcat ( requete, buffer );
strcat ( requete, ")");
MessageBox(hWndMain,requete,"DEBUG",MB_OK|MB_ICONINFORMATION);
// Connexion à la base de données
retcode=SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
retcode=SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3,0);
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
retcode=SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
retcode=SQLConnect(hdbc, (SQLCHAR*)ServeurODBC, SQL_NTS, (SQLCHAR*)LoginAdmin, SQL_NTS, (SQLCHAR*)PwdAdmin, SQL_NTS);
else
{
MessageBox(hWndMain,"Impossible de se connecter à la base de données","Erreur",MB_OK|MB_ICONERROR);
return;
}
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
retcode=SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode=SQLExecDirect(hstmt, (SQLCHAR*)requete, SQL_NTS);
if( retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO )
{
// OK
}
else
{
sprintf( Erreur, "Impossible d'executer la requete ! code => %x", SQL_ERROR);
MessageBox(hWndMain,Erreur,"Erreur",MB_OK|MB_ICONERROR);
break;
}
}
else
{
MessageBox(hWndMain,"Impossible de se connecter à la base de données","Erreur",MB_OK|MB_ICONERROR);
}
/* Déconnexion */
SQLFreeStmt(hstmt, SQL_DROP);
SQLDisconnect(hdbc);
SQLFreeConnect(hdbc);
}
fclose(fp);
MessageBox(hWndMain,"Fin de la procédure d'importation","Information",MB_OK|MB_ICONINFORMATION);
}
}
}
Conclusion
Voici l'aide pour comprendre le fonctionnement : Contenu de l'aide : Aide sur Import SQL by ODBC Groupe "Connexion" : - Serveur : Indique le nom du lien ODBC. Celui ci doit être configuré dans Source de données. - Login : Indique le login de connexion à la base de donnée. - Password : Indique le password de connexion à la base de donnée. Groupe "Fichier à importer" : Permet de saissir le chemin complet du fichier à importer. Ou bien de sélectionner le fichier en cliquant sur le bouton "...". Le format du fichier sera décrit après. Groupe "Requete" : - Table : Indique le nom de la table dans laquelle les enregistrements seront importés. - Colonne : Indique le nom des différentes colonnes de la table séparées par une virgule. Description du fichier à importer : Le fichier à importer doit contenir le même nombre de champs que de colonne saissi et les différentes valeurs doivent t'être séparées par des virgules. Attention les champs spéciaux doivent avoir les cotes ! Trinita
Fichier Zip
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
Télécharger le zip
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Comparez les prix Nouvelle version
|