Bonjour!!
Voila j'ai un petit souci avec ma connexion à ma base de données.
J'utilise la methode ODBC pour me connecter avec une classe de connexion personnalisé.
Donc je travaille sur un analyseur de base de données qui permet de recuperer les informations concernant la structure de la base de données (Un mini access).
Voila pour le moment il fonctionne mais je souhaite rajouter des fonctionnalités du moins recuperer des informations supplémentaires (Clé primaire, clé etrangere, et autres contraintes).
Mon souci est que j'ai une methode qui doit me permettre de recuperer la clé primaire d'une table:
j'utilise la fonction SQLGetPrimaryKeys de ODBC mais j'ai l'erreur suivante qui est genéré:
[IM001][Gestionnaire de pilotes ODBC] Le pilote ne prend pas en charge cette fonction
Par consequent , je ne recupere aucune information!
D'ou peut venir ce probleme?
J'ai essayé de mettre a jour mes pilotes ODBC mais ils sont deja à jour!
J'ai configuré mon lien ODBC dans ma table avec la version 3.
Enfin voila, la je plante completement!
Si quelqu'un a une idée je suis preneur!
Mon code:
Methode pour recuperer les clés primaires:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 //============================================================================== function TConnexionBDD.getPrimaryKey(Table:string):String; var OdbcStmt: SQLHANDLE; function GetString(ColumnNumber: integer): string; var iRet: integer; sRetour: array[0..64000] of char; begin Result := ''; if SQLSUCCEEDED(SQLGetData(OdbcStmt, ColumnNumber, SQL_C_CHAR, @sRetour[0], sizeof(sRetour), iRet)) then Result := Copy(sRetour, 1, min(sizeof(sRetour), iRet)); end; begin Result := ''; if not (estConnecte) then Exit; SQLAllocHandle(SQL_HANDLE_STMT, Hdbc, OdbcStmt); RetCode := SQLPrimaryKeys(OdbcStmt, nil, 0, nil, 0, PAnsichar(Table), Length(Table)); FErrorMessage := GetErrorMessage(SQL_HANDLE_STMT, OdbcStmt, RetCode); if FErrorMessage <> '' then begin SQLFreeHandle(SQL_HANDLE_STMT, OdbcStmt); Exit; end; while SQLSUCCEEDED(SqlFetch(OdbcStmt)) do begin Result := Result + GetString(4) + ','; end; Result := LeftStr(Result, Length(Result) - 1); end;
Partager