Boucle en vb.net [Résolu]

spamito 183 Messages postés samedi 24 mars 2007Date d'inscription 30 mars 2013 Dernière intervention - 28 sept. 2008 à 20:07 - Dernière réponse : spamito 183 Messages postés samedi 24 mars 2007Date d'inscription 30 mars 2013 Dernière intervention
- 30 sept. 2008 à 00:02
Bonsoir,

Je possède une base de donnée SQL Server 2008 et VB 2008. Je suis tout à fait débutant dans ces produits et j'aimerai effectuer une boucle pour remplir un combobox, avec VB 6 je mets :

do until rs.EOF
fournisseur.AddItem = rs.field(0)
fournisseur.movenext
loop

Mais avec VB 2008 ça ne marche pas. Voici mon code sans la boucle :

conn.ConnectionString = "Persist Security Info=False;Integrated Security=SSPI;database=BASE;server=EITIACONSULTING"
conn.Open()

s = "SELECT fournisseurs.fournisseur FROM fournisseurs ORDER BY fournisseurs.fournisseur DESC;"
Dim myCommand As New SqlCommand(s, conn)
Dim myReader As SqlDataReader = myCommand.ExecuteReader()

myReader.Read()

fournisseur.Text = myReader("fournisseur")

myReader.Close()

Aidez moi SVP. Merci
Afficher la suite 

Votre réponse

8 réponses

cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 29 sept. 2008 à 17:02
+3
Utile
Oupsss, excuse moi, j'avais zappé la notion de combobox dans ton code.

La lecture du retour de la requette est bonne, c'est par contre le remplissage du combo qui ne l'est pas cette fois-ci.

s = "SELECT fournisseurs.fournisseur FROM fournisseurs ORDER BY fournisseurs.fournisseur DESC;"
Dim myCommand As New SqlCommand(s, conn)
Dim myReader As SqlDataReader = myCommand.ExecuteReader()

While myReader.Read()
    fournisseur.Items.Add(myReader("fournisseur"))
End While
myReader.Close()

Comme ça, ça devrait aller mieux

---- Sevyc64  (alias Casy) ----<hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_casy
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 28 sept. 2008 à 20:30
0
Utile
c'est guère plus compliqué :

s = "SELECT fournisseurs.fournisseur FROM fournisseurs ORDER BY fournisseurs.fournisseur DESC;"
Dim myCommand As New SqlCommand(s, conn)
Dim myReader As SqlDataReader = myCommand.ExecuteReader()

While myReader.Read()
    fournisseur.Text = myReader("fournisseur")
End While

myReader.Close()

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Commenter la réponse de cs_casy
spamito 183 Messages postés samedi 24 mars 2007Date d'inscription 30 mars 2013 Dernière intervention - 29 sept. 2008 à 03:43
0
Utile
J'ai déjà essayé cela mais ça ne marche pas, j'obtiens juste un seul enregistrement.
Commenter la réponse de spamito
spamito 183 Messages postés samedi 24 mars 2007Date d'inscription 30 mars 2013 Dernière intervention - 29 sept. 2008 à 05:45
0
Utile
Voici mon code :

Private Sub Demandes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
        Dim cn As New ADODB.Connection
        cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;data source=" & Application.StartupPath & "\BASE.mdb"
        cn.Open()

        Dim rs As New ADODB.Recordset
        rs.CursorLocation = ADODB.CursorLocationEnum.adUseServer
        rs.CursorType = ADODB.CursorTypeEnum.adOpenKeyset
        rs.LockType = ADODB.LockTypeEnum.adLockPessimistic
        rs.ActiveConnection = cn
        rs.Open("SELECT Clients.Intitule FROM Clients ORDER BY Clients.Intitule DESC", cn)

        Do Until rs.EOF
            Me.client.Text = rs.Fields(0).Value
            rs.MoveNext()
        Loop

    End Sub
Commenter la réponse de spamito
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 29 sept. 2008 à 09:00
0
Utile
C'est pourtant bien comme cela que ça s'utilise.

Par contre dans ton second code, tu utilise les anciens controles ADO avec une base Access, hors tu parlais dans le premier message d'une base SQLServer. Qu'en est-il de la réalité.

En .Net il est fortement recommander d'abandonner les anciens controles ADO et d'utiliser à la place les classes ADO.Net.

Si tu es avec une base SQLServer il te faut utiliser les classes de la famille SQLClient. Par contre avec une base Access il faudra passer par les classes OleDB.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Commenter la réponse de cs_casy
spamito 183 Messages postés samedi 24 mars 2007Date d'inscription 30 mars 2013 Dernière intervention - 29 sept. 2008 à 16:32
0
Utile
Ma base de données est sur SQL Server, c'était juste une erreur que j'ai faite. J'ai repris votre code avec le mien mais ça ne marche pas, j'ai toujours un seul enregistrement dans mon combobox.
Commenter la réponse de spamito
spamito 183 Messages postés samedi 24 mars 2007Date d'inscription 30 mars 2013 Dernière intervention - 29 sept. 2008 à 23:52
0
Utile
Ouiiiiiiiiiiiiii ça marche parfaitement, merci beaucoup cher ami.
Commenter la réponse de spamito
spamito 183 Messages postés samedi 24 mars 2007Date d'inscription 30 mars 2013 Dernière intervention - 30 sept. 2008 à 00:02
0
Utile
Puisque je suis débutant en vb.net et SQL Server, j'aimerai savoir si cette méthode que j'utilise est bonne ou pas et si elle est sécurisée ou pas.

Merci
Commenter la réponse de spamito

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.