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 :

Exécution HExécuteRequêteSQL HFCS sans analyse


Sujet :

WinDev

  1. #1
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 563
    Par défaut Exécution HExécuteRequêteSQL HFCS sans analyse
    Bonjour à tous,

    Le contexte : j'ai 2 bdd "complémentaires" (1 HFCS et 1 PostgreSQL).
    J'ai mes 2 connexions qui sont ouvertes.
    Je n'ai pas d'analyse pour le projet.
    Je fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Requete2 = [
    	SELECT * FROM Personne WHERE id > 5
    ]
    SI PAS HExécuteRequêteSQL(srcRequete2, cnxConnexionHf, hRequêteDéfaut, Requete2) ALORS
    	Erreur(HErreurInfo(hErrComplet))
    	RETOUR
    FIN
    La requête SQL pour srcRequete1 a la même structure et est exécutée sur la connexion PG et fonctionne très bien.

    Là, sur le requête2, j'ai le message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Que s'est-il passé ?
    Erreur renvoyée par le serveur <SRVHYPERFILE> :
    Aucune analyse n'est ouverte et le fichier <Personne> n'a pas été décrit.
     
    Code erreur : 70018
    Niveau : erreur non fatale
    Code erreur WD55 : 18
    Je suis bien d'accord qu'aucune analyse n'est ouverte car c'est le but.

    J'ai fait des recherches oueb mais je n'ai pas trouvé de solution.

    J'ai fait les essais suivants :
    - Déclarer le fichier en hdeclareexterne() => un hlitpremier() me prouve que la déclaration est ok
    - Changer le mode (hRequêteDéfaut, hRequêteSansCorrection, hRequêteSansCorrectionHF)
    - Supprimer carrément le mode
    - Faire un hchangeconnexion() pour tous les fichiers de la bdd (récupérés via hlistefichier())

    Est-ce que quelqu'un a déjà été confronté à ce souci ?

    Merci d'avance pour vos idées.

  2. #2
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 949
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 949
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    As-tu tenté le coup avec une variable de type Requête SQL ? (non testé)

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    989
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 989
    Par défaut
    Bonsoir
    J'ai une fenêtre pour voir le contenu de fichiers non déclarés dans l'analyse (ConstruitTableFichier) que j'apelle ainsi :
    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
    sFichero est une chaîne = COMBO_FIC[COMBO_FIC]
    sdFichero est une Source de Données
     
    HFerme(sFichero)
    HAnnuleDéclaration(sdFichero)
     
    SELON PGComunes.gsProviderHFCS
        CAS "hAccèsHF7", "hAccèsHFClientServeur"
            SI PAS HDéclareExterne(sFichero+".FIC", "sdFichero", PGComunes.gcnxConexionHFCS) ALORS
                Erreur(ErreurInfo())
            SINON
                Ouvre(FEN_Table_REQ_Modelo, sFichero, ExtraitChaîne(HListeClé(sFichero), 1, RC), "00", "", {sFichero,indFichier}..Libellé, sdFichero)
            FIN
        AUTRE CAS
     
    FIN

  4. #4
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 949
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 949
    Billets dans le blog
    1
    Par défaut
    Après test : l'utilisation d'une variable Requête SQL ne fonctionne pas (Alias non reconnu, même entre " ou crochet)
    Par contre
    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
     
    cnxTestSansAna est une Connexion
    saSourceRequête est une chaîne
    REQ_SansAna est Source de Données
     
     
    cnxTestSansAna..Provider=hAccèsHFClientServeur
    cnxTestSansAna..Serveur="localhost:4900"
    cnxTestSansAna..BaseDeDonnées="TestSansAna"
    cnxTestSansAna..Utilisateur="xxxxx"
    cnxTestSansAna..MotDePasse="xxxxx"
     
    saSourceRequête=[
    SELECT * FROM CLIENT_SANS_ANA
    ]
    HChangeConnexion("*",cnxTestSansAna)
    //HPASSE éventuel
    HDéclareExterne("Client_SA.FIC","CLIENT_SANS_ANA",cnxTestSansAna)
    HExécuteRequêteSQL(REQ_SansAna,cnxTestSansAna,hRequêteDéfaut,saSourceRequête)
    POUR TOUT REQ_SansAna 
    	Trace(REQ_SansAna.NDX_NomClient)
    FIN
    Fonctionne sans problèmes

  5. #5
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 221
    Par défaut
    Peut-être hDeclareExterne ?

    Edit : Oh, je vois que Voroltinquo propose la même chose, c'est bon signe.

  6. #6
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 563
    Par défaut
    Merci pour vos retours.

    [EDIT]Comme j'avais quelques urgences sur le feu, j'avais regardé en diagonale et donc mal lu. La solution proposée (que j'avais peu ou prou testée) ne passe pas chez moi. Je vais regarder si ce n'est pas une histoire de config du projet.

  7. #7
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 563
    Par défaut
    Hello,

    Le code Voroltinquo fonctionne ! En prenant un peu plus de temps et en analysant mieux les différences entre le code de Voroltinquo et le mien, j'ai trouvé l'Erreur (avec un E majuscule s'il vous plait ).

    Je ne m'étais pas contenté de faire un copier-coller de son code. J'avais déjà écrit le mien et qui est très proche du sien, donc.
    Je faisais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CLIENT_SANS_ANA  est une Source de Données
    HDéclareExterne("Client_SA.FIC", CLIENT_SANS_ANA, cnxTestSansAna)
    Alors qu'il faut faire : Je faisais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Pas de déclaration de la source de données CLIENT_SANS_ANA  
    HDéclareExterne("Client_SA.FIC", "CLIENT_SANS_ANA", cnxTestSansAna)
    Il faut donc mettre des guillemets autour du nom du fichier concerné.
    Détail plus : le hchangeconnexion n'est pas utile.

    Là, où ça va devenir fumeux, c'est qu'il va falloir que j'analyse mes requêtes avant de les exécuter car elles sont lues dans des fichiers texte et je dois savoir quel(s) fichier(s) mettre dans le(s) HDéclareExterne.

    Je passe en résolu. Merci de votre aide et à bientôt pour de nouvelles aventures

  8. #8
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 949
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 949
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par frenchsting Voir le message
    Détail plus : le hchangeconnexion n'est pas utile.
    En effet mais je partais d'une connexion fermée

  9. #9
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 221
    Par défaut
    Si tu ne veux pas que ça devienne fumeux (mais ça risque de devenir explosif), j'imagine que tu as un catalogue de tous les fichiers FIC à disposition, (au pire, tu peux le générer via un fListeFichier), et du coup, tu fais toute une série de hDéclareExterne pour tous les fichiers, et tant pis si il n'y en a qu'un d'utile.

  10. #10
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 563
    Par défaut
    @tbc92,
    Ben non, j'ai fait un "analyseur" :
    1. Je charge la liste des fichiers de la BDD dans un tableau associatif avec un hlistefichier(cnx),
    2. Dans le texte de la requête, je remplace ce qui n'est pas une lettre par un espace,
    3. Je parcours ce nouveau texte (chaine séparée par " ") en regardant si le mot est dans la liste des fichiers de la BDD et pas déjà déclaré (voir point suivant).
    4. je fais mon hdéclareexterne sur ce mot et je le mémorise dans un tableau associatif tabfichiersHFdéclarés. Si j'essaye de le déclarer de nouveau, on a une erreur (non bloquante mais c'est moche).

    Détail plus (ou moins suivant le sens de l'humour que l'on a) : une fois, le fichier déclaré dans le hdéclareexterne(), il est existant dans toute la fenêtre : on peut créer un bouton et en code de clic faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HLitPremier("CLIENT_SANS_ANA")
    Cela ne génère pas d'erreur

  11. #11
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    989
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 989
    Par défaut
    Il faut donc mettre des guillemets autour du nom du fichier concerné.

    C'est ce que j'avais ecrit

  12. #12
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 563
    Par défaut
    Citation Envoyé par Yusep Voir le message
    Il faut donc mettre des guillemets autour du nom du fichier concerné.

    C'est ce que j'avais ecrit
    Oui, Yusep Merci à toi

  13. #13
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    989
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 989
    Par défaut
    Citation Envoyé par frenchsting Voir le message
    Oui, Yusep Merci à toi
    Avec plaisir.
    En complément, dans la fenêtre un champ table avec une colonne (TABLE_HFICHERO) où sFichero est la chaine du nom de fichier externe, gsdConsultaHF est une Source de Données :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    PROCEDURE TablaConstruir()
     
    sCampo est une chaîne
     
     
    SI PAS HExécuteRequêteSQL(gsdConsultaHF, hModifieFichier, "SELECT TOP 10 * FROM "+sFichero) ALORS
        Erreur(ErreurInfo())
    FIN
     
     
    ConstruitTableFichier(TABLE_HFICHERO, gsdConsultaHF, taGardeCléParcours+taGardeColonne+taRemplirTable)
    TableFixeColonne({"TABLE_HFICHERO"+"."+"COL_Cadenas",indChamp}, Vrai)
    {"TABLE_HFICHERO"+"."+"COL_Cadenas",indChamp}..Largeur=20
    TableFixeColonne({"TABLE_HFICHERO"+"."+"_COL"+"1",indChamp}, Vrai)
    TableFixeColonne({"TABLE_HFICHERO"+"."+"_COL"+"2",indChamp}, Vrai)
    TableFixeColonne({"TABLE_HFICHERO"+"."+"_COL"+"3",indChamp}, Vrai)
    POUR ni = 1 _A_ TableOccurrence(TABLE_HFICHERO,toColonne)-1
        sCampo=gsdConsultaHF+"."+{"TABLE_HFICHERO"+"."+"_COL"+ni,indChamp}..LiaisonFichier
        //Trace(ni+" "+{"TABLE_HFICHERO"+"."+"_COL"+ni,indChamp}+" "+{sCampo}..Type+" "+{sCampo,indRubrique}..Taille)
        SELON {sCampo,indRubrique}..Type
            CAS hRubDate8 // 14 // TIPO FECHA 
                {"TABLE_HFICHERO"+"."+"_COL"+ni,indChamp}..CadrageHorizontal=iCentreH
                {"TABLE_HFICHERO"+"."+"_COL"+ni,indChamp}..MasqueSaisie="JJ/MM/AAAA"
            CAS hRubHeure // XX // TIPO HORA 
                {"TABLE_HFICHERO"+"."+"_COL"+ni,indChamp}..CadrageHorizontal=iCentreH
                {"TABLE_HFICHERO"+"."+"_COL"+ni,indChamp}..MasqueSaisie="HH:MM"
            CAS hRubEntierNonSigné1 // 12 // TIPO NUMERICO 
                {"TABLE_HFICHERO"+"."+"_COL"+ni,indChamp}..CadrageHorizontal=iCentreH
                //{"TABLE_HFICHERO"+"."+"_COL"+ni,indChamp}..MasqueSaisie=typInterr
            CAS hRubBooléen
                {"TABLE_HFICHERO"+"."+"_COL"+ni,indChamp}..CadrageHorizontal=iCentreH
            CAS hRubCaractère
                SI {sCampo,indRubrique}..Taille <= 12 ALORS
                    {"TABLE_HFICHERO"+"."+"_COL"+ni,indChamp}..CadrageHorizontal=iCentreH
                FIN
            CAS hRubTexte
                SI {sCampo,indRubrique}..Taille <= 15 ALORS
                    {"TABLE_HFICHERO"+"."+"_COL"+ni,indChamp}..CadrageHorizontal=iCentreH
                FIN
            AUTRE CAS
                {"TABLE_HFICHERO"+"."+"_COL"+ni,indChamp}..MasqueSaisie = "999 999 999 999 999,99;-999 999 999 999 999,99[Rouge]; ;<NULL>"
        FIN
    FIN

  14. #14
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 563
    Par défaut
    Hello Yusep,

    C'est marrant ton code, car je suis parti sur une idée similaire en utilisant les fichierverstable(). Par contre, je n'ai pas poussé au point de mettre le typage et les liaisons car je n'en ai pas besoin.

    Mais bravo pour ce code qui est top.

    [EDIT]Je profite d'un moment de calme pour regarder la version construittablefichier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/10/2007, 19h53
  2. Réponses: 1
    Dernier message: 11/10/2007, 13h24
  3. Exécuter procédure stocké sans reload de page
    Par jpower dans le forum ASP.NET
    Réponses: 2
    Dernier message: 28/08/2007, 22h11
  4. Exécuter un .exe sans Delphi
    Par Tomimie dans le forum Delphi
    Réponses: 11
    Dernier message: 01/06/2007, 11h42
  5. Réponses: 5
    Dernier message: 14/01/2007, 18h12

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