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

WinDev Discussion :

Importation BDD externe => HF [WD18]


Sujet :

WinDev

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut Importation BDD externe => HF
    Bonjour,
    j'avoue ne pas trop comprendre les mécanismes de Windev en matière d'importation de base de données.
    J'ai une Bdd Sqlite (fichier .bd) dont je souhaite importer la structure et les données en transformant le tout en base HF ; je crée un nouveau projet, arrivé sur l'écran Base de données, je choisis Oui, utiliser une base de données existante, ensuite Importer la description depuis une base de données existante.
    Puis, dans l'écran Création de l'analyse/Type de base de données, je choisis sqlite, je nomme ensuite ma connexion ; dans l'écran Import des données, je choisis Convertir les données dans le format HyperFileSQL. Je sélectionne toutes les tables de ma bdd source et terminé.

    Une fois l'analyse générée, je me retrouve, dans Connexions, avec 2 connexions: la première, celle que j'ai créée lors de la création du projet, et une 2ème connexion "MaConnexion1" avec, en description le chemin complet de ma bdd source.
    Le type d'accès des 2 connexions est: Sqlite !?
    Or, je voudrais n'avoir qu'une seule bdd de type HyperFileSQL contenant toutes les données de la bdd source, et plus aucune connexion avec ma bdd source.

    Qu'ai-je manqué dans la procédure ?

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Bonsoir,

    merci déjà de l'effort dans la rédaction du message... ça fait plaisir...

    J'avoue que j'ai jamais fait ça mais à ta place je regarderais au niveau de l'analyse tu dois pouvoir voir si les tables sont des fichiers "type" hyperfile.
    ensuite je supprimerai "MaConnexion1" et je redéfinirais la connexion comme elle devrait être : hf classic ou hf c/s.

    Envoie des screenshots de l'analyse et de la connexion sinon.
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut
    Effectivement, je n'y avais pas pensé, mais j'ai vérifié et les fichiers de données sont bien de type HyperFileSQL.
    Par contre, je viens de me rendre compte, en créant une requête, que la bdd est vide: Windev n'a pas importé les données !

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut
    J'ai suivi tes conseils: j'ai supprimé MaConnexion1 et changé le type d'accès pour celle créée lors de la création du projet en HF. Quand je clique sur le bouton Tester, rien ne se passe (ni message d'erreur, ni message de réussite)...

    Je vais peut-être me résoudre à recréer temporairement la connexion vers la bdd source, juste le temps de faire les requêtes permettant de transférer les données vers la bdd HF...

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Bonsoir,

    Je connais pas bien l'assistant d'import de base externe de Windev... je pourrais pas trop t'aiguiller la dessus.

    Par contre en relisant ton premier message j'ai vu ça :
    Importer la description depuis une base de données existante
    C'est certainement la raison pour laquelle tu n'as pas de données... repasse l'assistant et vérifie que tu n'as pas loupé une option pour activer l'import des données avant... on sait jamais !

    En ce qui concerne l'alimentation des tables par programmation ça peut éventuellement être plus simple que de s'emmerder avec l'assistant si tu trouves pas...
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut
    J'ai repassé l'assistant, mais, si dans un 1er temps, il indique bien:
    Importer la description depuis une base de données existante
    , quelques écrans plus loin, il y aussi:
    Import des données
    Convertir les données dans le format HyperFileSQL (sous-titré : "L'assistant va importer la description des tables et importer les données").

    En outre, j'ai aussi suivi ce qui est décrit dans l'aide en ligne: je crée mon projet avec une base HF vide de tout fichier de données ; ensuite dans l'analyse vierge, je choisis dans le menu Analyse > Importer > Importer des données d'une autre base ; je choisis le format sqlite et mon fichier .db et là, incompréhensible, il m'affiche une erreur comme quoi il ne peut pas se connecter à la base de données ! (alors qu'il le fait très bien lors de la création du projet !)
    Mais bon, comme tu dis, je crois que je vais m'éviter les migraines et importer les données à partir de requêtes...
    Merci pour ton aide.

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Pour te faciliter l'import tu peux scripter ça facilement ! la fonction hListeFichier te renvoie la liste des tables... tu peux boucler dessus...
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut
    OK, merci !

  9. #9
    Membre éprouvé

    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    402
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 402
    Points : 915
    Points
    915
    Par défaut
    + 1 pour Michel,

    confronté au même problème et après recherches je me suis résigné au script.
    Tu vas peut être avoir quelques surprises de format ( surtout pour les dates)
    donc le script te permettra aussi de faire des conversions avec ..type.

    Il y a une solution alternative avec hcopieFIchier, il faut que tu déclare tes deux connexions par programmation.
    1 - Connexion HF dans l'analyse ou par prog
    2 - ConnexionSQLITE par prog
    Au début faire un hchangeconnexion et hdeclareExterne sur la base SQLITE
    puis hcopieFichier.

    Bon dev

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut
    Merci pour ces précisions. M'étant déjà lancé dans les requêtes, j'ai un petit souci. Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    PROCEDURE Synchroniser_BaseDeDonnee()
    bRes est un booléen
    sListeTables,sRequeteSource,sRequeteCible, sListeRubriques,sNomRequete est une chaîne
    sdGetString est une Source de Données
    
    sRequeteSource = "SELECT * FROM "
    sRequeteCible = "INSERT INTO "
    sListeTables = HListeFichier(ConnexionBDDSource)
    
    // Je boucle sur les tables de la bdd
    POUR TOUTE CHAÎNE tb DE sListeTables SEPAREE PAR RC
    		sRequeteSource += tb
    		sRequeteCible += tb + " VALUES ('"
    		bRes = HExécuteRequêteSQL(sdGetString,ConnexionBDDSource,hRequêteSansCorrection,sRequeteSource)
    		SI PAS bRes ALORS
    			Info("Erreur lors de l'exécution de la requête !", HErreurInfo())
    		SINON
    			sListeRubriques = HListeRubrique({tb})
    			HLitPremier(sdGetString)
    
                            // Pour chaque table, je boucle sur les rubriques
    			POUR TOUTE CHAÎNE sRub DE sListeRubriques SEPAREE PAR RC
    				sNomRequete = "sdGetString." + sRub
    				sRequeteCible += {sNomRequete} + "')"
    				SORTIR
    			FIN
    			SORTIR
    		FIN
    FIN
    J'ai une erreur sur la ligne en rouge ; la rubrique s'appelle ROWID et l'erreur est:
    <ROWID> n'est ni une rubrique ni un paramètre de la requête <sdGetString>
    Alors qu'il y a bien une rubrique ROWID (sListeRubriques commence bien par "ROWID...etc").
    Quand je fais sdGetString.Type (qui est la 2ème rubrique, ça marche).

    P.S: les deux instructions SORTIR sont là uniquement pour la phase de test, pour tester si tout fonctionne avec le 1er enregistrement.

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut
    Je suis tombé sur la fonction HCopieEnreg pour copier un enregistrement complet d'un fichier source vers un fichier destination, mais lorsque ces 2 fichiers sont dans 2 bases différentes, ce n'est apparemment pas possible...

  12. #12
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    j'ai pas trop le temps de tout lire mais essaye peut-être sans indirection pour commencer genre avec une table et les infos en dur histoire de valider le principe général...
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut
    Je l'ai déjà fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sRequeteCible += sdGetString.ROWID + "', '" + sdGetString.Type + "', '" + sdGetString.Description + "', '" + sdGetString.ShortDescription + "')"
     
    HExécuteRequêteSQL(sdRes,Connexion_HyperFile,hRequêteSansCorrection,sRequeteCible)
    => même erreur.
    J'enlève le ROWID :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sRequeteCible += sdGetString.Type + "', '" + sdGetString.Description + "', '" + sdGetString.ShortDescription + "')"
     
    HExécuteRequêteSQL(sdRes,Connexion_HyperFile,hRequêteSansCorrection,sRequeteCible)
    => ça marche nickel.

    J'ai testé avec une autre table, dont la première rubrique est ID ; sdGetString.ID passe sans problème...

  14. #14
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    bon... ben sur chaque table tu crée un colonne doublon de "rowid" qui sera vu par windev... j'espère que tu n'as pas trop de table...

    t'as essayé en étant explicite dans ton SELECT ?
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  15. #15
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut
    Cf mon précédent post, j'ai rajouté une ligne.
    Citation Envoyé par jacquesprogram Voir le message
    J'ai testé avec une autre table, dont la première rubrique est ID ; sdGetString.ID passe sans problème...

  16. #16
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut
    Certaines tables ont ROWID comme id, d'autres ID.
    J'ai testé avec une autre table dont la rubrique est ROWID => même erreur.
    Le problème, c'est que sur les 356 tables de la bdd, certainement au moins la moitié ont un ROWID...

  17. #17
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Ah j'y pense que maintenant mais teste avec les SQLExec et SQLLitCol !
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  18. #18
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut
    J'ai testé avec les instructions que tu m'indiques. Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    sRequeteSource = "SELECT * FROM "
    i est un entier
    SQLConnecte("C:\Users\Jake\Documents\Mabase.db","","","","SQLITE")
    SQLExec(sRequeteSource + "Products",sdGetString)
    TANTQUE SQLAvance(sdGetString) = 0        
    	i++
    	Info("Ligne 1 = " + SQLLitCol(sdGetString, 1) + " ; " + SQLLitCol(sdGetString, 2) + " ; " + SQLLitCol(sdGetString, 3))
    FIN
    SQLFerme(sdGetString)
    J'affiche donc les 3 premières rubriques de la table Products (la 1ère étant ROWID).
    Résultat => il m'affiche la 2e, 3e et 4e rubrique (mais pas le ROWID)

    2e essai avec une table dont la 1ère rubrique est cette fois ID:
    Résultat => il m'affiche bien l'ID, puis les 2e et 3e rubrique !!?

    Apparemment le nom "ROWID" pose problème, mais pour quelle raison...

    Au pire, je n'ai pas besoin de récupérer les ID dans toutes les tables. Cette rubrique, dans la base HF étant un identifiant auto., je renseigne juste les autres rubriques.

  19. #19
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Citation Envoyé par jacquesprogram Voir le message
    J'ai testé avec les instructions que tu m'indiques. Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    sRequeteSource = "SELECT * FROM "
    i est un entier
    SQLConnecte("C:\Users\Jake\Documents\Mabase.db","","","","SQLITE")
    SQLExec(sRequeteSource + "Products",sdGetString)
    TANTQUE SQLAvance(sdGetString) = 0        
    	i++
    	Info("Ligne 1 = " + SQLLitCol(sdGetString, 1) + " ; " + SQLLitCol(sdGetString, 2) + " ; " + SQLLitCol(sdGetString, 3))
    FIN
    SQLFerme(sdGetString)
    J'affiche donc les 3 premières rubriques de la table Products (la 1ère étant ROWID).
    Résultat => il m'affiche la 2e, 3e et 4e rubrique (mais pas le ROWID)

    2e essai avec une table dont la 1ère rubrique est cette fois ID:
    Résultat => il m'affiche bien l'ID, puis les 2e et 3e rubrique !!?

    Apparemment le nom "ROWID" pose problème, mais pour quelle raison...

    Au pire, je n'ai pas besoin de récupérer les ID dans toutes les tables. Cette rubrique, dans la base HF étant un identifiant auto., je renseigne juste les autres rubriques.
    Bon et si on tentait SELECT ROWID as MyFuckingRowId, * FROM MyFuckingTableARecuperer ?
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  20. #20
    Membre actif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Points : 265
    Points
    265
    Par défaut
    J'ai tenté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bres = SQLExec("SELECT rowid FROM Products",sdRes)
    Aucune erreur ; bRes vaut Vrai.
    Je rajoute:
    => BAM ! Erreur = ROWID n'est pas une rubrique bla bla...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. importation données externes
    Par kirua2150 dans le forum Access
    Réponses: 3
    Dernier message: 07/03/2007, 10h42
  2. IMport BDD MySql de 6 MB ?
    Par chakan dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 26/11/2006, 09h55
  3. Import bdd oracle
    Par dahno_fr dans le forum Oracle
    Réponses: 44
    Dernier message: 13/10/2006, 18h36
  4. Import bdd mysql dans Access
    Par popeye82 dans le forum Access
    Réponses: 3
    Dernier message: 17/03/2006, 13h51
  5. importer bdd par un ficher sql
    Par wil4linux dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 25/05/2005, 15h25

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