Probleme dans base de données

Résolu
Tursiop60 Messages postés 38 Date d'inscription samedi 20 juin 2009 Statut Membre Dernière intervention 12 septembre 2011 - 5 juil. 2009 à 20:57
Tursiop60 Messages postés 38 Date d'inscription samedi 20 juin 2009 Statut Membre Dernière intervention 12 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.

Quelqu'un peut-il m'aider?

Merci

17 réponses

Tursiop60 Messages postés 38 Date d'inscription samedi 20 juin 2009 Statut Membre Dernière intervention 12 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 ?

Merci.
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
5 juil. 2009 à 21:21
salut,

tu te connectes à CLIENTS, qui doit être le nom de ta table, mais pas de ta base....
(enfin, je suppose)

revoie ta chaine de connexion
++

<hr size="2" width="100%" />
0
Tursiop60 Messages postés 38 Date d'inscription samedi 20 juin 2009 Statut Membre Dernière intervention 12 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 !!).

Si tu vois autre chose...

Merci
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
5 juil. 2009 à 22:11
autre chose oui...



Integrated Security=SSPI


(et pas TRUE)

en supposant que c'est une base SQLSERVER (pas précisé)
nb : si c'est le cas, je ne peux pas tester.....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tursiop60 Messages postés 38 Date d'inscription samedi 20 juin 2009 Statut Membre Dernière intervention 12 septembre 2011
5 juil. 2009 à 22:23
Merci,

J'ai essayé de changer mais encore  pareil.
Pour la base je suis pas sur pour le SQLSERVER comment je fait pur savoir.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
5 juil. 2009 à 22:53
... la question serait plutôt "comment peux-tu ne pas être sûr"

localhost, la base est chez toi
tu connais forcément son format et son moteur, son nom, sa structure, son contenu, .....
0
Tursiop60 Messages postés 38 Date d'inscription samedi 20 juin 2009 Statut Membre Dernière intervention 12 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.

Merci.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
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

rien à tester si on en sait pas un minimum
0
Tursiop60 Messages postés 38 Date d'inscription samedi 20 juin 2009 Statut Membre Dernière intervention 12 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

Ca répond à ta question ?
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
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....
0
Tursiop60 Messages postés 38 Date d'inscription samedi 20 juin 2009 Statut Membre Dernière intervention 12 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.

Encore merci de prendre du temps pour m'aider.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
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

<!-- Coloration syntaxique vb/vba/vb.net : http://charles.racaud.free.fr/code-syntaxing/ -->
Coloration syntaxique vb/vba/vb.net







comme tu le vois je n'ai presque rien eu à changer par rapport à ton code de départ
++

<hr size="2" width="100%" />
0
Tursiop60 Messages postés 38 Date d'inscription samedi 20 juin 2009 Statut Membre Dernière intervention 12 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".
0
Tursiop60 Messages postés 38 Date d'inscription samedi 20 juin 2009 Statut Membre Dernière intervention 12 septembre 2011
7 juil. 2009 à 11:44
Désolé mais j'arrive pas à mettre la capture d'écran pour les paramètres; Comment faut-il faire pour insérer l'image dans le message ?
0
Tursiop60 Messages postés 38 Date d'inscription samedi 20 juin 2009 Statut Membre Dernière intervention 12 septembre 2011
7 juil. 2009 à 12:00
Dans les paramètres je viens de m'apercevoir d'un truc, dans sources de données y'a : Microsoft SQL Server Compact 3.5

Est-ce là le problème ?
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
7 juil. 2009 à 13:04
en géréral on ne met pas de S aux noms des tables
as tu modifié la requête ou la table en conséquence?



Dim strRequete As String = "SELECT * FROM CLIENT;"





es-tu sûr du nom de ta base?......
(DATABASE serait aussi le nom de l'arborescence générale en version US)

compact edition.... çà peut aussi jouer oui
à toi d'adapter alors
plus d'infos ici :
http://www.connectionstrings.com/sql-server-2005-ce

++
0
Tursiop60 Messages postés 38 Date d'inscription samedi 20 juin 2009 Statut Membre Dernière intervention 12 septembre 2011
7 juil. 2009 à 13:42
ok je te remercie je vais tester tout ça
0
Rejoignez-nous