0.4Se connecter à une source de données
Un rapport ne vaut que par ses données : la première étape concrète est de SE CONNECTER À UNE SOURCE DE DONNÉES. Crystal Reports peut se connecter à une grande variété de sources, regroupées en familles. (1) Bases de données relationnelles : SQL Server, Oracle, MySQL, PostgreSQL, SAP HANA… — via des connexions NATIVES (pilote dédié à la base) ou via ODBC/OLE DB (standards universels de connexion aux bases). (2) Fichiers : Excel, Access, texte/CSV, XML. (3) Sources SAP et autres connecteurs d'entreprise. Le choix de la connexion se fait via l'assistant de connexion (à la création du rapport, ou via « Database Expert / Assistant base de données »). On sélectionne le TYPE de connexion, on fournit les paramètres (serveur, base, identifiants pour une base ; chemin du fichier pour Excel/CSV), puis on choisit les TABLES à utiliser. Une fois connecté, les tables et leurs champs apparaissent dans l'explorateur de champs, prêts à être placés dans le rapport.
Deux notions importantes accompagnent la connexion. (1) Les JOINTURES (liens entre tables) : dès qu'un rapport utilise PLUSIEURS tables (par exemple Clients et Commandes), Crystal Reports doit savoir COMMENT les relier — via une jointure sur un champ commun (le lien Clients.ID = Commandes.ClientID). L'Assistant de liens (Links) permet de définir/vérifier ces liens. C'est un point CRUCIAL : des jointures mal définies produisent des rapports FAUX (doublons, lignes manquantes, totaux erronés). (2) La distinction ODBC vs natif vs OLE DB : les connexions NATIVES (pilote spécifique) sont souvent plus performantes ; ODBC/OLE DB sont universels (fonctionnent avec presque toutes les bases). Points de vigilance. (1) Identifiants et sécurité : ne pas coder en dur des mots de passe sensibles ; la connexion peut demander une authentification à l'exécution. (2) Architecture 32/64 bits : une source ODBC doit correspondre à l'architecture du logiciel — une incohérence 32/64 bits est LA cause fréquente d'une « source introuvable ». (3) Filtrer à la source : pour la performance, mieux vaut restituer seulement les données nécessaires (via la sélection d'enregistrements, niveau 2) plutôt que charger des tables entières. (4) On peut CHANGER de source ultérieurement (« Set Datasource Location ») — utile pour passer d'une base de test à une base de production. Savoir se connecter (choisir le bon type, fournir les paramètres, sélectionner les tables) et surtout comprendre les JOINTURES entre tables est le socle : sans données correctement connectées et reliées, aucun rapport n'est fiable. Une fois la source connectée et les tables reliées, on peut concevoir le rapport.
Vocabulaire de la section
- Source de données
- Ce à quoi Crystal Reports se connecte pour lire les données : bases relationnelles (SQL Server, Oracle, MySQL, SAP HANA…), fichiers (Excel, Access, CSV, XML), sources SAP.
- ODBC / OLE DB / natif
- Modes de connexion : NATIF (pilote dédié à la base, souvent plus performant) ; ODBC / OLE DB (standards UNIVERSELS fonctionnant avec presque toutes les bases).
- Assistant de connexion / base de données
- L'outil (Database Expert) pour choisir le type de connexion, fournir les paramètres (serveur, base, identifiants ou chemin de fichier) et sélectionner les tables.
- Jointures (liens entre tables)
- Quand un rapport utilise plusieurs tables, elles sont RELIÉES par un champ commun (Clients.ID = Commandes.ClientID). Point CRUCIAL : de mauvais liens produisent des rapports faux (doublons, lignes manquantes).
- Architecture 32/64 bits
- Une source ODBC doit correspondre à l'architecture du logiciel ; une incohérence 32/64 bits est la cause fréquente d'une « source introuvable ».
Quel est le point CRUCIAL lorsqu'un rapport utilise plusieurs tables ?
En pratique — Se connecter à une source
- Ouvrez l'assistant de connexion (Database Expert) et choisissez le type : base relationnelle (natif ou ODBC/OLE DB) ou fichier (Excel, CSV…).
- Fournissez les paramètres (serveur, base, identifiants pour une base ; chemin pour un fichier) et sélectionnez les TABLES à utiliser.
- Si plusieurs tables : définissez/vérifiez les JOINTURES (liens sur un champ commun) via l'Assistant de liens — étape cruciale pour un rapport correct.
- En cas d'échec de connexion, vérifiez le pilote et l'architecture 32/64 bits (cause fréquente) ; pensez à filtrer à la source pour la performance.
Points clés à retenir
- Crystal Reports se connecte à des BASES relationnelles (SQL Server, Oracle, MySQL, SAP HANA…) en NATIF ou via ODBC/OLE DB (universels), et à des FICHIERS (Excel, Access, CSV, XML) — via l'assistant de connexion (Database Expert).
- Point CRUCIAL : les JOINTURES entre tables. Dès qu'on utilise plusieurs tables, elles doivent être RELIÉES par un champ commun (Clients.ID = Commandes.ClientID). De mauvais liens = rapports FAUX (doublons, lignes manquantes, totaux erronés).
- Vigilance : identifiants/sécurité (ne pas coder en dur les mots de passe), et surtout l'architecture 32/64 BITS des pilotes ODBC (cause n°1 de « source introuvable »).
- Bonnes pratiques : FILTRER à la source (performance) plutôt que charger des tables entières ; on peut CHANGER de source ensuite (« Set Datasource Location » — base de test → production).
Questions fréquentes
Pourquoi les jointures entre tables sont-elles si importantes, et comment éviter les rapports faux ?
Les jointures (liens entre tables) sont importantes car elles déterminent COMMENT Crystal Reports combine les données de plusieurs tables — et une jointure incorrecte produit silencieusement des rapports FAUX (chiffres erronés sans message d'erreur), ce qui est le piège n°1 du reporting multi-tables. Le principe : les données sont réparties dans plusieurs tables (Clients, Commandes, Produits…). Pour afficher, par exemple, « les commandes avec le nom du client », Crystal Reports doit RELIER la table Commandes à la table Clients via un CHAMP COMMUN (Commandes.ClientID = Clients.ID). C'est la jointure. Sans jointure correcte, l'outil ne sait pas quelle ligne va avec quelle ligne. Les problèmes causés par de mauvaises jointures : (1) DOUBLONS / multiplication des lignes. Une jointure mal définie (ou une relation « un-à-plusieurs » mal comprise) peut multiplier les lignes : chaque client apparaît autant de fois qu'il a de commandes, et si on n'y prend pas garde, les TOTAUX sont gonflés (on additionne des montants dupliqués). C'est l'erreur la plus fréquente et la plus trompeuse : le rapport « a l'air » correct mais les totaux sont faux. (2) Lignes MANQUANTES. Le TYPE de jointure compte : une jointure INTERNE (inner join) n'affiche que les enregistrements présents des DEUX côtés — donc un client SANS commande disparaît, une commande sans client référencé disparaît. Si on voulait tous les clients (même sans commande), il faut une jointure EXTERNE (left/right outer join). Un mauvais type de jointure fait donc disparaître des données. (3) Produit cartésien. Des tables non reliées (aucun lien) se combinent « toutes lignes avec toutes lignes » → un nombre explosif de lignes, totalement faux. Comment éviter les rapports faux : (1) Vérifiez les LIENS dans l'Assistant de liens (Links) : assurez-vous que chaque table est reliée à une autre par le BON champ commun (une clé), et qu'aucune table ne reste isolée. (2) Comprenez le TYPE de jointure nécessaire : interne (seulement les correspondances des deux côtés) vs externe (garder tous les enregistrements d'un côté même sans correspondance) — choisissez selon ce que vous voulez montrer. (3) Méfiez-vous des relations un-à-plusieurs et de leur effet sur les TOTAUX : vérifiez que vos sommes ne comptent pas des montants dupliqués (une commande liée à plusieurs lignes de détail peut multiplier le montant d'entête). Recoupez avec un total connu. (4) Testez sur des données connues : comparez le résultat du rapport à un chiffre que vous connaissez (un total attendu) pour détecter une multiplication. (5) Comprenez le MODÈLE de données (quelles tables, quelles clés, quelles relations) avant de construire — c'est là que des notions de base de données aident vraiment. En résumé : les jointures sont cruciales car elles combinent les tables, et une jointure incorrecte produit des rapports FAUX de façon silencieuse — doublons qui gonflent les totaux, lignes manquantes (mauvais type de jointure), ou explosion des lignes (tables non reliées). Pour éviter cela : vérifiez que toutes les tables sont RELIÉES par le bon champ commun, choisissez le bon TYPE de jointure (interne vs externe selon le besoin), soyez vigilant sur les relations un-à-plusieurs et leur effet sur les totaux, et TESTEZ contre des chiffres connus. Maîtriser les jointures est ce qui sépare un rapport juste d'un rapport trompeur — c'est le point le plus important de la connexion aux données.
Que faire quand Crystal Reports ne parvient pas à se connecter à ma source de données ?
Un échec de connexion vient presque toujours d'une poignée de causes bien identifiées (pilote, architecture, paramètres, droits) plutôt que d'un problème du rapport — voici comment diagnostiquer méthodiquement. Les causes fréquentes et leurs remèdes : (1) Incohérence 32 bits / 64 bits (LA cause n°1 pour ODBC). Crystal Reports (souvent 32 bits) doit utiliser un pilote/DSN ODBC de la MÊME architecture. Un DSN créé dans l'administrateur ODBC 64 bits n'est pas vu par un logiciel 32 bits (et inversement). Remède : créez le DSN dans le bon administrateur ODBC (il existe une version 32 bits — odbcad32.exe dans SysWOW64 — et une 64 bits). Alignez l'architecture. C'est souvent LE problème quand la « source est introuvable ». (2) Pilote MANQUANT. Le pilote de la base (Oracle, MySQL, un ODBC spécifique) n'est pas installé. Remède : installez le pilote fourni par l'éditeur de la base, dans la bonne architecture. (3) Paramètres de connexion INCORRECTS. Nom du serveur, nom de la base, port, chemin du fichier erronés. Remède : vérifiez soigneusement chaque paramètre (le nom du serveur/instance est une erreur courante). (4) Identifiants / droits. Mauvais utilisateur/mot de passe, ou compte sans droit de LECTURE sur les tables. Remède : vérifiez les identifiants et que le compte a accès aux données. (5) Réseau / pare-feu. Le serveur de base n'est pas joignable (réseau, VPN, port bloqué). Remède : testez la connectivité réseau au serveur/port ; vérifiez le VPN si la base est distante. (6) Fichier verrouillé/inaccessible (pour Excel/Access) : le fichier est ouvert ailleurs, déplacé, ou son chemin a changé. Remède : fermez-le ailleurs, vérifiez le chemin. Méthode de diagnostic : (1) Notez le message d'erreur EXACT (il oriente souvent : « driver not found », « login failed », « server not found »). (2) Testez la connexion HORS Crystal Reports si possible (l'outil de la base, un test ODBC) pour isoler : si ça échoue aussi, le problème est la source/le pilote, pas Crystal Reports. (3) Vérifiez d'abord l'ARCHITECTURE 32/64 bits (ODBC) et le PILOTE — les causes les plus fréquentes. (4) Puis les PARAMÈTRES, les IDENTIFIANTS, le RÉSEAU. Astuce utile : « Set Datasource Location » permet de re-pointer un rapport vers une source corrigée sans le recréer. En résumé : un échec de connexion est rarement dû au rapport ; les causes typiques sont l'incohérence 32/64 bits du pilote ODBC (n°1), un pilote manquant, des paramètres/identifiants incorrects, ou un problème réseau/droits. Diagnostiquez en lisant le message exact, en vérifiant d'abord l'architecture et le pilote, puis les paramètres/identifiants/réseau, et testez la source hors Crystal Reports pour isoler le problème. La plupart des blocages de connexion se résolvent en corrigeant le pilote/l'architecture ou les paramètres.