Poll
Question: A
A - 2 (66.7%)
B - 1 (33.3%)
Total Voters: 3

Pages: 1 2 3 [4] 5 6   Go Down
Author Topic: Arduino et visual studio  (Read 8760 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 72
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour ,

Je trouve ça super. smiley
Tu progresses très bien dans ton projet.

Si je peux t'orienter, je te conseillerai de modifier (si tu ne l'a pas déjà fait) le type des champs Date et Heure et de les séparer.
Autrement dit, au lieu de créer des TEXT (x), en faire des DATETIME. Ceci pour pouvoir extraire les données en choisissant des dates a partir de calendrier

Pour extraire les données (dans la grille) au lieu de faire un :
SQL="SELECT * FROM maTable ORDER BY ID"  où le recordset rassemblais tout les enregistrements disponibles dans la table "maTable"

Tu auras 2 variables :
DateRechercheDebut = "xx/xx/xxxx"
DateRechercherFin = "xx/xx/xxxx"
SQL="SELECT * FROM maTable WHERE LeChampDate >#" & DateRechercheDebut & "# AND LeChampDate <#" & DateRechercheFin & "# ORDER BY LeChampDate"

où le recordset rassemblera tout les enregistrements compris entre les 2 dates définies.
Ensuite tu extraits le champs qui contient les mesures pour tracer tes points sur le graphique.(avec une boucle)
DO
i+=1
maMesure(i)=rs.fields("ChampMesure")
rs.movenext
loop ....

C'est juste une orientation, tu es libres bien sûr de faire autrement.

Je reste a ta disposition pour plus d'amples explications si tu en avais besoin.

Pour la base de donnée, si tu as la possibilité d'avoir une table a ta disposition dans une base SQL d'un réseau d'entreprise, ce serait la même manière de procéder sauf pour la ligne de connexion a la base (pas difficile). Moi je préfère toujours mettre ma propre base sur le serveur avec mon programme comme ça je reste indépendant, cependant si beaucoup de personnes doivent accéder a cette base en même temps, il reste préférable de passer par SQL (qui gère efficacement les accès).


Pour le graphique par contre je ne suis pas le plus approprié pour te renseigner.
Si c'était moi, par fainéantise, je me servirai d'une feuille excel (necessite d'avoir excel bien sûr) dans laquelle j'aurai créé un graphique d'après un tableau, que je remplirai automatiquement avec VB et sauvegarderai sous un nom différent afin d'avoir toujours la feuille "Modèle" vierge.
Car le graphisme sous VB n'est pas mon point fort, mais d'autres ont peut être l'expérience dans ce domaine. C'est le moment d'apprendre  smiley-eek-blue

Bonne continuation en tout cas... smiley-wink

@++
« Last Edit: January 29, 2012, 10:45:35 am by Fredo59 » Logged

L'expérience est une longue suite de bêtises...

Offline Offline
Jr. Member
**
Karma: 0
Posts: 98
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Je n'arrive pas trop à faire marcher un graph qui irait chercher les infos de température dans la base de données.

J'essaye de tester cette méthode :

[urlhttp://www.vbfrance.com/tutoriaux/GESTION-DONNE%20ES-VISUAL-BASIC-2008-SQL-SERVER_1133.aspx][/url]

Par contre au début j'importe un élément existant car ma base est déjà créée.

Je te tient au courant si j'arrive à en titrer qq chose smiley-wink

++

EDIT : Une lien interessant aussi http://msdn.microsoft.com/fr-fr/library/dd489231.aspx
« Last Edit: January 31, 2012, 08:00:02 am by Michel_B » Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 72
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

J'ai potassé un peu les graphiques comme précisé en mp.
En fait si tu veux que cela fonctionne, il faut tout adresser par code en dynamique et surtout ne pas lier ton graphique a ta base.

J'ai réussi a faire quelques petites choses intéressante, ce soir je modifierai le programme d'exemple pour qu'il affiche un graphique et qu'il le mette a jour automatiquement a chaque nouvelle donnée entrante. (je modifierai aussi les champs "Nom" et "Prenom" en "Date" et "Valeur".

@+
Logged

L'expérience est une longue suite de bêtises...

Offline Offline
Jr. Member
**
Karma: 0
Posts: 72
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai modifié comme précisé précédemment mon prog pour que tu t'amuses avec.
Il ne faut plus créer la base (j'ai disable le bouton), j'ai mis quelques valeur dedans.

A chaque fois que tu ajoutes une température et une date, la base est mise a jour ainsi que le graphique.
Biensur j'ai prit le graphique de base, on peut tout modifier a souhait.

le lien qui m'a permit de piger : http://plasserre.developpez.com/cours/chart/ voir surtout en bas (le code en dynamique)

L'archive de mon prog est ici : http://perso.numericable.fr/tchonordiste/Arduino/BaseDeDonneesV2.zip

Attention au début du prog j'ai du ajouter une bibliothèque : Imports........ (ne l'oublie pas si tu copie des morceaux de code)
Le reste de la boucle est dans le sub "RemplirGrille".

Il faut savoir qu'en SQL tu envoies les dates sous la forme MM/JJ/YYYY (a l'anglaise quoi) donc quand tu la récupère, faut la remettre a l'endroit (c'est fait dans le programme)

Dis moi si t'as des soucis.

@+
Logged

L'expérience est une longue suite de bêtises...

Offline Offline
Jr. Member
**
Karma: 0
Posts: 98
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
e lien qui m'a permit de piger : http://plasserre.developpez.com/cours/chart/ voir surtout en bas (le code en dynamique)

J'ai testé aussi mais à la différence de toi c'est que je ne suis pas arrivé à rafraichir le graph lors de la modif de la base. Il me falait relancer l'application. Je vais éplucher tout ça pour voir comment tu as fait.

Merci et à très bientôt...  smiley-wink

EDIT : je l'avais peut être mis dans Form1_Load tout simplement au lieu de la sub RemplirGrille. Je n'ai plus mon code pour vérifier   smiley-confuse
« Last Edit: January 31, 2012, 02:27:54 pm by Michel_B » Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 72
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La petite amélioration qu'il faudra peut-être faire c'est modifier la boucle pour qu'il affiche en graphique les 5 ou 10 dernières heures seulement des relevés pour éviter a terme d'obtenir un graphique gigantesque.

Et de prévoir un menu qui permettrai de récupérer des "archives" en sélectionnant 2 dates, lorsque le programme n'est pas en réception de données par exemple.

J'attends de voir ce que cela donne, c'est intéressant comme projet. smiley-wink

A bientôt
++
Logged

L'expérience est une longue suite de bêtises...

Offline Offline
Jr. Member
**
Karma: 0
Posts: 98
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
La petite amélioration qu'il faudra peut-être faire c'est modifier la boucle pour qu'il affiche en graphique les 5 ou 10 dernières heures seulement des relevés pour éviter a terme d'obtenir un graphique gigantesque.

J'ai remis tout ça en ordre, histoire d'avoir quelque chose de fonctionnel. Je vais effectivement modifier comme tu dis et après je poste quelque chose.

Sinon en prévision des améliorations  smiley-lol , je me suis penché pour la première fois sur le code php et les bases SQL. J'ai installé WampServer et fait quelques essais concluants d'interrogation d'une base avec.
Je suppose qu'il faudra à terme créer une base sql et non access pour une interface avec le net (j'ai bon ?)

++
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 72
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Oui tu as bon !  smiley-grin

En fait sur le net souvent ce sont des bases du type mySql.
Accessible avec des pages en php.

Et administrable via phpAdmin.
Bien sûr cela dépend de la configuration de ton hébergeur. Mais en général ce sera toujours la même chose.
Le site du Zero publie des tutos intéressants sur ce sujet : http://www.siteduzero.com/tutoriel-3-14668-concevez-votre-site-web-avec-php-et-mysql.html

Mais la syntaxe SQL sera toujours plus ou moins identique. Seul changeront les modes de connexion et de gestion.

Bon amusement
++
Logged

L'expérience est une longue suite de bêtises...

Offline Offline
Jr. Member
**
Karma: 0
Posts: 98
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

J'ai un petit problème : J'ai créé plusieurs feuilles pour mon projet.
Le problème est que si j'ai ouvert la connection à l'arduino sur la form1, je perds la connection dans ma form2.
J'ai essayé de mettre les variables en public pour garder les données (du moins je crois  smiley-confuse) mais cela ne marche pas.

C'est grave docteur ?  smiley-mr-green

++

EDIT : Problème résolu
« Last Edit: February 01, 2012, 04:32:29 pm by Michel_B » Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 98
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir,

Tu vois un problème dans ce code ?
Suivant les dates que je mets il y a un plantage.

Code:
Private Sub HistoButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles HistoButton.Click
        Dim SQL As String
        Dim con As ADODB.Connection
        Dim rs As ADODB.Recordset
        'Dim n As Integer
        Dim RecupDateDebut As Date  'Choix utilisateur date début du tracé
        Dim ConvDateDebut As String
        Dim RecupDateFin As Date    'Choix utilisateur date début du tracé
        Dim ConvDateFin As String
       

        RecupDateDebut = DateTimePicker1.Text
        ConvDateDebut = Format(RecupDateDebut, "MM/dd/yyyy")

        RecupDateFin = DateTimePicker2.Text
        ConvDateFin = Format(RecupDateFin, "MM/dd/yyyy")

        'Form1.Grid1.RowCount = 0
        'SQL = "SELECT * FROM Donnees WHERE LeChampDate >#" & ConvDateDebut & "# AND LeChampDate <#" & ConvDateFin & "# ORDER BY LeChampDate"

        'Ouverture de la base de donnée
        con = New ADODB.Connection
        con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & sBaseDeDonnees & ";" & "Persist Security Info=False"
        con.Open()

        'Contrôle si il ya des enregistrements dans la base
        SQL = "SELECT COUNT(*) FROM Donnees"
        rs = con.Execute(SQL)

        'Si oui il les affiche
        If rs.Fields(0).Value <> 0 Then
            SQL = "SELECT * FROM Donnees WHERE Jour >#" & ConvDateDebut & "# AND Jour <#" & ConvDateFin & "# ORDER BY Jour"

            rs = con.Execute(SQL)
            HistoChart.Series.Clear()
            HistoChart.Series.Add("T°")

            Do

                HistoChart.Series(0).Points.AddXY(rs.Fields("Jour").Value, rs.Fields("Température").Value)
                rs.MoveNext()

            Loop While rs.EOF = 0
        End If

        rs = Nothing
        con.Close()
        con = Nothing


    End Sub




Merci de ton aide
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 72
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir,
Désolé de me connecter que maintenant, mais je m'amusais avec.................l'Arduino biensûr !!

Le seul truc que je vois de bizarre, c'est ton champ qui s'appelle "Température", le "e" accent me dérange un peu.
Soit tu as vraiment créé un champ de ce nom (alors ce n'est pas conseillé) soit tu n'as pas mis d'accent et le fait de demander un champ qui n'existe pas crée une erreur.

Pour les dénomination de champs, il faut rester assez strict pour éviter les problèmes : ne pas mettre d'espace par exemple, eviter les mot anglais ou qui ressemble a des syntaxe existante (Date, par exemple). Cela pourrait être la source de problème.


Mais il faut modifier la ligne qui contrôle les enregistrements.
En effet : tu contrôle qu'il y a des enregistrements dans la base, mais il faut contrôler qu'il y ai ce que tu cherche sinon ça plante :

Donc au lieu de :
Quote
'Contrôle si il ya des enregistrements dans la base
        SQL = "SELECT COUNT(*) FROM Donnees"
        rs = con.Execute(SQL)

Il faut mettre:
Quote
SQL = "SELECT COUNT(*) FROM Donnees WHERE Jour >#" & ConvDateDebut & "# AND Jour <#" & ConvDateFin & "# ORDER BY Jour"
rs = con.Execute(SQL)

S'il trouve quelque chose alors tu l'affiches, sinon il sort de la boucle et pas d'erreur.

j'espère que mes explications ne sont pas trop brouillons...
Il faut savoir qu'a chaque requête sur ta base , il faut au préalable faire la même requête avec "COUNT(*)" pour être sûr qu'il y ait bien des enregistrements correspondants a ce que tu cherches.
Parce que si tu essayes de lire un recordset (rs) vide, cela génère une erreur. D'où l'obligation de contrôler avant d'afficher et donc il faut contrôler la même chose que ce que l'on va rechercher ! smiley-eek-blue

Normalement ensuite cela devrait être bon

@++
« Last Edit: February 02, 2012, 05:53:52 pm by Fredo59 » Logged

L'expérience est une longue suite de bêtises...

Offline Offline
Jr. Member
**
Karma: 0
Posts: 98
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je galère.
Cet affichage est sur une 2e feuille du projet, avec une nouvelle grille et un 2e graph, je ne sais pas si cela a son importance.

Pour faire marcher avec la requette "SQL = "SELECT * FROM Donnees ORDER by ID"" j'ai été obligé de supprimer "Grid2.RowCount = 0"
Alors que sur ma feuille1 cela fonctionne avec.

Par contre si je change les requettes par :
 
"SQL = "SELECT COUNT(*) FROM Donnees WHERE Jour >#" & ConvDateDebut & "# AND Jour <#" & ConvDateFin & "# ORDER BY Jour"

J'obtient maintenant ceci :




Voici le code complet de la Température.vb :

Code:
Imports System.Windows.Forms.DataVisualization.Charting
Public Class Température
    Dim sBaseDeDonnees As String = Application.StartupPath & "\Meteo.mdb" 'Ce sera le nom de notre base


    Private Sub Temperature_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        'initialisation de la grille
        Grid2.ColumnCount = 4

        Grid2.RowHeadersWidth = 5 'ça c'est la toute première colonne (on ne s'en sert pas)
        'Colonne 1
        Grid2.Columns(0).Width = 40
        Grid2.Columns(0).Name = "ID"
        'Colonne 2
        Grid2.Columns(1).Width = 100
        Grid2.Columns(1).Name = "Temperature"
        'Colonne 3
        Grid2.Columns(2).Width = 100
        Grid2.Columns(2).Name = "Jour"
        'Colonne 4
        Grid2.Columns(3).Width = 100
        Grid2.Columns(3).Name = "Heure"

        

    End Sub

    Private Sub HistoButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles HistoButton.Click

        Dim SQL As String
        Dim con As ADODB.Connection
        Dim rs As ADODB.Recordset
        Dim n As Integer
        Dim RecupDateDebut As Date  'Choix utilisateur date début du tracé
        Dim ConvDateDebut As String
        Dim RecupDateFin As Date    'Choix utilisateur date début du tracé
        Dim ConvDateFin As String

        

        RecupDateDebut = DateTimePicker1.Text
        ConvDateDebut = Format(RecupDateDebut, "MM/dd/yyyy")

        RecupDateFin = DateTimePicker2.Text
        ConvDateFin = Format(RecupDateFin, "MM/dd/yyyy")

        'J'ai enlevé ceci sinon cela ne fonctionne pas. Pourquoi ?
        'Grid2.RowCount = 0

        'Ouverture de la base de donnée
        con = New ADODB.Connection
        con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & sBaseDeDonnees & ";" & "Persist Security Info=False"
        con.Open()

        'Contrôle si il ya des enregistrements dans la base

        'Cette requette ne fonctionne pas
        'QL = "SELECT COUNT(*) FROM Donnees WHERE Jour >#" & ConvDateDebut & "# AND Jour <#" & ConvDateFin & "# ORDER BY Jour"

        'Celle çi est ok
        'SQL = "SELECT * FROM Donnees ORDER by ID"
        rs = con.Execute(SQL)
        rs.Fields.Refresh() 'on rafraichis les enregistrements
        
        'Si oui il les affiche
        If rs.Fields(0).Value <> 0 Then


            SQL = "SELECT COUNT(*) FROM Donnees WHERE Jour >#" & ConvDateDebut & "# AND Jour <#" & ConvDateFin & "# ORDER BY Jour"
            'SQL = "SELECT * FROM Donnees ORDER by ID"

            rs = con.Execute(SQL)
            Chart2.Series.Clear()
            Chart2.Series.Add("T°")

            Do
                n = Grid2.Rows.Add()
                Grid2.Rows.Item(n).Cells(0).Value = rs.Fields("ID").Value
                Grid2.Rows.Item(n).Cells(1).Value = rs.Fields("Temperature").Value
                Grid2.Rows.Item(n).Cells(2).Value = Format(rs.Fields("Jour").Value, "dd/MM/yyyy")
                Grid2.Rows.Item(n).Cells(3).Value = rs.Fields("Heure").Value

                'Graphique
                ' Chart1.Series(0).Points.AddXY(Format(rs.Fields("Jour").Value, "dd/MM/yyyy"), rs.Fields("Temperature").Value)

                Chart2.Series(0).Points.AddXY(rs.Fields("Heure").Value, rs.Fields("Temperature").Value)
                rs.MoveNext()

            Loop While rs.EOF = 0
        End If

        rs = Nothing
        con.Close()
        con = Nothing

        Grid2.ClearSelection()

    End Sub

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

    End Sub

    Private Sub DateTimePicker1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DateTimePicker1.ValueChanged

        TextBox1.Text = DateTimePicker1.Value

    End Sub
    Public Sub RemplirGrille()
        Dim SQL As String
        Dim con As ADODB.Connection
        Dim rs As ADODB.Recordset
        Dim n As Integer
        'On met a jour la grille (affichage des données, une manière parmis tant d'autre (graphique, liste, grille, combobox...)
        TextBox2.Text = "debut remplir grille"
        TextBox2.Text = "debut remplir grille2"
        'Grid2.RowCount = 0

        'Ouverture de la base de donnée
        '  con = New ADODB.Connection
        ' con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & sBaseDeDonnees & ";" & "Persist Security Info=False"
        '  con.Open()
        TextBox2.Text = "base donnee ouverte"
        'Contrôle si il ya des enregistrements dans la base
        SQL = "SELECT COUNT(*) FROM Donnees"
        rs = con.Execute(SQL)
        TextBox2.Text = "donnees trouvees"
        'Si oui il les affiche
        If rs.Fields(0).Value <> 0 Then

            SQL = "SELECT * FROM Donnees ORDER by ID"


            rs = con.Execute(SQL)
            Chart2.Series.Clear()
            Chart2.Series.Add("T°")

            Do
                n = Grid2.Rows.Add()
                Grid2.Rows.Item(n).Cells(0).Value = rs.Fields("ID").Value
                Grid2.Rows.Item(n).Cells(1).Value = rs.Fields("Temperature").Value
                Grid2.Rows.Item(n).Cells(2).Value = Format(rs.Fields("Jour").Value, "dd/MM/yyyy")
                Grid2.Rows.Item(n).Cells(3).Value = rs.Fields("Heure").Value

                'Graphique
                ' Chart1.Series(0).Points.AddXY(Format(rs.Fields("Jour").Value, "dd/MM/yyyy"), rs.Fields("Temperature").Value)

                Chart2.Series(0).Points.AddXY(rs.Fields("Heure").Value, rs.Fields("Temperature").Value)
                rs.MoveNext()

            Loop While rs.EOF = 0
        End If

        rs = Nothing
        con.Close()
        con = Nothing
        TextBox2.Text = "fin remplir grille"
        Grid2.ClearSelection()

    End Sub
End Class
« Last Edit: February 03, 2012, 06:42:17 am by Michel_B » Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 72
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Normal que cela ne fonctionne ps ton code contient des erreurs.
Il faut bien distinguer ce que tu fait.

Tu veux extraire des données comprises entre 2 dates.

Alors il faut d'abord contrôler s'il existe bien des données entre ces 2 dates avec
SQL = "SELECT COUNT(*) FROM Donnees WHERE Jour >#" & ConvDateDebut & "# AND Jour <#" & ConvDateFin & "# ORDER BY Jour"
rs=con.execute(SQL)

Il va te repondre combien d'enregistrement il a trouvé, s'il n'y en a pas, tu sors de la boucle

if rs.fields(0).value=0 then exit sub 'tu sors

Dans le cas contraire, tu peux effectuer réellement la recherche et afficher les données :
SQL = "SELECT * FROM Donnees WHERE Jour >#" & ConvDateDebut & "# AND Jour <#" & ConvDateFin & "# ORDER BY Jour"
rs=con.execute(SQL)

Do
...
loop ...

Ne confond surtout pas l'instruction SQL:
1° SELECT COUNT(*)....... : te mets dans le rs (recodset) le nombre d’enregistrements trouvés correspondant a la requete
2° SELECT *....... : te mets dans le recordset tout les champs trouvés correspondant a la requete

c'est vraiment différent !

L'erreur que tu as "Aucun texte de commande...." c'est parceque tu n'as pas remplis correctement la variable SQL (commande)

Si on résume :
1° tu ouvre ta base :
Quote
con = New ADODB.Connection
        con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & sBaseDeDonnees & ";" & "Persist Security Info=False"
        con.Open()

2° Tu controle d'abord que ta requete contient des données (afin d'eviter des erreurs), par exemple :
Quote
SQL="SELECT COUNT(*) FROM Donnees WHERE Jour >#" & ConvDateDebut & "# AND Jour <#" & ConvDateFin & "# ORDER BY Jour

3°tu envoie la commande que tu as créé et tu mets le résultat dans un recordset
Quote
rs=con.execute(SQL)

4°Si le recordset te répond autre chose que 0, c'est que tu peux récupérer des données (ce n'est plus COUNT(*) mais * seulement)
Quote
If rs.fields(0).value=0 then exit sub
SQL="SELECT * FROM Donnees WHERE Jour >#" & ConvDateDebut & "# AND Jour <#" & ConvDateFin & "# ORDER BY Jour

5°tu envoie de noveau la commande que tu as créé et tu mets le résultat dans un recordset
Quote
rs=con.execute(SQL)

6° tu affiche les données (Do.....LOOP....)

Voilà, si vraiment tu n'y arrive pas, je te ferai une archive en exemple

@++

Bon courage  smiley-wink








« Last Edit: February 03, 2012, 07:04:40 am by Fredo59 » Logged

L'expérience est une longue suite de bêtises...

Offline Offline
Jr. Member
**
Karma: 0
Posts: 98
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Humm... Ca bug toujours  smiley-sad-blue  pourtant il me semble avoir bien compris

Quand le code s'arrette si je mets le curseur sur le 1er recorset il marque :




Le nouveau code :

Code:
Dim SQL As String
        Dim con As ADODB.Connection
        Dim rs As ADODB.Recordset
        Dim n As Integer
        Dim RecupDateDebut As Date  'Choix utilisateur date début du tracé
        Dim ConvDateDebut As String
        Dim RecupDateFin As Date    'Choix utilisateur date début du tracé
        Dim ConvDateFin As String

        RecupDateDebut = DateTimePicker1.Text
        ConvDateDebut = Format(RecupDateDebut, "MM/dd/yyyy")

        RecupDateFin = DateTimePicker2.Text
        ConvDateFin = Format(RecupDateFin, "MM/dd/yyyy")

        ' 1° tu ouvres ta base :
        con = New ADODB.Connection
        con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & sBaseDeDonnees & ";" & "Persist Security Info=False"
        con.Open()
      
        ' 2° Tu controle d'abord que ta requete contient des données
        ' (afin d'eviter des erreurs), par exemple :
        SQL = "SELECT COUNT(*) FROM Donnees WHERE Jour >#" & ConvDateDebut & "# AND Jour <#" & ConvDateFin & "# ORDER BY Jour"

        ' 3°tu envoie la commande que tu as créé et
        ' tu mets le résultat dans un recordset

        rs = con.Execute(SQL)


        ' 4°Si le recordset te répond autre chose que 0, c'est que
        ' tu peux récupérer des données (ce n'est plus COUNT(*) mais * seulement)

        If rs.Fields(0).Value = 0 Then Exit Sub
        SQL = "SELECT * FROM Donnees WHERE Jour >#" & ConvDateDebut & "# AND Jour <#" & ConvDateFin & "# ORDER BY Jour"

        ' 5°tu envoie de noveau la commande que tu as créé
        ' et tu mets le résultat dans un recordset

        rs = con.Execute(SQL)

        'Chart2.Series.Clear()
        'Chart2.Series.Add("T°")

        Do
            n = Grid2.Rows.Add()
            Grid2.Rows.Item(n).Cells(0).Value = rs.Fields("ID").Value
            Grid2.Rows.Item(n).Cells(1).Value = rs.Fields("Temperature").Value
            Grid2.Rows.Item(n).Cells(2).Value = Format(rs.Fields("Jour").Value, "dd/MM/yyyy")
            Grid2.Rows.Item(n).Cells(3).Value = rs.Fields("Heure").Value

            'Graphique
            ' Chart1.Series(0).Points.AddXY(Format(rs.Fields("Jour").Value, "dd/MM/yyyy"), rs.Fields("Temperature").Value)

            '  Chart2.Series(0).Points.AddXY(rs.Fields("Heure").Value, rs.Fields("Temperature").Value)
            '  rs.MoveNext()

        Loop While rs.EOF = 0


        rs = Nothing
        con.Close()
        con = Nothing

        Grid2.ClearSelection()

 smiley-confuse smiley-confuse
« Last Edit: February 03, 2012, 09:28:56 am by Michel_B » Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 72
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

C'est bizarre que tu ais tant de soucis...

Je vais refaire un exemple et te poster l'archive. Je ne garanti pas que je la poste ce soir mais demain sûr  smiley-mr-green

@+
Logged

L'expérience est une longue suite de bêtises...

Pages: 1 2 3 [4] 5 6   Go Up
Jump to: