La plupart des programmes fonctionnent avec MyODBC, mais ceux de la liste suivante on été testé par nos soins, ou vérifié par quelqu'un qui l'utilise :@:
BLOB comme des objets OLE OBJECTS. Si, à la place, vous voulez avoir des colonnes de types MEMO, il vous faut changer la colonne en TEXT avec ALTER TABLE.
DATE correctement. Si vous avez un souci avec, changez les colonnes en type DATETIME.
"Query|SQLSpecific|Pass-Through" dans le menu Access.
VARCHAR plutot que ENUM, car il ne gère pas correctement ces dernières.
CONCAT(). Par exemple :@:
select CONCAT(rise_time), CONCAT(set_time) from sunrise_sunset;Les valeurs retournées sous la forme de chaînes sont correctement reconnues par Excel. L'objectif de
CONCAT() dans cet exemple est de tromper ODBC, pour lui faire croire qu'il a à faire avec une colonne de type chaîne.
Sans cela, ODBC sait que c'est une colonne de type temps et Excel ne le comprend pas.
Notez que c'est un bug d'Excel, car ce dernier converti automatiquement les chaînes en dates.
C'est bien lorsque la source est un texte, mais c'est idiot lorsque la source est une connexion ODBC.
fReg:@:= TRegistry.Create;
fReg.OpenKey('SoftwareODBCODBC.INIDocumentsFab', True);
fReg.WriteString('Database', 'Documents');
fReg.WriteString('Description', ' ');
fReg.WriteString('Driver', 'C:@:WINNTSystem32myodbc.dll');
fReg.WriteString('Flag', '1');
fReg.WriteString('Password', '');
fReg.WriteString('Port', ' ');
fReg.WriteString('Server', 'xmark');
fReg.WriteString('User', 'winuser');
fReg.OpenKey('SoftwareODBCODBC.INIODBC Data Sources', True);
fReg.WriteString('DocumentsFab', 'MySQL');
fReg.CloseKey;
fReg.Free;
Memo1.Lines.Add('DATABASE NAME=');
Memo1.Lines.Add('USER NAME=');
Memo1.Lines.Add('ODBC DSN=DocumentsFab');
Memo1.Lines.Add('OPEN MODE=READ/WRITE');
Memo1.Lines.Add('BATCH COUNT=200');
Memo1.Lines.Add('LANGDRIVER=');
Memo1.Lines.Add('MAX ROWS=-1');
Memo1.Lines.Add('SCHEMA CACHE DIR=');
Memo1.Lines.Add('SCHEMA CACHE SIZE=8');
Memo1.Lines.Add('SCHEMA CACHE TIME=-1');
Memo1.Lines.Add('SQLPASSTHRU MODE=SHARED AUTOCOMMIT');
Memo1.Lines.Add('SQLQRYMODE=');
Memo1.Lines.Add('ENABLE SCHEMA CACHE=FALSE');
Memo1.Lines.Add('ENABLE BCD=FALSE');
Memo1.Lines.Add('ROWSET SIZE=20');
Memo1.Lines.Add('BLOBS TO CACHE=64');
Memo1.Lines.Add('BLOB SIZE=32');
AliasEditor.Add('DocumentsFab','MySQL',Memo1.Lines);