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

mirela26 Messages postés 44 Statut Membre -  
neofenix Messages postés 145 Statut Membre -
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.
Configuration: Windows XP
Firefox 2.0.0.16

11 réponses

  1. mirela26 Messages postés 44 Statut Membre
     
    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?
    1
  2. neofenix Messages postés 145 Statut Membre 2
     
    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.
    1
  3. neofenix Messages postés 145 Statut Membre 2
     
    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();
    0
  4. mirela26 Messages postés 44 Statut Membre
     
    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?!
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. neofenix Messages postés 145 Statut Membre 2
     
    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
    -1
  7. mirela26 Messages postés 44 Statut Membre
     
    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?
    -1
  8. mirela26 Messages postés 44 Statut Membre
     
    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!!
    -1
  9. neofenix Messages postés 145 Statut Membre 2
     
    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.
    -1
  10. mirela26 Messages postés 44 Statut Membre
     
    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!!!
    -1
  11. neofenix Messages postés 145 Statut Membre 2
     
    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
    -1
  12. neofenix Messages postés 145 Statut Membre 2
     
    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
    
    -3