0.4Se connecter à une source de données
L'essentiel en 30 secondes
- Database Expert = porte d'entrée : type de connexion (natif ou ODBC/OLE DB, fichier Excel/CSV), paramètres, puis tables strictement nécessaires.
- Les jointures font la justesse : plusieurs tables = lien sur un champ commun (Clients.ID = Commandes.ClientID) — sinon doublons et totaux faux.
- Le 32/64 bits bloque tout : pilote ODBC aligné sur le logiciel, identifiants non codés en dur, et filtre à la source pour la performance.
Mini-cas filé — Farès connecte ses ventes sans gonfler les totaux
Farès, contrôleur de gestion à Alger, connecte son état des ventes : via le Database Expert, il choisit sa source (base de l'entreprise, pilote natif), ne sélectionne que Clients et Commandes — pas les 40 tables de la base. Dans l'assistant de liens, il relie Clients.ID = Commandes.ClientID et contrôle le type de jointure. Premier Aperçu : le chiffre d'affaires lui paraît doublé — il repère une relation un-à-plusieurs mal gérée, corrige, puis recoupe le total avec le chiffre connu de la comptabilité. Il note aussi de ne jamais coder son mot de passe en dur et de filtrer à la source. Son socle de données est fiable.
Cas autonome de cette section : il revient dans le cours, le schéma, le script et le défi 48h de la section 0.4.
1. Choisir une source et des tables
Un rapport ne vaut que par ses données : la première étape est de se connecter à une source. Familles : bases relationnelles (SQL Server, Oracle, MySQL, SAP HANA…) en natif (pilote dédié, souvent plus performant) ou via ODBC/OLE DB (standards universels) ; fichiers (Excel, Access, CSV, XML) ; sources SAP. Via l'assistant de connexion (Database Expert) : on choisit le type, on fournit les paramètres (serveur, base, identifiants ; ou chemin de fichier), puis les tables à utiliser — uniquement le minimum utile. Farès ne prend que Clients et Commandes pour sa liste : moins de tables = rapport plus simple, plus rapide, moins de risques d'erreur.
2. Les jointures : le point crucial
Dès qu'un rapport utilise plusieurs tables (Clients et Commandes), Crystal Reports doit savoir comment les relier — via une jointure sur un champ commun (Clients.ID = Commandes.ClientID). L'assistant de liens (Links) permet de définir et vérifier ces liens. C'est crucial : des jointures mal définies produisent des rapports faux — doublons qui gonflent les totaux (relation un-à-plusieurs : chaque client répété par commande), lignes manquantes (mauvais type : une jointure interne masque les sans-correspondance), voire produit cartésien (tables non reliées : explosion des lignes) — souvent sans message d'erreur. Farès recoupe donc toujours ses totaux avec un chiffre connu avant de diffuser.
3. Points de vigilance
Sécurité : ne pas coder en dur les mots de passe ; la connexion peut demander une authentification à l'exécution. Architecture 32/64 bits : une source ODBC doit correspondre à l'architecture du logiciel — une incohérence est LA cause fréquente de « source introuvable ». Performance : filtrer à la source (sélection d'enregistrements, niveau 2) plutôt que charger des tables entières. Et l'on peut changer de source ensuite (« Set Datasource Location » : base de test → production) sans reconstruire le rapport. Farès applique les quatre : identifiants propres, pilote aligné, filtre à la source, bascule test → prod maîtrisée.
🔎 Exemple concret — 🔎 Exemple concret — Une jointure qui gonfle les totaux
Farès relie Clients et Commandes et contrôle son chiffre d'affaires.
Clients ⨝ Commandes sur Clients.ID = Commandes.ClientID.
Chaque client apparaît une fois par commande (un-à-plusieurs).
→ Sans vigilance : CA additionné sur des lignes dupliquées = FAUX.
→ Réflexe Farès : recouper avec le CA connu de la comptabilité.
Lecture : le rapport « a l'air » correct mais les totaux sont faux — l'erreur de jointure est silencieuse.
Leçon : vérifier le type de jointure (interne vs externe) et tester sur un total connu.
Vocabulaire de la section
- Source de données
- Ce à quoi Crystal Reports se connecte : bases relationnelles, fichiers (Excel, Access, CSV, XML), sources SAP.
Exemple simple : Farès se connecte à la base des ventes de l'entreprise.
Ce que ce n'est pas : un dossier où l'on tape les chiffres.
Réflexe : nommer la source exacte avant tout rapport.
- ODBC / OLE DB / natif
- Modes de connexion : natif (pilote dédié, souvent plus performant) ; ODBC/OLE DB (standards universels).
Exemple simple : Farès choisit le pilote natif de sa base, plus rapide que l'ODBC générique.
Ce que ce n'est pas : trois noms pour la même chose.
Réflexe : natif si disponible, sinon ODBC/OLE DB.
- Assistant de connexion (Database Expert)
- Outil pour choisir le type de connexion, fournir les paramètres et sélectionner les tables.
Exemple simple : Farès y renseigne serveur, base et identifiants, puis coche Clients et Commandes.
Ce que ce n'est pas : un générateur automatique de mise en page.
Réflexe : minimum de tables, paramètres vérifiés.
- Jointures (liens entre tables)
- Relations entre tables sur un champ commun ; de mauvais liens produisent des rapports faux.
Exemple simple : Farès relie Clients.ID = Commandes.ClientID et recoupe le total.
Ce que ce n'est pas : un simple tri alphabétique des tables.
Réflexe : chaque table reliée + total recoupé.
- Architecture 32/64 bits
- Une source ODBC doit correspondre à l'architecture du logiciel ; sinon « source introuvable ».
Exemple simple : Farès crée son DSN dans le bon administrateur ODBC (32 bits via SysWOW64).
Ce que ce n'est pas : un détail de version sans conséquence.
Réflexe : échec de connexion → vérifier 32/64 bits d'abord.
En pratique — En pratique — Se connecter à une source
- Ouvrez l'assistant (Database Expert) et choisissez le type, comme Farès : base (natif ou ODBC/OLE DB) ou fichier (Excel, CSV…).
- Fournissez les paramètres (serveur, base, identifiants ; ou chemin) et sélectionnez les TABLES nécessaires — le minimum utile.
- Si plusieurs tables : définissez/vérifiez les JOINTURES (champ commun) via l'Assistant de liens — étape cruciale.
- En cas d'échec, vérifiez le pilote et l'architecture 32/64 bits ; filtrez à la source pour la performance.
Script clic-par-clic — connecter + lier sans faux totaux (5 min)
1) Base de données → Database Expert → Créez une connexion : choisissez natif si votre base est listée, sinon ODBC/OLE DB. 2) Renseignez serveur + base (ou chemin du fichier Excel/CSV) → testez : les tables doivent apparaître. 3) Ajoutez UNIQUEMENT Clients et Commandes → onglet Liens : vérifiez le trait Clients.ID = Commandes.ClientID. 4) Aperçu → notez le total → comparez au chiffre connu : si doublé, comme Farès, revérifiez le type de jointure avant de continuer. 5) Fichier → Enregistrez ; notez la source (test ou prod) dans le nom du fichier.
En cas de « source introuvable », contrôlez d'abord le pilote et l'architecture 32/64 bits du DSN.
Modèle copier-coller — ma fiche de connexion fiable
Source : ___ (natif / ODBC / OLE DB / Excel / CSV).
Serveur ou chemin : ___ | Base : ___ | Compte (lecture seule) : ___.
Tables (minimum utile) : ___ + ___.
Liens : ___.ID = ___.ID | Type : [ ] interne / [ ] externe.
Contrôle : total Crystal = ___ | total connu = ___ | Écart : ___.
Bascule prod : Set Datasource Location test → prod le ___.
Base SQL Server
Farès se connecte en natif à SQL Server : serveur, base, compte lecture seule — puis Clients + Commandes liées par ID.
Fichier Excel
Service sans base : Farès pointe un classeur Excel fermé (chemin stable), vérifie les en-têtes de colonnes comme noms de champs.
Échec de connexion
« Source introuvable » : Farès lit le message exact, contrôle pilote + DSN 32/64 bits, puis paramètres et droits — dans cet ordre.
Test vers production
Rapport au point sur la base de test : Farès bascule via Set Datasource Location vers la prod, puis recoupe les totaux.
✓ Bonnes pratiques
- Ne sélectionnez que les tables nécessaires (moins = plus simple et fiable).
- Choisissez le bon type de jointure (interne vs externe) selon ce que vous voulez montrer.
- Testez vos totaux contre un chiffre connu pour détecter une multiplication.
✗ Pièges fréquents
- Laisser une table non reliée (produit cartésien : lignes qui explosent).
- Une jointure interne qui fait disparaître les enregistrements sans correspondance.
- Coder en dur des mots de passe sensibles.
Points clés à retenir
- Crystal Reports se connecte à des bases (natif ou ODBC/OLE DB) et à des fichiers, via l'assistant (Database Expert).
- Point CRUCIAL : les JOINTURES. Plusieurs tables doivent être reliées par un champ commun ; de mauvais liens = rapports faux.
- Vigilance : sécurité des identifiants et surtout l'architecture 32/64 bits (cause n°1 de « source introuvable »).
- Bonnes pratiques : filtrer à la source (performance) ; changer de source ensuite (« Set Datasource Location »).
Défi 48h — appliquez demain
Connectez une source réelle comme Farès (base ou Excel), liez deux tables sur leur champ commun, puis recoupez un total avec un chiffre connu — notez l'écart (zéro visé).
- J'ai connecté une source via le Database Expert et sélectionné le minimum de tables.
- Mes jointures sont vérifiées sur un champ commun, avec le bon type.
- Mon total est recoupé avec un chiffre connu (écart expliqué ou nul).
Questions fréquentes
Pourquoi les jointures sont-elles si importantes, et comment éviter les rapports faux ?
Parce qu'elles déterminent comment Crystal Reports combine plusieurs tables — et une jointure incorrecte produit silencieusement des rapports faux. Typiques : doublons (un-à-plusieurs qui gonfle les totaux), lignes manquantes (jointure interne qui masque les sans-correspondance → préférer une externe si l'on veut tout garder), produit cartésien (tables non reliées). Pour éviter : vérifier chaque lien sur le bon champ commun, choisir le bon type, se méfier des un-à-plusieurs sur les totaux, et tester contre un chiffre connu.
Que faire quand la connexion échoue ?
L'échec vient presque toujours de quelques causes, pas du rapport. (1) Incohérence 32/64 bits du pilote ODBC — LA cause n°1 : créez le DSN dans le bon administrateur (32 bits = odbcad32.exe dans SysWOW64). (2) Pilote manquant : installez celui de la base, bonne architecture. (3) Paramètres incorrects (serveur, base, port, chemin). (4) Identifiants/droits insuffisants. (5) Réseau/pare-feu (base distante, VPN). Méthode de Farès : lire le message exact, tester la source hors Crystal Reports, vérifier pilote et architecture d'abord, puis paramètres, droits et réseau.
L'état de Farès utilise Clients + Commandes. Quel est le point le plus crucial ?