Probleme dans base de données [Résolu]

Messages postés
38
Date d'inscription
samedi 20 juin 2009
Dernière intervention
12 septembre 2011
- 5 juil. 2009 à 20:57 - Dernière réponse :
Messages postés
38
Date d'inscription
samedi 20 juin 2009
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
Afficher la suite 

Votre réponse

17 réponses

Meilleure réponse
Messages postés
38
Date d'inscription
samedi 20 juin 2009
Dernière intervention
12 septembre 2011
7 juil. 2009 à 22:51
3
Merci
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.

Merci Tursiop60 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de Tursiop60
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
5 juil. 2009 à 21:21
0
Merci
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%" />
Commenter la réponse de PCPT
Messages postés
38
Date d'inscription
samedi 20 juin 2009
Dernière intervention
12 septembre 2011
5 juil. 2009 à 21:41
0
Merci
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
Commenter la réponse de Tursiop60
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
5 juil. 2009 à 22:11
0
Merci
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.....
Commenter la réponse de PCPT
Messages postés
38
Date d'inscription
samedi 20 juin 2009
Dernière intervention
12 septembre 2011
5 juil. 2009 à 22:23
0
Merci
Merci,

J'ai essayé de changer mais encore  pareil.
Pour la base je suis pas sur pour le SQLSERVER comment je fait pur savoir.
Commenter la réponse de Tursiop60
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
5 juil. 2009 à 22:53
0
Merci
... 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, .....
Commenter la réponse de PCPT
Messages postés
38
Date d'inscription
samedi 20 juin 2009
Dernière intervention
12 septembre 2011
6 juil. 2009 à 13:39
0
Merci
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.
Commenter la réponse de Tursiop60
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
6 juil. 2009 à 13:54
0
Merci
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
Commenter la réponse de PCPT
Messages postés
38
Date d'inscription
samedi 20 juin 2009
Dernière intervention
12 septembre 2011
6 juil. 2009 à 14:19
0
Merci
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 ?
Commenter la réponse de Tursiop60
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
6 juil. 2009 à 14:30
0
Merci
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....
Commenter la réponse de PCPT
Messages postés
38
Date d'inscription
samedi 20 juin 2009
Dernière intervention
12 septembre 2011
6 juil. 2009 à 14:40
0
Merci
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.
Commenter la réponse de Tursiop60
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
7 juil. 2009 à 06:47
0
Merci
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%" />
Commenter la réponse de PCPT
Messages postés
38
Date d'inscription
samedi 20 juin 2009
Dernière intervention
12 septembre 2011
7 juil. 2009 à 11:42
0
Merci
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".
Commenter la réponse de Tursiop60
Messages postés
38
Date d'inscription
samedi 20 juin 2009
Dernière intervention
12 septembre 2011
7 juil. 2009 à 11:44
0
Merci
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 ?
Commenter la réponse de Tursiop60
Messages postés
38
Date d'inscription
samedi 20 juin 2009
Dernière intervention
12 septembre 2011
7 juil. 2009 à 12:00
0
Merci
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 ?
Commenter la réponse de Tursiop60
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
7 juil. 2009 à 13:04
0
Merci
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

++
Commenter la réponse de PCPT
Messages postés
38
Date d'inscription
samedi 20 juin 2009
Dernière intervention
12 septembre 2011
7 juil. 2009 à 13:42
0
Merci
ok je te remercie je vais tester tout ça
Commenter la réponse de Tursiop60

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.