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

VB 6 et antérieur Discussion :

[Base de Données] Besoin de compléments sur un tuto


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de La Praline
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Par défaut [Base de Données] Besoin de compléments sur un tuto
    Bonjour à toutes et à tous,

    Alors que j'allais me lancer à corps et âme perdues dans la gestion de base de donnée, et que, bien évidement, j'avais refait et compris le tutorial conernant l'ado (http://jacma.developpez.com/premierspasdatabase/)...
    J'ai voulu l'adapter à mon application...


    [...]
    Grave erreur !

    Enfin non je dramatise comme toujours, ce n'était pas une si grave erreur que ca!
    Néanmoins, mon programme tourne sur trois pattes au lieu de foncer vers les étoiles !! Frustration !

    Je résume la situation.
    J'ai créer une base de donées. Deux tables seulement à l'intérieur.
    La première étant "référence de la patate" contenant "id_ref_patate", "date", et "num_echantillon" étant le numéro de l'échantillon prélevé sur le stock de patate du roi des patates...
    La seconde table nommée à juste titre "resultats_patates" contient "temps", "pression" et "id-ref_patate".

    C'est concu ainsi apres vos conseils précédents pour avoir id_ref_patate en commun des deux tables.


    Revenons en à mon programme.
    Voulant dans un premier temps explorer simplment ma base de donnée, j'ai crée un contrôle ADODC, une DataList, trois TextBox et les cinq bouton qui vont bien (cf. le tuto...).

    Je vous passe la configuration du ADODC qui se fait sans accros.
    Je demande à ma DataList d'afficher la date du test(première table...). En effet ceci dans l'optique de pouvoir revoir un test qui s'est passé y'a longtemps avec sa date... le plus facile et normal il me semble.

    La date s'affiche correctement.

    Seulement dans le cas de figure où le roi des patates, quel rigolo celui là alors, veut effectuer deux test le même jour, on se retrouve avec deux fois la même date.
    " Pas de problème !" me diriez-vous. Et en effet ce n'est pas un problème en soit étant donné qu'on a l'Id_Ref_Patate et les autres paramètre(que j'affiche dans les textbox) qui sont là pour différencier un test d'un autre.

    C'est bien le cas, on a deux fois la même date marqué mais ce n'est pas un problème.




    Là où les choses se corsent (enfin !!) c'est lorsque je veux naviguer d'une date à l'autre. A l'aide des quatres boutons normalement on fait défiler les éléments de la DataList. Alors les boutons fonctionnent correctement, le problème n'est pas là. ce serait trop facile !
    Le problème est nettement plus vicieux que ça!

    Avec mes deux dates identiques, lorsque je fais défiler la première fois tout va bien. Une fois arrivé en butée (EOF) j'affiche une msgbox qui nous rappel à l'ordre (cf.le tuto...). Une fois cette msgbox affichée, les dates se mélangent !!!!
    Alors pas toutes les dates se mélange bien sûr !!! Je n'ai pas un fantome dans mon pc... Non, les deux dates identique s'inversent... ces crétines !!!


    Alors elles s'inversent bien que je ne leurs ai rien demandé!!!



    Deuxième point de discorde entre mon ordinateur et moi, le double clique... Normalement on double clique sur un élément et hop comme par magie on affiche tout ce qu'il faut dans les textbox associés. Que nenni !!!
    Lorsque je double clique, les dates(toujours les mêmes ces coquines !!) s'inverse à nouveau et l'élément en surbriance n'est pas celui sur lequel j'ai cliquer, mais bel et bien le premier de la liste(enfin premier au clic C... au clic C+1 il devient deuxième dans la liste.. ben oui ca s'inverse^^)...
    Voici le code du tuto, et le mien... ca risque de vous aider...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub DataList1_DblClick() 
    Dim strAuthor As String
    strAuthor = DataList1.Text
    With Adodc1.Recordset 
    	.MoveFirst 
    	.Find "Author = '" & strAuthor & "' " 
    End With 
    End Sub
    Mainetnant le mien...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub DataList_Patate_DBlClick()
    Dim strDate as String
    strDate = DataList_Patate.text
    With Adodc1.recordset
           .MoveFirst
           .Find "Date=' " & strDate & "' "
    End With
    End Sub
    Donc j'en suis rendu là !! Autant dire qu'il ne sert à rien d'avancer plus loin si cette partie de base ne marche pas correctement !!!

    D'avance merci pour vos suggestions...

  2. #2
    Membre Expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Par défaut
    Ce n'est pas une réponse technique que je vais te donner mais voilà un peu pourquoi je te conseillais d'avoir une table de resultats de test PAR PATATE et non pas pour toutes.

    Ca evite d'avoir une seule table qui peut finir par contenir un gros paquets d'enregistrements (toutes les mesures faites sur toutes les patates, purée !), tu perds cette table pour "x" raison, tu perds tout tes resultats de test et ça rend aussi les recherches plus simple à mon avis.

    Je ne connais pas ton système de numérotatin bien sûr, mais avec des tables différentes tu peux avoir plusieurs tests N°1 (le premier test fait sur chaque patate), sinon c'ets un numéro de test unique quelle que soit la patate étudiée.

    Tout est envisageable bien sûr mais avant de s'attaquer au code pour gérer une base de donnée il est ESSSENTIEL de concevoir de manière claire sa base de donnée. Quelles tables avec quels champs pour faire quoi ? Quels champs seront liés, etc... C'est peut ête en fait le plus gros boulot. Une base de données bien conçue au départ peut toujours s'étoffer par la suite

    Bon courage !

  3. #3
    Membre chevronné Avatar de La Praline
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Par défaut
    Salut,

    Je sais, enfin j'avais l'idée, de faire une table par expérience...
    Seulement le cahier des charges étant ce qu'il est, il y aura une table stockant tout les résultats. Dommage !!!


    Néanmoins, tes conseils sont comme toujours aviés et plein de bons sens. Pour ce qui est de l'organisation de ma base de donnée, j'ai essayé d'être le plus simpliste possible (au moins pour commencer). Une table relié à une autre. L'autre contenant simplement les mesures effectuées à chaque "crash test" de patate

    Sinon j'ai toujours mon problème de PC hanté. Mais je soupsonne beaucoup l'ordinateur sur lequel je bosse. En effet c'est une de ces vieilleries qui marche au silex ! J'ai eu du mal à installer Acces 97 étant donné qu'il n'est pas même doté d'un lecteur CD...

    Bref peut être subsiste ou existe-t-il de différences qui font que...
    Va savoir....


    ~~ La Praline ~~
    ... un choco qui fond...

  4. #4
    Membre Expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Par défaut
    Pour les tables, je proposais un compromis, une table d'expérience par patate mais s'il y a plusieurs experiences faites sur une espece de patate, toutes les mesures seraient dans la meme table. Mais bon, si tu as un cahier des charges ausi strict, on oublie.

    Sinon, pour ton pb de list et de double click, pourquoi faie ta procédure sur un double click ? le click ne suffit pas ? Il y a déjà un autre code dedans ?

    Si tu as deja un autre code dans le "click" celui ci est appelé AVANT le double click.

  5. #5
    Membre chevronné Avatar de La Praline
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Par défaut
    Ben écoute il est expliqué dans le tuto (je te conseil d'y jeter un oeil... à la page 16 !!!)

    Je cite :

    Citation Envoyé par Tutorial
    Nous utilisons un double clic et non un clic simple, car, comme vous le constaterez, nous avons un
    MoveFirst dans la procédure évènementielle. Or, cette méthode MoveFirst a pour effet de générer l'évènement
    Clic de la liste, par l'intermédiaire de l'évènement MoveComplete du recordset, et nous aurions ainsi une boucle
    sans fin. En effet, rappelez vous qu l'évènement MoveComplete du recordset sélectionne un item de la liste, ce qui
    est équivalent à un clic (voir § 42). Si vous voulez tester avec un simple clic, mettez un stop dans votre procédure
    afin de pouvoir l'arrêter.
    J'avoue ne pas être sûr du "pourquoi du comment"... Dans les grandes lignes j'ai compris... Mais j'avoue être encore un peu dans le flou niveau Recordset... ca vient petit à petit, ce matin je ne savais pas ce qu'était un recordset ^^

    Tu comprend le réel sens du pourquoi du comment toi ???

  6. #6
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    A savoir : un champs date, dans une base Access est capable de memoriser la date + l'heure. (pour d'autre bases, je sais pas, on pourait prevoir un champs time par exemple)
    M'etonnerais que deux tests aient la même date / heure ,
    conclusion :=> à toi de voir

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/11/2007, 08h21
  2. Réponses: 6
    Dernier message: 25/06/2007, 12h10
  3. [Base de Données] Besoin d'un avis
    Par La Praline dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 28/03/2007, 13h00
  4. Réponses: 4
    Dernier message: 03/01/2007, 21h56
  5. connection à une base de donné ,besoin urgent d'aide
    Par nadhem dans le forum Décisions SGBD
    Réponses: 8
    Dernier message: 21/07/2006, 15h28

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