Tursiop60
Messages postés38Date d'inscriptionsamedi 20 juin 2009StatutMembreDernière intervention12 septembre 2011
-
5 juil. 2009 à 20:57
Tursiop60
Messages postés38Date d'inscriptionsamedi 20 juin 2009StatutMembreDernière intervention12 septembre 2011
-
7 juil. 2009 à 22:51
Bonsoir à tous,
Je suis en train de réaliser une application pour la diététicienne du centre de remise en forme où je travail.
Je viens vers vous car j'ai un petit soucis dans le code suivant :
PrivateSub Rechercher_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)HandlesMyBase.Load
Dim i AsInteger
Dim strConnexion AsString = "Data Source=localhost;Initial Catalog = Clients;Integrated Security = true"
Dim strRequete AsString = "SELECT NOM, Prenom FROM Clients"
Dim oConnection AsNew SqlConnection(strConnexion)
Dim oCommand AsNew SqlCommand(strRequete, oConnection)
oConnection.Open()
Dim oReader As SqlDataReader = oCommand.ExecuteReader()
if oReader.Hasrowsthen
while oReader.Read
ListBox1.items.add(OReader.Getvalue(0) & " " & OReader.Getvalue(1))
endwhile
else
Label2.Text() = " Actuellement aucun client dans la base de"
endif
oReader.Close()
oCommand.Connection.Close()
EndSub
mon problème : quand je lance l'application, le message d'erreur suivant apparaît mais je ne vois pas ce que ça veut dire.
Une erreur s'est produite lors de la création du formulaire. Pour plus d'informations, consultez Exception.InnerException. L'erreur est : La référence d'objet n'est pas définie à une instance d'un objet.
Tursiop60
Messages postés38Date d'inscriptionsamedi 20 juin 2009StatutMembreDernière intervention12 septembre 2011 7 juil. 2009 à 22:51
Ok c'est bon j'ai trouver, ça marche niquel :
Dim strConnexion As String = "Data Source = Diet.sdf "
Dim strRequete As String = "SELECT * FROM Clients ORDER BY NOM"
Dim engine As New SqlCeEngine(strConnexion)
engine.Dispose()
Dim conn As New SqlCeConnection(strConnexion)
conn.Open()
Dim cmd As New SqlCeCommand(strRequete, conn)
Dim oReader As SqlCeDataReader = cmd.ExecuteReader()
While oReader.Read()
ListBox1.Items.Add(oReader.GetValue(0).ToString & " " & oReader.GetValue(1).ToString)
Dim i = ListBox1.Items.Count
If i = 0 Then
Label2.Text() = " Actuellement aucun client dans la base de données."
ElseIf i = 1 Then
Label2.Text() = " Actuellement " & i & " client dans la base de données."
Else : Label2.Text() = " Actuellement " & i & " clients dans la base de données."
End If
End While
oReader.Close()
cmd.Connection.Close()
Maintenant ce que je veux faire c'est quand je met en surbrillance une ligne de la listbox, récupérer toutes les données qui s'y rapporte et les envoyer vers un autre formulaire pour les lire
Je pense que le code approprié sera similaire au premier mais je ne vois pas comment faire pour associer l'item sélectionner de la listbox à la ligne de la base de données.
J'espère que c'est assez clair. Penses-tu pouvoir me filer encore un petit coup de main ?
Tursiop60
Messages postés38Date d'inscriptionsamedi 20 juin 2009StatutMembreDernière intervention12 septembre 2011 5 juil. 2009 à 21:41
Merci de la réponse, effectivement CLIENTS est bien ma Table. J'ai donc fais comme tu le propose en changeant par le nom de la bse qui est DATABASE, mais rien a changé (toujours le même message d'erreur !!).
Tursiop60
Messages postés38Date d'inscriptionsamedi 20 juin 2009StatutMembreDernière intervention12 septembre 2011 6 juil. 2009 à 13:39
Bonjour,
Oui c'est bon c'est bien ça mais pourquoi cela ne fonctionne pas au niveau de la connexion dans le code. Apparemment tu ne peux pas testé donc y'a-t-il quelqu'un qui pourrai tester et me dire ce qu'il en ai, ça fait 2 mois que je suis sur le projet et j'avoue ne plus avoir les idées clairs là-dessus.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 6 juil. 2009 à 13:54
je ne peux pas tester si c'est du sqlserver
d'autres, je peux....
à toi de nous dire quelle est ton SGBD
ta table est dans une base (forcément), comment a-t'elle été faite
te l'a-t'on envoyé, si tu le l'as pas faite
as-tu copié la chaine de connexion ou l'as-tu saisie parce que justement tu connais ton SGBD
la table existe-t'elle seulement
Tursiop60
Messages postés38Date d'inscriptionsamedi 20 juin 2009StatutMembreDernière intervention12 septembre 2011 6 juil. 2009 à 14:19
Merci de la rapidité de la réponse, c'est appréciable. Pour te répondre :
SGBD = SQL Server
Table = CLIENTS dans une base appelée DATABASE (créer avec l'assistant dans VB Express 2008)
Moi qui l'ai faite
Je l'ai saisie après des recherches sur le web
La Table existe et comporte 135 colonnes
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 6 juil. 2009 à 14:30
ah bin voilà
çà aurait été préférable dès l'énoncé mais bon
sans promesse mais j'essaye de me connecter à une base distante (chez un proche) et je te reviens...
que cela ne t'empêche évidemment pas de faire des tests de ton côté et de consulter les sources existantes
ps : mais lors de la création de la base tu as dû autoriser la connexion depuis ta session windows tout au moins
il devrait donc y avoir les mentions d'utilisateur et de mot de passe dans ta chaine de connexion, avec les valeurs de session ou celles de l'administrateur de la DB....
Tursiop60
Messages postés38Date d'inscriptionsamedi 20 juin 2009StatutMembreDernière intervention12 septembre 2011 6 juil. 2009 à 14:40
En fait pour ce qui est des mentions d'utilisateur, je ne sais pas parce que quand je vais compiler l'application elle ne sera pas exécuter sur mon ordinateur.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 7 juil. 2009 à 06:47
salut,
çà veut dire que chaque utilisateur aura sa base locale? ou qu'ils se connecteront tous à une base distante....
voici le test effectué et qui fonctionne correctement, en local, sous VB2008 avec une base sqlserver2005 (tout accès protégé)
Imports System.Data.SqlClient
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim strConnexion As String = "Data Source=localhost;Initial Catalog=DATABASE;Integrated Security=SSPI;"
Dim strRequete As String = "SELECT * FROM CLIENT;"
Dim oConnection As New SqlConnection(strConnexion)
Dim oCommand As New SqlCommand(strRequete, oConnection)
oConnection.Open()
Dim oReader As SqlDataReader = oCommand.ExecuteReader()
If oReader.Hasrows Then
While oReader.Read
ListBox1.Items.Add(oReader.GetValue(0).ToString & " " & oReader.GetValue(1).ToString)
End While
Else
Label2.Text = "Actuellement aucun client dans la base de données"
End If
oReader.Close()
oCommand.Connection.Close()
End Sub
End Class
Tursiop60
Messages postés38Date d'inscriptionsamedi 20 juin 2009StatutMembreDernière intervention12 septembre 2011 7 juil. 2009 à 11:42
Bonjour,
Ok merci, j'ai testé le code mais cette fois-ci le message d'erreur est différent (au niveau de oConnection.open) :
Une erreur liée au réseau ou spécifique à l'instance s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur est introuvable ou n'est pas accessible. Vérifiez que le nom de l'instance est correct et que SQL Server est configuré pour autoriser les connexions distantes. (provider: Fournisseur de canaux nommés, error: 40 - Impossible d'ouvrir une connexion à SQL Server)
Quand je regarde les paramètres de la base j'ai ça :
Et quand je clique sur tester la connexion ça affiche "connexion réussie".