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.NET Discussion :

extraire les deux valeurs d'un select sql dans variable


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2020
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2020
    Messages : 34
    Par défaut extraire les deux valeurs d'un select sql dans variable
    bonjour
    comment récupérer les 2 valeurs et les mettre dans des variables
    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
    44
    45
    46
    47
    48
    49
    Private Sub Lirebasedate()
            Dim I As Integer ' variable du nombre de champs dans une ligne d'enregistrement
            Dim s(0 To 2) As String ' initialisation du tableau qui va recevoir les champs 
            Dim sqlSelect As String
            Dim ConnSQL As New SqlConnection()
            Dim ReadSQL As SqlDataReader
            Dim datedebut As String
            Dim datefin As String
            Dim stat As String
            Dim leSite As String
            I = 1
            ConnSQL.ConnectionString = "Data Source=DESKTOP-KBC80U4\SQLEXPRESS;Initial Catalog=ScadaNetDb1;Integrated Security=SSPI"
     
            ConnSQL.Open()
            datedebut = Format$(DateTimePicker1.Value, "yyyy-MM-dd")
            datefin = Format$(DateTimePicker2.Value, "yyyy-MM-dd")
            'MsgBox("Date debut=" & datedebut & Chr(10) & "Date fin=" & datefin & Chr(10) & "N° site=" & valsite & Chr(10) & "N° room=" & valcpt & "  N° calo=" & valcalo)
            leSite = " T1.STA_SiteNumber =" & valsite
            stat = " T1.INF_NumberInStation =" & valcpt
     
            '*************lecture water meter***************************
            sqlSelect = ("WITH v as(SELECT T1.ID , T1.STA_SiteNumber, T1.INF_NumberInStation," _
            & " T1.INF_Date, T1.INF_Value, row_number() over " _
            & "(partition by T1.STA_SiteNumber, T1.INF_NumberInStation order by T1.INF_Date) rn_asc," _
            & " row_number() over (partition by T1.STA_SiteNumber, T1.INF_NumberInStation " _
            & " order by T1.INF_Date desc) rn_desc FROM dbo.View_ArchivedInformations AS T1 " _
            & " where (convert(date, T1.INF_Date)>='" & datedebut & " ' ) and (convert(date, T1.INF_Date)<='" & datefin & " ')" _
            & "and  (" & leSite & " and " & stat & " )) " _
            & " select * from v where  rn_asc = 1 or rn_desc = 1; ")
     
            Dim CommandSQL As New SqlCommand(sqlSelect, ConnSQL)
            ReadSQL = CommandSQL.ExecuteReader()
     
     
            Do While ReadSQL.Read()
              'ici je souhaite avoir les 2 valeur de la colonne 4 dans 2 variables
            Loop
     
     
            TbDAYCPT.Text = s(2) - s(1)
     
            '*************lecture btu meter***************************   
     
     
           ReadSQL.Close()
            ConnSQL.Close()
     
     
        End Sub
    merci

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Re ...,


    Si tu utilisais un DataAdapter, il te remplirait un DataTable et tusais comment accéder aux différents champs de chaque ligne.

    Avec le Reader, tu peux aussi accéder à chaque champs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
            Do While ReadSQL.Read()
              'ici je souhaite avoir les 2 valeur de la colonne 4 dans 2 variables ??????   2 valeurs dans une même colonnes ??? dans 2 lignes diffrentes alors ???
     
    'Ici tu as accès (pour chaque ligne du ReadSQL) à :
    ReadSQ.GetValue(0)    ' 1ère colonne
    ReadSQ.GetValue(1)    ' 2ème colonne
    ReadSQ.GetValue(2)    ' ... 
     
    ' donc :
     
    UneVariable = ReadSQ.GetValue(3)
     
            Loop


  3. #3
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2020
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2020
    Messages : 34
    Par défaut
    Bonjour
    Accéder à la valeur de la première sql et la colonne c'est bon, mais comment récupérer la 2ème valeur dans une autre variable

  4. #4
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Je ne comprends pas...
    Le résultat d'un ExecuteReader est un tableau qu'on peut parcourir en lecture seule et seulement de manière séquentielle, du début à la fin.
    C'est pourquoi on le lit dans une boucle While SQLRead.Read.
    Dans la boucle, tu accèdes à une ligne à chaque tour. Et les GetValue() te donnent accès à chaque champ.
    Donne-moi un exemple avec des données fictives de quelques lignes qui resulteraient de ton ExecuteReader.

    En relisant ton message, je me dis ... Si tu veux avoir plusieurs variables dans ta boucle, il faut savoir quand affecter l'une plutôt que l'autre (If.... Then ... )

  5. #5
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2020
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2020
    Messages : 34
    Par défaut
    Ma requête sql me donne 2 ligne
    La première variable est la date de début en colonne 4
    La deuxième ligne est la date de fin en colonne 4
    Ensuite je souhaite faire datedefin-datedebut
    Je récupère à chaque fois 2 lignes donc je souhaite récupérer la valeur des 2 ligne en colonne 4

  6. #6
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Ok, ta requête te donne 2 lignes à chaque fois.
    Alors pas besoin d'une boucle, 2 lectures successives donneront les 2 lignes
    Le 1er ReadSql.Read donne la 1ere ligne
    Le 2ème ReadSql.Read ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ReadSQL.Read
    DateDebut = ReadSQL.GetValue(3)
    ReadSQL.Read
    DateFin = ReadSQL.GetValue(3)
    ...

  7. #7
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2020
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2020
    Messages : 34
    Par défaut
    merci encore

    il faut que je revois ma requette sql car ce n'est pas les résultat que j'attend

  8. #8
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Ta requête paraît hyper complexe.

    Bon travail ...

Discussions similaires

  1. Réponses: 9
    Dernier message: 03/07/2012, 17h22
  2. Réponses: 6
    Dernier message: 10/06/2008, 17h18
  3. Réponses: 3
    Dernier message: 06/11/2006, 08h14
  4. Réponses: 2
    Dernier message: 14/06/2006, 09h30
  5. Importer valeur requete SQL dans une Requete
    Par qbihlmaier dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 21/03/2006, 14h24

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