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. #21
    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 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...
    sa mère...

    et l'alias ?
    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 !

  2. #22
    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
    hé mec fait un ctrl+f "ROWID" sur cette page : http://doc.pcsoft.fr/fr-FR/?1000019635
    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. #23
    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
    Si j'utilise l'alias => idem.
    J'ai oublié, si:
    bres = SQLExec("SELECT rowid FROM Products",sdRes)
    Aucune erreur ; bRes vaut Vrai.
    Par contre, sdRes est vide...

  4. #24
    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
    A noter: maintenant, même une table avec une rubrique ID renvoie la même erreur !
    Alors qu'avec HExécuteRequête(), au moins ça, ça marchait...

  5. #25
    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
    tu as vu le lien que j'ai cité juste au dessus ? y a la réponse....
    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. #26
    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
    Ooops ! J'avais loupé ton message.
    Il est dit dans cette page que:
    L'Accès Natif SQLite importe donc systématiquement la colonne "ROWID" afin de privilégier son utilisation pour optimiser les performances.
    Alors pourquoi ne puis-je y accéder ?
    D'après ce qui est écrit, il faudrait forcer le type de cette rubrique dans l'analyse à Texte, c'est bien cela ?

  7. #27
    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
    Je sais pas trop j'avoue mais moi je testerais avec les "magic alias" :
    Bien que cette rubrique soit "cachée" par défaut par le moteur SQLite, il est toujours possible d'y accéder en utilisant un des noms spéciaux suivants :
    "ROWID",
    "_ROWID_",
    "OID".
    donc _rowid_ et oid... ouais "la réponse" j'y suis allé fort... disons des pistes !
    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. #28
    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'avoue que j'en ai un peu marre de me prendre la tête ; je contourne le problème en évitant, comme dit précédemment les rubriques ROWID et ID de toutes les tables:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    POUR TOUTE CHAÎNE sRub DE sListeRubriques SEPAREE PAR RC
        SI PAS sRub = "ROWID" ALORS
            SI PAS sRub = "ID" ALORS
                sNomRequete = "sdGetString." + sRub
                sRequeteCible += {sNomRequete} + "','"
    	FIN
        FIN	
    FIN
    De toutes façons, dans la bdd de destination (HF), ID et ROWID seront renseignés automatiquement (identifiant auto).
    Ça marche impec.
    Merci beaucoup pour toute ton aide.

  9. #29
    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
    et les clés étrangères ?


    et de rien... !
    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 !

  10. #30
    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
    Dans la bdd source, il n'y a aucune relation entre les tables (donc pas de notion de clé étrangère) ; les relations, je les crée dans la base HF de destination et utiliseront les id auto définit par celle-ci (je pense, non ?)

  11. #31
    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
    Dans la bdd source, il n'y a aucune relation entre les tables (donc pas de notion de clé étrangère) ; les relations, je les crée dans la base HF de destination et utiliseront les id auto définit par celle-ci (je pense, non ?)
    Ouais pour le futur pas de pb mais c'est pour la reprise de l'existant que ça chie... disons même s'il n'y a pas de contrainte d'intégrité dans le SGBD des clés étrangères peuvent exister... surtout s'il s'agit d'un modèle relationnel...

    Après sur ce point là seul toi connait la réponse
    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 !

  12. #32
    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
    Oui, mais je connais le fonctionnement de la bdd source et le pourquoi d'une telle structure ; je ne pense pas avoir de problèmes... Sinon, à bientôt sur ce forum et encore merci.

  13. #33
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Bonjour
    Citation Envoyé par jacquesprogram Voir le message
    Si j'utilise l'alias => idem.
    J'ai oublié, si:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bres = SQLExec("SELECT rowid FROM Products",sdRes)
    Par contre, sdRes est vide...
    jacquesprogram, je reviens sur ce message car sdRes ne peut pas être alimenté

    Regarde bien l'aide de SQLExec, ça n'alimente pas une source de donnée
    Tu dois Faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SI SqlExec("select rowid from tatable", "req1") ALORS
       SI SQLAvance("req1") = 0 ALORS      // "req1" ou un nom quelconque servant à manipuler le résultat
          Info(SQLLitCol("req1", 1))
    ...
    A noter pour SQLite que si tu as défini une colonne de type INTEGER PRIMARY KEY, cette colonne devient un alias du ROWID (source)
    Donc si tu fais un SELECT ROWID ça affichera cette colonne à la place
    Par contre si pas de colonne de ce type la colonne nommée ROWID sera visible

    Test rapide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE TABLE table1( IdTable1 integer PRIMARY KEY , Lib1 varchar(50));
    CREATE TABLE table2( IdTable2 integer , Lib2 varchar(50));
    Ensuite tu fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select rowid from table1
    ça retourne la colonne IdTable1
    puis un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select rowid from table2
    ça retourne la colonne rowid

  14. #34
    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
    Pour sdRes vide, ok, je m'en suis aperçu après.

    A noter que ce n'est pas moi qui ai créé la bdd sqlite, mais je viens de remarquer quelque chose :

    Lors du parcours des différentes tables (avec SQLite Browser), les rubriques ROWID apparaissent bien ; par contre quand je fais un export de la structure de la bdd en script sql, il n'apparait aucun ROWID pour les tables qui en affichaient pourtant un. La primary key pour ces tables est définie sur la 2e rubrique, par ex, Type (qui est donc en fait la 1ère rubrique) => voilà pourquoi l'erreur sous Windev (cependant, quand je liste toutes les colonnes de la table sous Windev, ROWID apparaît bien !?)

    Sinon, pour les tables contenant un ID, le script SQL indique:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TABLE Produits ('ID' integer primary key autoincrement , etc.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

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