VB.NET filtrer enregistrements d'une table en SQL

dakota77 Messages postés 11 Date d'inscription samedi 1 septembre 2007 Statut Membre Dernière intervention 25 février 2010 - 14 déc. 2008 à 12:05
mohamedtsdi Messages postés 4 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 17 décembre 2008 - 17 déc. 2008 à 17:52
Bonjour, novice en VB.NET, je souhaiterais connecter à une table mdb et ne charger dans une form que les enregistrements qui correspondent à certains critères grâce à une requête SQL.

La première étape consiste à utiliser l'assistant "connexion bases de données" qui va créer les objets nécessaires : un tableAdapter, un dataset, un bindingnavigator et un bindingsource.

Tous les enregistrement sont chargés dans la form. Les contrôles mis automatiquement par l'assistant fonctionnent bien ainsi que le datagridview.

Je voudrais maintenant n'afficher dans le datagriview que les enregistrements dont le champ NBR vaut 1. La chaîne SQL serait : sw1 = "SELECT NFD, NBR FROM(CAL01) where (NBR=1)"




Ma question est : en utilisant tous les objets déjà créés par l'assistant, comment remplir par code le dataset existant avec des données basées sur cette requête SQL ?



Au lieu d'utilser les objets existants, on pourrait en créer des nouveaux. Cette solution ne me paraît pas très "propre". Le code  suivant fonctionne. Mais le BindingNavigatorsaveitem par exemple ne fonctionne plus. Donc impossible de sauvegarder les modifications.

Quelle est la bonne méthode ?
Merci pour votre aide.

Public Class Form1
    Public AcCon As OleDb.OleDbConnection
    Public AcCmd As OleDb.OleDbCommand
    Public AcDta As OleDb.OleDbDataAdapter
    Public AcDts As DataSet
    Public AcDtt As DataTable
    Public AcOcb As OleDb.OleDbCommandBuilder
    Public RN As Integer 'Numéro de l'enregistrement courant
    Public CS1 As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
    Public DR As String = "c:\LRVB8"
    Public db As String = "VOCABUT.mdb"
    Public CS2 As String = CS1 & DR & db
    Public tb1 As String = "CAL01"
    Public sw1 As String 'string SQL

Friend Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        sw1 = "SELECT [N°], QUE, REP, NFD, NBR, DEM, TEM, DHR FROM(CAL01) where (NBR=1)"
        AcCon = New OleDb.OleDbConnection
        AcCmd = New OleDb.OleDbCommand(sw1)
        AcDta = New OleDb.OleDbDataAdapter(AcCmd)
        AcDts = New DataSet
        AcCon.ConnectionString = CS2
        AcCmd.Connection() = AcCon
        AcDta.Fill(AcDts, tb1)
End Sub

2 réponses

mohamedtsdi Messages postés 4 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 17 décembre 2008
17 déc. 2008 à 17:52
voilla un Bon code Ado.net(vb)

imports system.data
imports system.data.oledb


Public Class Form1

dim cn as new oledbconnection("Provider=Microsoft.Jet.OLEDB.4.0;" _
"Data Source=c:\LRVB8\VOCABUT.mdb")
dim ds as new dataset()
dim da as oledbdataAdapter()
dim bs as new bindingsource()

Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
da=new oledbdataAdapter("SELECT  *  FROM CAL01",cn)
' c'est mieux de remplir le dataset (ds) par tout les donner de table CAL01
da.Fill(ds,"CAL01") 'remplissage de dataset ds
bs.datasource=ds
bs.dataMember=ds.table("CAL01").tablename
bs.Filter= ds.table("CAL01").column(3).collumnName & "= ' " & 1 & " ' " 'ici filtrage
me.datagrideview1.datasource=bs' l'Affichage des donner sur datagrideview1
end sub





Remarque: écrire ce code pour éviter route erreur de code + tester<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>






 
0
mohamedtsdi Messages postés 4 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 17 décembre 2008
17 déc. 2008 à 17:52
voilla un Bon code Ado.net(vb)

imports system.data
imports system.data.oledb


Public Class Form1

dim cn as new oledbconnection("Provider=Microsoft.Jet.OLEDB.4.0;" _
"Data Source=c:\LRVB8\VOCABUT.mdb")
dim ds as new dataset()
dim da as oledbdataAdapter()
dim bs as new bindingsource()

Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
da=new oledbdataAdapter("SELECT  *  FROM CAL01",cn)
' c'est mieux de remplir le dataset (ds) par tout les donner de table CAL01
da.Fill(ds,"CAL01") 'remplissage de dataset ds
bs.datasource=ds
bs.dataMember=ds.table("CAL01").tablename
bs.Filter= ds.table("CAL01").column(3).collumnName & "= ' " & 1 & " ' " 'ici filtrage
me.datagrideview1.datasource=bs' l'Affichage des donner sur datagrideview1
end sub





Remarque: écrire ce code pour éviter toute erreur de code + tester<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>






 
0
Rejoignez-nous