Posez votre question Signaler

La référence d'objet n'est pas définie à ????

mirela26 43Messages postés vendredi 8 août 2008Date d'inscription 7 janvier 2009 Dernière intervention - Dernière réponse le 25 août 2008 à 17:19
Bonjour,
La référence d'objet n'est pas définie à une instance d'un objet.
voici l'erreur que je génère cette fonction:
Public Function Extraire(ByVal Table As String, ByVal champs As String, ByVal conditions As String) As String
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Visual Studio 2005\WebSites4\App_Data\Bdd.mdb;"
Dim SQL As String
cn.Open()
SQL = "select " & champs & " as mmAlias from " & Table & " where " & conditions & ""
     While reader.Read()

Extraire = reader.GetString(0)
End While
cn.Close()
End Function

une suggestion?!
merci.
Lire la suite 
Réponse
+1
moins plus
toujours la même erreur neofenix
j'aimerai bien de plus pouvoir utiliser la méthode commandSELECT, t'as une idée sur comment le contourner?
Ajouter un commentaire
Réponse
+1
moins plus
Salut mirela,
Désolé je n'ai pas trés bien compris ce que tu souhaitais faire avec ta base de données et la page.
Si tu pouvais expliquer avec un peu plus de precision pour que je puisse essayer de t'aider.
Ajouter un commentaire
Réponse
+0
moins plus
salut mirela,

as tu definis reader.Read() car dans ton bout de code il ne l'est pas.
sinon si j'ai bien compris tu obtiens cette erreur sur cette ligne donc a mon avis:
soit il est mal definis
soit il est pas definis
soit il est null est donc essayer de lire cette donnée te fait planter

tiens aurais tu pas oublié ceci:
Dim reader As SqlDataReader = = sql.ExecuteReader();
Ajouter un commentaire
Réponse
+0
moins plus
salut neofenix

merci pour ta réponse!
en faite j'essaie d'écrire un code qui permet d'afficher à partir d'un lien un champ contenant comme valeur une page aspx. Elle sera affiché en fonction de l'email récupérer avec querystring.
en bref:
ma table employés qui contient un champ website

à la génération, reader=Nothing
je comprend pas pourquoi?

voici mon code:

********************mes variables ************************
Public cn As New ADODB.Connection
Public command As New Data.OleDb.OleDbCommand 'Commande SQL
Public reader As Data.OleDb.OleDbDataReader 'Parcours les enregistrements


************************ma function Extraire****************
Public Function Extraire(ByVal Table As String, ByVal champs As String, ByVal conditions As String) As String

cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Visual Studio 2005\WebSites4\App_Data\Bdd.mdb;"

Dim SQL As String
cn.Open()
SQL = "select " & champs & " as mmAlias from " & Table & " where " & conditions & ""
CommandSELECT(SQL)

While reader.Read()
Extraire = reader.GetString(0)
End While

End Function

************************ma procédure CommandSQL*******************
Public Sub CommandSELECT(ByVal LeSQL As String)

command = New Data.OleDb.OleDbCommand(LeSQL, cn)
If cn.State = ConnectionState.Closed Then
cn.Open()
End If
command.CommandTimeout = 10000
reader = command.ExecuteReader 'Exécute la commande
End Sub

************************Action à exécuter lors du clique sur le lien*************
Sub BtnSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs)

Dim web As String
web = Extraire("Employes", "Website", "email='" & Request.QueryString("email") & "'")

End Sub

quelques suggestions?!
Ajouter un commentaire
Réponse
-1
moins plus
oui ton reader ne prend pas l'execution de ta requete donc bien si il n'est pas initialisée est est donc vide ajoute simplement

reader= sql.ExecuteReader()

juste avant While reader.Read()

desolé j'avais mal compris ton code

pour moi le probleme peut venir de ta fonction qui ne garde pas en memoire ta variable essaye en retournant ton reader
Ajouter un commentaire
Réponse
-1
moins plus
salut
j'ai trouvé la cause;
le champ à retourner de ma table est vide,et en insérant des valeurs,j'ai plus cette erreur!!
seulement je sais pas comment afficher la page web.
dans mon code ,il est question de recupérer le contenu du champ website qui par exemple contient mapage.aspx
mais alors comment afficher la page web?
Ajouter un commentaire
Réponse
-1
moins plus
salut neofenix
j'ai dans ma base, une table Employés qui contient un champ Website. Et le contenu de ce champ est le nom d'une page web,exemple mapage.aspx
et j'aimerai afficher cette page à partir d'un lien.et mon code ne permet que d'extraire la valeur de ma page et le mettre dans une variable web(voir Sub BtnSubmit_Click).
j'espère que çà va maintenant!!
Ajouter un commentaire
Réponse
-1
moins plus
si j'ai bien compris tu veux mettre ta réponse de ta requête comme lien donc:
Dim instance As HyperLink
instance.NavigateUrl = value

où value est le résultat de ta requête.
Ajouter un commentaire
Réponse
-1
moins plus
merci neofenix pour ta réponse
mais il manque un petit quelque chose:il m'affiche cette erreur
la variable 'instance' est utilisée avant qu'une valeur ne lui ai été assignée

************************Action à exécuter lors du clique sur le lien*************
Sub BtnSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs)

Dim web As String
Dim instance As HyperLink

web = Extraire("Employes", "Website", "email='" & Request.QueryString("email") & "'")
instance.NavigateUrl = value
End Sub


Aussi j'ai trouvé un moyen d'afficher le lien dans un datalist,seulement j'ignore comment personnaliser le titre du lien:
<asp:DataList ID="DataList2" runat="server" DataSourceID="AccessDataSource2">
<ItemTemplate>
<a href='<%# DataBinder.Eval(Container.DataItem, "Website") %>''><%#DataBinder.Eval(Container.DataItem, "Website")%>Etablir Ma Page</a>

<br />
<br />
</ItemTemplate>
</asp:DataList>


avec ce code,il m'affiche et le titre et le nom de ma page
donc j'ai à l'affiche du style:
mapage.aspxEtablir Ma Page

as-tu une idée?
merci neofenix!!!
Ajouter un commentaire
Réponse
-1
moins plus
avec ceci
si tu veux afficher etablir ma page:

<asp:DataList ID="DataList2" runat="server" DataSourceID="AccessDataSource2">
<ItemTemplate>
<a href='<%# DataBinder.Eval(Container.DataItem, "Website") %>''>Etablir Ma Page</a>

<br />
<br />
</ItemTemplate>
</asp:DataList> 


soit tu veux afficher l'adresse mail:

<asp:DataList ID="DataList2" runat="server" DataSourceID="AccessDataSource2">
<ItemTemplate>
<a href='<%# DataBinder.Eval(Container.DataItem, "Website") %>''><%#DataBinder.Eval(Container.DataItem, "Website")%></a>

<br />
<br />
</ItemTemplate>
</asp:DataList> 


en ce qui concerne ton probleme de ton hyperlink sinon:
tu le crée dans ta page aspx avec comme id hyperlink1 par exemple et dans ton code vb tu fais:

Sub BtnSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim web As String
web = Extraire("Employes", "Website", "email='" & Request.QueryString("email") & "'")
hyperlink1.NavigateUrl = value
End Sub
Ajouter un commentaire
Réponse
-3
moins plus
Public Sub CommandSELECT(ByVal LeSQL As String)

command = New Data.OleDb.OleDbCommand(LeSQL, cn)
If cn.State = ConnectionState.Closed Then
cn.Open()
End If
command.CommandTimeout = 10000
return command.ExecuteReader 'Exécute la commande
End Sub 


et tu as donc:

Dim SQL As String
cn.Open()
SQL = "select " & champs & " as mmAlias from " & Table & " where " & conditions & ""
reader=CommandSELECT(SQL)

While reader.Read()
Extraire = reader.GetString(0)
End While
Ajouter un commentaire
Ce document intitulé «  La référence d'objet n'est pas définie à ????  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

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.

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