IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

Problème avec Excel et Paradox


Sujet :

Bases de données Delphi

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 16
    Points : 1
    Points
    1
    Par défaut Problème avec Excel et Paradox
    Bonjour à tous !

    J'ai développé une appli en delphi 7 basée sur sur une table paradox (paradox 7) vide (c'est bien mon petit !)

    J'ai à côté un fichier excel qui contient les enregistrements (ha ! bah là c'est carrément le susucre !)

    Je sais pas comment remplir la table paradox avec le contenu du fichier excel. (hooooooooooooooooooooo)
    Ca a pourtant l'air évident pour tout le monde, puisque je ne trouve rien dans les forums, mais pas pour moi.

    (et tu n'as même pas réfléchi un peu ?)

    Bin si, j'ai vu que je pouvais importer ma table excel sous access, et que sous access je pouvais exporter ma table en paradox (ha bin voilà !!!)
    Bin oui mais le problème c'est que tous les caractères accentués sous access se transforme en caractères tous carrés après l'exportation ! c'est balot ça non ?
    De plus je constate que les types de champ n'ont pas grand'chose à voir quand je les regarde avec access, ou quand je les regarde avec le module base de données de DELPHI.

    Alors qu'est-que c'est la soluce ? si si y'en a forcément une !

    merci les amis !

  2. #2
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 67
    Points : 68
    Points
    68
    Par défaut
    Bonjour,

    Je connais bien ce problème pour l'avoir rencontré plusieurs fois. Jusqu'à ce jour je n'ai trouvé aucune solution satifaisante. En effet, l'export sous DBASE IV produit les mêmes difficultés.

    J'ai donc créer deux moulinettes, une pour changer les caractères isotériques en caractères accentués. Attention à prendre la valeur décimale ou héxadécimale pour faire la traduction, sinon erreur. Une seconde pour transférer les éléments de la base Access ou DBASE, que je préfère car compatible avec le BDE Delphi, vers les tables Paradox.

    Voilà comment je procède, ce n'est pas génial mais ça fonctionne. En tout état de cause plus rapide que de chercher une solution. Il faut dire que pour les américains, les caractères accentés doivent être le cadet de leurs soucis.

    Si tu trouves une meilleure solution, je suis preneur.

    Cordialement

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 16
    Points : 1
    Points
    1
    Par défaut
    Et m... !

    Bon... merci quand même...

    Tu peux détailler un peu plus tes routines, histoire de voir si je fais le poids ?

  4. #4
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour

    Pourquoi ne lis-tu pas tous simplement ton tableau Excel ?
    Et à chaque champs lu, tu l'ecris dans ta table Paradox.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 16
    Points : 1
    Points
    1
    Par défaut
    lire avec un ado et écrire avec un composant bde ?

    pourquoi pas...

    t'as une idée précise ?

  6. #6
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Tu ecris une boucle dans laquelle tu lis les cellules de ta feuille Excel, l'index de la boucle étant la ligne ou la colonne suivant que tes valeurs son rangées en colonne ou en ligne.
    Tu ajoutes les valeurs au champs approprié de la table.

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 16
    Points : 1
    Points
    1
    Par défaut
    Bon alors je tiens une solution au problème.
    Je la met ici pour ceux que ça pourrait intéresser.

    1) jeter un oeil sur l'excellent tut ici
    2) faire un transfert de la table excel à la table paradox par un batchmove (merci delphiprog)

    J'ai un dernier souci : au moment du 2), j'aimerais paramétrer le type des champs paradox qui vont accueillir les données pour éviter d'avoir du float là où j'aimerais avoir de l'incrément auto, etc.

    si quelqu'un a une idée...

    Voili voilou....

  8. #8
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 67
    Points : 68
    Points
    68
    Par défaut
    Bonjour,

    A ma connaissance, il n'y a qu'une réponse partielle. Il faut au préalable créer la table de destination. Puis, mettre en concordance les champs de la table source avec les champs de la table destination avant d'exécuter BatchMove.

    L'aide de Delphi 7 sur le composant BatchMove te donne toutes les explications nécessaires. Ainsi, tu devrais pouvoir résoudre ton problème.

    Il faut tester car il peut encore exister des incompatibilités.

    C'est pour cette raison que j'ai constituer ma moulinette qui résoud tous ces petits détails. En plus, en terme de temps, je ne crois pas que ma méthode soit pénalisante.

    Transfert de Excel vers une base DBASE IV ;
    Ajustement dans la matrice Delphi, des champs à remettre les lettres accentués ;
    Mettre en concordance les champs de la table source et de la table destination.
    Je veux bien de l'adresser les sources de ma moulinette. Dans la journée, je te prépare le fichier et te l'adresse en pièce jointe d'un message. Il suffit de me confirmer ton accord sur cette méthode.

    Bon courage

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 16
    Points : 1
    Points
    1
    Par défaut
    Avec plaisir, ta méthode m'intéresse.

    J'espère que j'arriverai à suivre.

  10. #10
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 67
    Points : 68
    Points
    68
    Par défaut
    Bonjour,

    Comme convenu, je t'adresse le programme pour assurer le transfert d'un fichier excel vers une table Paradox et la présentation des lettres accentuées.

    J'ai refait un exemple complet qui comprend :

    un fichier Excel ;
    la table DBF qui en découle (source) ;
    la table Paradox de destination (destination) ;
    les sources du programme écrit en Delphi 7 ;
    une aide pour indiquer la procédure à suivre.

    Les fichiers Excel, TSource et TDestinat sont dans le répertoire "Listes"

    A ta disposition pour tout autre renseignement.

    Cordialement

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 16
    Points : 1
    Points
    1
    Par défaut
    Alors ça c'est super sympa !

    Je jette un coup d'oeil demain.

  12. #12
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 16
    Points : 1
    Points
    1
    Par défaut
    Je te remercie pour ce travail minutieux dont tu me fais profiter.

    Il y a même un ficier d'aide

    Alors j'ai tout fait comme tu as dit, mais j'ai juste un problème à la compilation :
    [Erreur fatale] PMoul.dpr(6): Fichier non trouvé : 'ExceptionLog.dcu'

    Kékifé ce fichier ? Pourquoi kilépala ?

    Merci !

  13. #13
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 67
    Points : 68
    Points
    68
    Par défaut
    Bonjour,

    Le fichier non trouvé ne sert à rien pour ton exemple. Il s'agit d'un fichier pour EurekaLog qui est un composant spécial pour trouver les bugs dans les applications en cours de test. J'ai omis, lors de la création de ton exemple, de le neutraliser.

    Tu dois donc l'enlever, pour cela tu vas dans le projet "PMoul" et tu supprimes l'unité "exceptionlog". Tu compiles. En principe tout doit rentrer dans l'ordre.

    Si cela ne fonctionne pas tu me dis et je t'adresserai les sources modifiées.

    A plus.

  14. #14
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 16
    Points : 1
    Points
    1
    Par défaut
    Euh... je veux pas être lourd, mais j'ai un nouveau message dont je n'arrive pas à situer la provenance :

    [Erreur fatale] uProg.pas(147): Impossible de créer le fichier de sortie 'f:\prog_exe\uProg.dcu'

  15. #15
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 67
    Points : 68
    Points
    68
    Par défaut
    En fait, il s'agit de l'endroit où j'envoie le progarmme lorsqu'il est compiler "unités dcu".

    Dans Delphi, tu cliques sur "Projet", "Options", "Répertoires/Conditions". Là tu choisis les répertoires à utiliser pour :
    Destination
    Destination de l'unité

    Ton erreur provient du fait que, lors de la compilation, tu veux expédier l'unité "uProg.dcu" dans un répertoire qui n'existe pas sur ton ordinateur.

    A plus

  16. #16
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 16
    Points : 1
    Points
    1
    Par défaut
    ouaou ! j'ai encore plein de choses à apprendre !

    Je regarde ça... merci.

  17. #17
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 16
    Points : 1
    Points
    1
    Par défaut
    Ca ne marche pas... snif...

    pas de message d'erreur, juste : ça ne marche pas...

    le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // Mise en correspondance des champs de la source et de la destination
    // C'est ici que vous devez apporter vos modifications
    procedure TfrmParad.MiseCorrespondanceChamp;
    begin
      with tbDestinat do
      begin
        FieldByName('Id').Asinteger := tbSource.FieldByname('Id').Asinteger;
      end;
    end;

  18. #18
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 67
    Points : 68
    Points
    68
    Par défaut
    Bonjour,

    Aucune raison de non fonctionnement. Quel est le point qui ne fonctionne pas "Transfert", "Lettres accentées", autres. Il faut quelques précisions pour pouvoir détecter l'erreur.

    Sinon, tu peux m'expédier ton code modifié afin que je vérifie où est le dysfonctionnement.

    J'ai fait des tests pour vérifier aves mes exemples et rien à signaler alors pour toi cela doit être identique. Les tables ont bien été mise à jour, l'appui sur le bouton "Transférer" doit lancer l'exécution du transfert.

    A ta disposition, cela va fonctionner aucun souci sur ce point.

    En dernier recours, nous pourrons peut-être faire le dépannage par téléphone.

    A plus

  19. #19
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 16
    Points : 1
    Points
    1
    Par défaut
    Hé bien, j'ai horreur de ça parce que j'estime que ce n'est pas aux autres de faire mon travail mais en l'occurrence je vois pas...

    tu trouveras ce qu'il faut ci-dessous. Si tu as une idée c'est cool.

  20. #20
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 67
    Points : 68
    Points
    68
    Par défaut
    Bonjour,

    J'ai trouvé la raison de ton dysfonctionnement.

    Les champs de la source et de la destination doivent être de même type. Dans ton cas, tu veux inclure un champ caractères (DBF) dans un champ auto-incrémenté (DB). Aucune chance d'y arriver.

    De plus, il est impossible de faire une imputation dans un champ auto-incrémenté. le principe du champ auto-incrémenté est de créer un index qui ne comprend aucun doublon. Si tu fais une imputation, tu peux mettre deux index identiques avec les conséquences qui vont avec.

    Dans le champ auto-incrémenté, tu ne dois rien mettre. Ce champ se mettra en forme automatiquement au moment du "Post" de la table destination.

    Pour ton cas, tu dois imputer tous les autres champs sauf le champ 'Id'. D'ailleurs, ce champ 'Id' a un usage interne. Si tes enregistrements doivent comporter un numéro d'identification, il convient de créer un champ no client et l'enregistrer comme un autre champ.

    En résumé, le champ auto-incrémenté ne peut pas recevoir une imputation, il est automatique mis à jour au moment du post.

    Je pense que tu devrais lire quelques tutorials sur le fonctionnement des bases de données. Il y tout ce qu'il faut sur le présent site.

    J'espère que je suis assez clair pour te permettre de progresser, sinon un petit message de tes difficultés.

    A plus

Discussions similaires

  1. Problème avec excel
    Par clo85 dans le forum MATLAB
    Réponses: 2
    Dernier message: 02/07/2007, 13h54
  2. problème avec excell
    Par joooooo dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 06/05/2007, 19h13
  3. Problème avec Excel
    Par kmaniche dans le forum C++Builder
    Réponses: 11
    Dernier message: 26/03/2007, 10h05
  4. Problème avec Excel et tableau croisé dynamique
    Par françois62 dans le forum VBScript
    Réponses: 9
    Dernier message: 19/11/2006, 22h17
  5. [MFC] [CRecordset] Problème avec Excel
    Par Yellowmat dans le forum MFC
    Réponses: 4
    Dernier message: 20/07/2005, 15h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo