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 :

SQLLitcol et SQLTABLE [WD16]


Sujet :

WinDev

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur indépendant
    Inscrit en
    Mai 2002
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur indépendant

    Informations forums :
    Inscription : Mai 2002
    Messages : 231
    Points : 116
    Points
    116
    Par défaut SQLLitcol et SQLTABLE
    Bonjour,

    Je dois lire une base de données sous MYSQL qui est constituée de plusieurs fichiers , je met en place un requeteur sans connaitre à la'avance le nombre de colonne des fichiers.


    Cette partie fonctionne et me permet de cloner des colonnes en renseignant les titres dans mon champ table
    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
     
     
    var_table ="client"
     
    	// Requete sur le fichier 	
    	SQLExec("select * from " + var_table,"req_mysql")
    	SQLInfoGene("req_mysql")
    	// Nom des colonnes 
    	var_compteur = 1 	
    	TANTQUE var_compteur <= SQL.NbCol	
    	IF var_compteur = 1 THEN Table1.Colonne1..Libellé =  SQL.TitreCol[var_compteur]
    	IF var_compteur > 1 THEN 
    		ChampClone(Table1.Colonne1,"Colonne"+var_compteur)
    		var_nom_champ  = "Table1.colonne"+NumériqueVersChaîne(var_compteur)
    		{var_nom_champ}..Libellé = SQL.TitreCol[var_compteur]
    	END
    	var_compteur++
    	END

    Cette partie me pose problème car je voudrais faire une seul tableajouteligne et constitué mes SQLLITCOL en fonction du nombre de colonnes trouvées dans le fichier.
    Une syntaxe de ce type Tableajouteligne(table1,var_lecture) avec tous les SQLLITCOL d'après le nombre de colonnes dans le fichier

    La variable var_lecture n'est pas reconnu dans le tableajouteligne pour lire le contenu de la colonne 1 du fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	var_lecture = "SQLLitCol("""+var_requete + """, 1)"
    	TANTQUE SQLAvance("req_mysql")  =0 
    		TableAjouteLigne(Table1,var_lecture,SQLLitCol("req_mysql", 2),SQLLitCol("req_mysql", 3))
    	FIN
    	SQLFerme("req_mysql")

    J'ai essayé avec SQLTABLE mais je ne récupère que la dernière ligne du fichier

    Si vous avez une idée , merci d'avance

    Philippe

  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
    Bonjour,

    Regardez du coté de la fonction Compile.
    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
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Tu as déjà une boucle sur sql.nbcol pour construire la table, tu peux faire de même pour récupérer les valeurs de la requête dans une chaine (avec une tabulation comme séparateur) puis ajouter la ligne avec TableAjoute().

    Je suis étonné que SqlTable ne renvoie que la dernière ligne de la requête, vu que je l'utilise très souvent sans rencontrer de problème.

    Tatayo.

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur indépendant
    Inscrit en
    Mai 2002
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur indépendant

    Informations forums :
    Inscription : Mai 2002
    Messages : 231
    Points : 116
    Points
    116
    Par défaut SQLLITCOL
    Merci pour vos réponses

    J'ai trouvé la solution en créant une ligne à vide puis en indiçant l'affectation des colonnes à partir de la dernière ligne de la table.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var_ligne = 1 
    	TANTQUE SQLAvance(var_requete)  =0 
    		TableAjouteLigne(Table1,"")
    		var_compteur = 1 
    		TANTQUE var_compteur <=SQL.NbCol
    			var_nom_champ  = "Table1.colonne"+NumériqueVersChaîne(var_compteur)
    			{var_nom_champ}[var_ligne] = SQLLitCol(var_requete, var_compteur)
    			var_compteur++
    		END
    	var_ligne ++
    	FIN
    	SQLFerme(var_requete)
    END
    @Tatayo

    Je suis preneur d'un bout de code avec SQLTABLE

    Philippe

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Le code est on ne peux plus simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sqlexec("select Col1,Col2 from Matable","Requete")
    SqlTable("Requete",TABLE_MaTable)
    SqlFerme("requete")
    Tatayo.

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur indépendant
    Inscrit en
    Mai 2002
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur indépendant

    Informations forums :
    Inscription : Mai 2002
    Messages : 231
    Points : 116
    Points
    116
    Par défaut SQLTABLE
    Merci , je vais réessayer

    Philippe

  7. #7
    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 Philippe
    Citation Envoyé par philippe30 Voir le message
    Je suis preneur d'un bout de code avec SQLTABLE
    Il suffit de regarder l'aide de SQLTable pour avoir des exemples : ICI
    Dans cette page il y a 3 exemples d'utilisation

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

Discussions similaires

  1. [WD15] sqltable erreur 1017
    Par Theo.H dans le forum WinDev
    Réponses: 2
    Dernier message: 27/02/2012, 09h14
  2. [WD15] Plantage de SQLLitCol
    Par jcpas dans le forum WinDev
    Réponses: 2
    Dernier message: 15/12/2010, 11h14
  3. Chargement d'une SQLTable par un fichier txt
    Par LescureImage dans le forum C++Builder
    Réponses: 0
    Dernier message: 31/01/2008, 12h07
  4. [WD10 Express] Problème sqltable
    Par aldente dans le forum WinDev
    Réponses: 5
    Dernier message: 17/09/2007, 16h46

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