16.3 Programmes testés avec MyODBC

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 :

Program
Comment
Access
Pour faire fonctionner Access :
  • Vous devez avoir une clé primaire dans votre table.
  • Vous devez avoir une colonne de type timestamp dans toutes les tables qui vous voudrez modifier.
  • N'utilisez que des champs double float. Access échoue de la la comparaison de simple floats.
  • Choisissez l'option 'Return matching rows' lors de la connexion à MySQL.
  • Sous NT, Access retournera les colonnes de type 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.
  • Access ne gère pas toujours les DATE correctement. Si vous avez un souci avec, changez les colonnes en type DATETIME.
  • Dans certains cas, Access peut générer des requêtes SQL illégales, que MySQL ne peut pas comprendre. Vous pouvez corriger cela en selection l'option "Query|SQLSpecific|Pass-Through" dans le menu Access.
DataJunction
Vous devez vous arranger pour retourner des colonnes de type VARCHAR plutot que ENUM, car il ne gère pas correctement ces dernières.
Excel
Fonctionne. Conseils :
  • Si vous avez des problèmes avec les dates, essayez de les selectionner sous la forme de chaînes en utilisant la fonction 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.
odbcadmin
Programme de test pour ODBC.
Delphi
Il faut utiliser DBE 3.2 ou plus récent. Utilisez l'option 'Don't optimize column width' lors de la connexion à MySQL. Par ailleurs, voici un source utile sous delphi, qui prépare la source ODBC et une entrée MyODBC (l'entrée BDE requiert BDE Alias Editor qui peut être disponible librement sur le site Delphi Super Page près de chez vous.) (Merci à Bryan Brunton bryan@flesherfab.com pour celle la).
fReg:= TRegistry.Create;
  fReg.OpenKey('\Software\ODBC\ODBC.INI\DocumentsFab', True);
  fReg.WriteString('Database', 'Documents');
  fReg.WriteString('Description', ' ');
  fReg.WriteString('Driver', 'C:\WINNT\System32\myodbc.dll');
  fReg.WriteString('Flag', '1');
  fReg.WriteString('Password', '');
  fReg.WriteString('Port', ' ');
  fReg.WriteString('Server', 'xmark');
  fReg.WriteString('User', 'winuser');
  fReg.OpenKey('\Software\ODBC\ODBC.INI\ODBC 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);
C++Builder
Testé sous BDE 3.0. Le seul problème connu est lorsque la structure de la table change, les champs de requêtes ne sont pas modifiés. BDE ne semble pas reconnaitre les clés primaires, mais seulement les index primaires, bien que cela n'ai pas généré de problèmes.
Visual basic
Pour pouvoir modifier une table, vous devez définir une clé primaire pour cette table.