Vb6&sql

ingstat Messages postés 49 Statut Membre -  
ingstat Messages postés 49 Statut Membre -
Bonjour,
j'ai un problèmme dans l'affichage des résultats d'une requêtte SQL dans un controle DataGrid sur VB6..
Merci de m'aider
Configuration: Windows XP
Internet Explorer 7.0

2 réponses

  1. Tatanos Messages postés 1263 Statut Membre 156
     
    Pour Access :
    '-----------------------------------------------------------------------------------------------------------------------------

    Public DB As Database 'Tu définis ta variable pour la base de données
    Private RS As Recordset 'Tu définis un Recordset (plage de mémoire sous forme de tableau pour stoquer le résultat de la requete SQL)

    Private Sub Form_Load()

    Set DB = OpenDatabase("C:\base.mdb") 'Tu ouvres la base de données
    Set RS = DB.OpenRecordset("SELECT * FROM Table") 'Tu stoque ta requete dans le recordset

    If RS_RETARD.EOF = False Then 'Tu testes si le RS contiens des données
    RS.MoveLast ' Fin du RS
    RS.MoveFirst ' Début du RS (VB ne connais pas le nombre de lignes du tableau tant qu'il n'a pas été parcouru, après ceci on peut donc compter le nombre de lignes)
    NombreLigneRS = RS.RecordCount 'Nombre de lignes
    Else
    nb_ret = 0
    End If

    'Ensuite tu n'as plus qu'a remplir le GRID avec les données du RS

    For I = 1 To RS.RecordCount
    GRID.AddItem (Fields(0) & Chr(9) & Fields(1) & Chr(9) & RS1.Fields(2))
    RS1.MoveNext
    GRID.RowHeight(I) = 300
    Next

    un Recordset à un curseur, il est positionné d'origine sur la 1ere ligne donc Fields(0) correspond a la 1ere colonne de ton RS, Fields(1) à la seconde... etc tu as une colonne par champs de ta requete
    pour passer a la seconde ligne ce n'est pas comme un tableau ou tu précise par exmple Tableau(1, 5)
    tu utilise le curseur.

    pour le faire bouger d'une ligne vers le bas : RS.MoveNext,
    pour le faire remonter d'une ligne : RS.MovePrevious,
    pour le faire passer sur la dernière ligne : RS.MoveLast
    et pour la première ligne : RS.MoveFirst

    le Chr(9) dans le grid sert à passer à la cellule de droite.

    J'espère avoir été assez clair :) bon courage !
    -1
    1. ingstat Messages postés 49 Statut Membre
       
      merci
      c'est vraiment gentil de ta part.
      je vais essayer ce code.
      -1
    2. ingstat Messages postés 49 Statut Membre
       
      Voici le code que je vient d'implimenter

      """""""""Dim sql As String
      Dim rst1 As New Recordset
      sql = "Select* From T1 where Numero Affaire between d and f"
      If rst1.State = adStateOpen Then rst1.Close
      rst1.Open sql, db, adOpenDynamic, adLockOptimistic
      Set datagrid1.DataSource = rst1


      Lorsque je compile.le meesage suivant s'affiche :
      "variable non definit"
      je vois pas comment definir la variable datagrid1

      Merci
      -1
  2. ingstat Messages postés 49 Statut Membre
     
    Bonjour,
    je cherche à afficher le résultat d'une requette sql dans un controle datagrid.
    je ne vois pas comment déclarer "datagrid1" dans le code suivant:

    Private Sub Command6_Click()
    Dim rst As New ADODB.Recordset
    Dim rst1 As New ADODB.Recordset
    Dim sql As String
    If rst.State = adStateOpen Then rst.Close
    rst.Open " T1", DB, adOpenDynamic, adLockOptimistic
    sql = "Select* From T1 where Numero Affaire between d and f"
    If rst1.State = adStateOpen Then rst1.Close
    rst1.Open sql, DB, adOpenDynamic, adLockOptimistic
    Set Datagrid.DataSource = rst1
    End Sub

    Merci
    -1