bdl20042000
Messages postés63Date d'inscriptionmercredi 18 août 2004StatutMembreDernière intervention19 mai 2009
-
9 août 2006 à 11:04
bdl20042000
Messages postés63Date d'inscriptionmercredi 18 août 2004StatutMembreDernière intervention19 mai 2009
-
9 août 2006 à 13:56
Bonjour,
je débute en asp.net.
Je souhaite avoir les mêmes facilités de navigation que avec un recordset sous VB.
Aussi après avoir regarder un peu les différents sources sur le site, j'ai assemblé ce petit bout de code :
Imports System.Data.OleDb
Public Class Annuaire
Inherits System.Web.UI.Page
Private Connection As New OleDbConnection
Private myDataView As DataView
Private MyDataSet As DataSet
Private position As Integer
Public Sub connecter(ByVal nombd As String)
Try
Connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & nombd
Connection.Open()
Catch ex As Exception
lbPosition.Text = ex.Message
End Try
End Sub
Public Sub deconnecter()
Try
Connection.Close()
Catch ex As Exception
lbPosition.Text = ex.Message
End Try
End Sub
Public Function access(ByVal requetesql As String) As DataSet
Dim MyAdapter As OleDbDataAdapter = New OleDbDataAdapter
Dim MyDataSet As DataSet = New DataSet("MesDonnées")
Dim StrConnect As String
Dim MyCommand As OleDbCommand
Dim requete As String
Try
MyCommand = New OleDbCommand(requetesql, Connection)
MyAdapter.SelectCommand = MyCommand
MyDataSet.Clear()
MyAdapter.Fill(MyDataSet, "fichier")
'A ce niveau les donnes résultantes de la requete
'se trouvent dans => MyDataSet.Tables(0)
Return MyDataSet
Catch ex As Exception
lbPosition.Text = ex.Message
End Try
End Function
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Placez ici le code utilisateur pour initialiser la page
If Not Page.IsPostBack Then
connecter(Server.MapPath("DB\Base annuaire.mdb"))
position = 0
MyDataSet = access("select * from tblannu where fldnom like 'L%' order by fldNom")
deconnecter()
myDataView = New DataView(MyDataSet.Tables(0))
myDataView.Sort = "fldNom"
tbNom.Text = myDataView(0)("fldNom")
tbPrenom.Text = myDataView(0)("fldPrenom")
lbPosition.Text = "1/" & myDataView.Count
End If
End Sub
Private Sub bDebut_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bDebut.Click
Affichage(0)
End Sub
Private Sub bSuivant_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bSuivant.Click
position = position + 1
Affichage(position)
End Sub
Private Sub Affichage(ByVal i As Integer)
tbNom.Text = myDataView(i)("fldNom")
tbPrenom.Text = myDataView(i)("fldPrenom")
lbPosition.Text = i + 1 & "/" & myDataView.Count
End Sub
Le problème est que dès que je clique sur le bouton Suivant, j'ai un message "Détails de l'exception: System.NullReferenceException: La référence
d'objet n'est pas définie à une instance d'un objet."
En regardeant via l'"espion" myDataView est vide, quelqu'un peut me dire où est la grosse erreur ?
Merci pour tout aide que vous pourriez m'apporter.
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 9 août 2006 à 11:35
Bonjour,
quand tu click sur suivant ispostback sera vrai donc mydataview sera null d'ou l'exception :-/ pour cela il faut faire un
if page.ispostback then
mondataset = chargement du dataset
session("mondsamoi") = mondataset
else
mondataset = session("mondsamoi")
end if
si tu ne sauvegardes pas ton datast entre 2 passages tu ne vas pas pouvoir y acceder :-p il ne faut pas oublier qu'a chaque requete l'instance de la page est détruite ...
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 9 août 2006 à 12:24
Chaque Thread est killé aprés la fin de la request tu peux donc pas avoir de variable global ...
Si tu veux pas mettre dans la session tu peux le mettre en variable application, cela sera partagé pour tous les users contrairement aux variables session.
bdl20042000
Messages postés63Date d'inscriptionmercredi 18 août 2004StatutMembreDernière intervention19 mai 2009 9 août 2006 à 12:10
Merci de cette réponse rapide.
Comment dois je faire pour avoir des variables "à porter globale" comme en VB, sans utiliser les "session" ?
Car comme pour le Dataview, je veux conserver le variable "position"
Vous n’avez pas trouvé la réponse que vous recherchez ?
bdl20042000
Messages postés63Date d'inscriptionmercredi 18 août 2004StatutMembreDernière intervention19 mai 2009 9 août 2006 à 13:20
Question de débutant : où déclare t'on les variables application ?
J'ai voulu le déclarer dans global.aspx, mais dans ce cas sur ma page la variable n'est pas reconnue.