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 :

requete sur une base de données windev


Sujet :

WinDev

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations forums :
    Inscription : Mars 2008
    Messages : 325
    Points : 150
    Points
    150
    Par défaut requete sur une base de données windev
    Bonjour

    J'ai un souci avec ma base de données. Je réalise une requete ou je veux remplir une table entre un jours a un autre.dans ce code, je veux remplir entre '20080418" à "20080419" et il me remplit ma table entre "20080418" jusqu'à la fin c'est à dire "20080426". Pourquoi????

    Si quelqu'un voit une erreur


    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
    
    Sablier()
    
    LOCAL		
    	nCnx est un entier
    	requete est une chaîne
    	bResultat est un booléen	
    	
    nCnx = SQLConnecte("Windev","root","","bdd_arch_p1","ODBC")
    SQLInfoGene()
    
    requete = "SELECT `Date_1` ,`Temp_Entree` ,`Temp_Chaud` ,`Temp_Sortie` ,`Recircul`,`Num_phase` ,`Phase` ,`Lait` ,`Jour` ,`Sectime` from arch_p1"
    bResultat = SQLExec(requete,"maRequete")
    
    SI bResultat=Faux ALORS
    	Info("La consultation de la base a échouée!!")
    FIN
    i est un entier
    TANTQUE SQLAvance("maRequete")=0
    	
    	SI (SQLLitCol("maRequete",9)>="20080418") ET (SQLLitCol("maRequete",9)<="20080419") ALORS
    			TableAjoute(TABLE_Table1,SQLLitCol("maRequete",1)+TAB+SQLLitCol("maRequete",2)+TAB+SQLLitCol("maRequete",3)+TAB+SQLLitCol("maRequete",4)+TAB+SQLLitCol("maRequete",5)+TAB+SQLLitCol("maRequete",6)+TAB+SQLLitCol("maRequete",7)+TAB+SQLLitCol("maRequete",8)+TAB+SQLLitCol("maRequete",9)+TAB+SQLLitCol("maRequete",10))
        FIN
    FIN
    
    SQLFerme("maRequete")
    
    SQLDéconnecte()
    
    Sablier(Faux)
    cordialement Law56100

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Peut être le format de date dans SQLLitCol("maRequete",9) qui n'est pas celui que vous espérez. Du coup votre test serait biaisé.

    Effectuez une trace de SQLLitCol("maRequete",9) comme celà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Trace(SQLLitCol("maRequete",9))
    Placez la trace juste avant votre test.

    Mais petit conseil, il est déconseillé de faire des filtres par du code. Préférez un filtre dans votre requête :

    Je vous conseille un petit cours SQL si vous voulez vous y mettre: http://sqlpro.developpez.com/cours/sqlaz/select/

  3. #3
    Firetox
    Invité(e)
    Par défaut
    Bonjour,

    la particularite de SQLAvance est que les SQLLitCol doivent etre dans l'ordre
    sortie tous droit de l'aide :
    Les colonnes doivent impérativement être récupérées par ordre de numéro croissant.
    j'ai remarqué des resultats bizarres dans le cas inverse et je pense que votre probleme vient de la

    donc 2 solutions

    1 passer par SQLPremier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SQLPremier("maRequete")
    TANTQUE pas SQLendehors()
    	SI (SQLCol("maRequete",9)>="20080418") ET (SQLCol("maRequete",9)<="20080419") ALORS
    			TableAjoute(TABLE_Table1,SQLCol("maRequete",1)+TAB+SQLCol("maRequete",2)+TAB+SQLCol("maRequete",3)+TAB+SQLCol("maRequete",4)+TAB+SQLCol("maRequete",5)+TAB+SQLCol("maRequete",6)+TAB+SQLCol("maRequete",7)+TAB+SQLCol("maRequete",8)+TAB+SQLCol("maRequete",9)+TAB+SQLCol("maRequete",10))
    SQLsuivant("maRequete")
        FIN
    FIN
    ou alors avec SQLAvance mais il faut faire une petite manip
    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
     
    v_insere est un booleen
    maLigne est une chaine
     
    TANTQUE SQLAvance("maRequete")=0
           v_insere = faux 
           maLigne= ""	
     
           maligne = SQLLitCol("maRequete",1)+TAB+SQLLitCol("maRequete",2)+TAB+SQLLitCol("maRequete",3)+TAB+SQLLitCol("maRequete",4)+TAB+SQLLitCol("maRequete",5)+TAB+SQLLitCol("maRequete",6)+TAB+SQLLitCol("maRequete",7)+TAB+SQLLitCol("maRequete",8)+TAB
     
           SI (SQLLitCol("maRequete",9)>="20080418") ET            (SQLLitCol("maRequete",9)<="20080419") ALORS v_insere = vrai
     
           maligne+=SQLLitCol("maRequete",9)+TAB+SQLLitCol("maRequete",10) 
           si v_insere alors TableAjoute(TABLE_Table1,maligne)
    FIN
    voila a tester car j'ai ecris le code comme ca
    Dernière modification par Firetox ; 21/04/2008 à 19h56.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations forums :
    Inscription : Mars 2008
    Messages : 325
    Points : 150
    Points
    150
    Par défaut
    bonjour et merci de vos réponses, j'ai réussie apprende les valeurs entre "20080418" à "20080418", voici le 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
    Sablier()
    
    LOCAL		
    	nCnx est un entier
    	requete est une chaîne
    	bResultat est un booléen	
    	
    nCnx = SQLConnecte("Windev","root","","bdd_arch_p1","ODBC")
    SQLInfoGene()
    
    requete = "SELECT `Date_1` ,`Temp_Entree` ,`Temp_Chaud` ,`Temp_Sortie` ,`Recircul`,`Num_phase` ,`Phase` ,`Lait` ,`Jour` ,`Sectime` from arch_p1"
    bResultat = SQLExec(requete,"maRequete")
    
    SI bResultat=Faux ALORS
    	Info("La consultation de la base a échouée!!")
    FIN
    
    TANTQUE SQLAvance("maRequete")=0
    	SI "20080418" <=SQLLitCol("maRequete",9)<="20080419" ALORS
    	TableAjoute(TABLE_Table1,SQLLitCol("maRequete",1)+TAB+SQLLitCol("maRequete",2)+TAB+SQLLitCol("maRequete",3)+TAB+SQLLitCol("maRequete",4)+TAB+SQLLitCol("maRequete",5)+TAB+SQLLitCol("maRequete",6)+TAB+SQLLitCol("maRequete",7)+TAB+SQLLitCol("maRequete",8)+TAB+SQLLitCol("maRequete",9)+TAB+SQLLitCol("maRequete",10))
    	FIN
    FIN
    
    SQLFerme("maRequete")
    
    SQLDéconnecte()
    
    Sablier(Faux)

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/03/2007, 22h26
  2. Réponses: 3
    Dernier message: 22/12/2005, 11h20
  3. Test des liens vide sur une base de données
    Par FLANQUART Marie dans le forum ASP
    Réponses: 1
    Dernier message: 10/11/2005, 14h35
  4. Requete sur 2 bases de donneés à partie d'un composant ADO
    Par Brice Yao dans le forum Bases de données
    Réponses: 3
    Dernier message: 21/09/2005, 16h26
  5. Connexion sur une base de données Postgre
    Par ktox dans le forum C++Builder
    Réponses: 3
    Dernier message: 04/08/2005, 10h58

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