Datatable

Paramba Messages postés 47 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 3 septembre 2012 - 10 sept. 2006 à 12:56
Paramba Messages postés 47 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 3 septembre 2012 - 27 sept. 2006 à 20:52
Bonjour
Help me!! voilà:


Je construis une table dans un dinaset (Asp.net-Sql Server) comme il suit:


Sub Page_Load(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)



If



Not
Page.IsPostBack

Then


.........................................
Dim row1
As DataRow, ChSel
As
String








Dim
MyDT

As



New
DataTable(

"TableArbre"
)


Dim
MyRow

As
DataRowMyDT.Columns.Add(


New
DataColumn(

"Code"
))MyDT.Columns.Add(


New
DataColumn(

"Type"
))MyDT.Columns.Add(


New
DataColumn(

"Nom"
))MyDT.Columns.Add(


New
DataColumn(

"Nature"
))
'Je remplis la table
end sub
La table se construit correctement!!
La question : Comment arriver à récuperer les données de cette table dans une autre routine sur la même page!!
Merci...
Je bloque depuis hier soir! J ai l impression que quelque chose de très simple  m échappe!

17 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
13 sept. 2006 à 21:53
Salut

Tu met ta variable est private de ta classe Page.aspx


Sinon tu la passes en parametres a tes fonctions.

Moi je prefere la premiere methodes si ta page est pas trop grande.


class mapage

private MyDT as datatable

Sub Page_Load(ByVal sender AsObject, ByVal e As System.EventArgs)

Dim row1 As DataRow, ChSel AsString

MyDT = New DataTable( "TableArbre" )

Dim MyRow As DataRow
.....
end sub

end class
0
crilun Messages postés 114 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 17 octobre 2006
13 sept. 2006 à 21:53
crilun

dans tes declarations au dessus de ton page load :

Dim MyDT as DataTable

dans ton page load :

MyDT=
New DataTable(
"TableArbre")

Ainsi MyDt ne sera plsu connu uniquement dans ta sub pageLoad mais dans toutes les sub et fonctions de ta page.
0
Paramba Messages postés 47 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 3 septembre 2012
15 sept. 2006 à 18:36
Mille fois merci!!!
0
Paramba Messages postés 47 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 3 septembre 2012
15 sept. 2006 à 19:25
Malheureusement je ne peux pas récupérer ma table (dans une routine) en me basant sur une déclaration globale.
MyDT=New DataTable("TableArbre") me renvoie une table vide!!
0

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

Posez votre question
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
15 sept. 2006 à 21:55
Salut,

Comment tu geres ton cas pour avoir ce comportement.
Car MyDT=New DataTable("TableArbre")
--> Nouvelle table bien sur
MyDT=DataTable("TableArbre")
--> Contenu de la tale

Voila
0
Paramba Messages postés 47 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 3 septembre 2012
15 sept. 2006 à 22:45
Voila::

Public MyDT
As DataTable
Dim

MyDT As DataTable

Sub Page_Load(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)

If
Not Page.IsPostBack
Then
...................................
'Remplissage table
....................................
End if
......................

Sub

AffItems(ByVal sender AsObject, ByVal e As System.EventArgs)

........................................................................
MyDT =

New DataTable(
"TableArbre")MsgBox(

"Je suis ds AffItems avec " & MyDT.Rows.Count)

Dim rowdic
As DataRow
................................................
End sub
Le msgbox renvoie comme nr d enregistrements 0!!!
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
15 sept. 2006 à 23:01
Salut

Ta base de données est ou dans le repertoire de debug ou bin

Essai de voir en la mettant dans un autre reportoire
!= de celui de l'application ?


Alors elle est ecrasé a chaque fois.

C'est pour être le soucis.
0
Paramba Messages postés 47 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 3 septembre 2012
15 sept. 2006 à 23:28
...mais une base SQL Server est placée par défaut ds.../MYSQL/Data!!!
J ai essayé passer la table par une variable session! Ca marche impécablement! Mais est -elle la bonne solution?
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
16 sept. 2006 à 16:02
Salut,

Ce n'est pas la bonne solution, je pense.
Car je pense que tu as une erreur de conception de la page dans ce cas.

C'est peusx être un probleme de postback entre tes pages.
Désolé je n'ai pas de dotnet sous la main pour pouvoir de repondre plus précsisement.

Essai de votre si ton code ne fais par un postback et ecrase ta table.

Voila
0
Paramba Messages postés 47 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 3 septembre 2012
16 sept. 2006 à 22:57
Schématiquement mon cas se réduit au suivant:
<%

@
Page
Language="VB"
debug="true" %><%

@
Import
Namespace="System.Data" %><%

@
Import
Namespace="System.Data.SqlClient" %><%

@
Assembly
Name=System.web %>
<!

DOCTYPE
html
PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><

script
runat="server">

Public MyDT
As DataTable

Sub Page_Load(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)

Dim MyRow
As DataRow, I
As
Integer, Nr
As
Integer

Dim MyDT
As
New DataTable(
"TableArbre")

If
Not Page.IsPostBack
Then

MyDT.Columns.Add(

New DataColumn(
"Code"))MyDT.Columns.Add(

New DataColumn(
"Type"))

For I = 1
To 5MyRow = MyDT.NewRow
MyRow(0) "Code1" & IMyRow(1)

"Type1" & IMyDT.Rows.Add(MyRow)

Next

End
IfNr = MyDT.Rows.Count

MsgBox(Nr)

End
Sub

Sub TET(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)

Dim Dic
As
New DataTable(
"TableArbre"), Nr
As
IntegerNr = Dic.Rows.Count

MsgBox(Nr)

End
Sub</

script><

html
xmlns="http://www.w3.org/1999/xhtml"
><

head
runat="server">

<title>Untitled Page
</title></

head><

body>

<form
id="form1"
runat="server">

<asp:Button
ID="Button1"
runat="server"
onclick=Tet
Text="Button"
/>

</form></

body></

html>
......................
Dans TET le nombre renvoyé est égal à 0!!!
0
Paramba Messages postés 47 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 3 septembre 2012
17 sept. 2006 à 16:34
En fin de compte je me suis arrêté sur la solution suivante :


<ol style="MARGIN-TOP: 0cm" type="1">
<li class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt">
ClassTable.vb<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>


</li>
</ol>

Imports
Microsoft.VisualBasic





Imports
System.Web.Services





Imports
System.Data





 





Public

Class truc : Inherits WebService






   
Public MyDT As datatable = New datatable("TableArbre")






   
Public
Sub creat()






        MyDT.Columns.Add(New DataColumn("Code"))






        MyDT.Columns.Add(New DataColumn("Type"))






       
Dim MyRow As DataRow, I AsInteger






       
For I = 1 To 5






            MyRow = MyDT.NewRow






          
 MyRow(0) = "Code1" & I






            MyRow(1) = "Type1" & I






            MyDT.Rows.Add(MyRow)






       

Next






   
End
Sub






End

Class





<ol style="MARGIN-TOP: 0cm" type="1" start="2">
<li class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt">
Test1.aspx


</li>
</ol>

%
@

Page
Language
="VB"
debug
="true"
%>






<%
@

Import
Namespace
="System.Data"
%>






<%
@

Import
Namespace
="System.Data.SqlClient"
 
%>






<%
@

Assembly
Name
=System.web
%>






<%
@

Assembly
Src
="ClassTable.vb"
%>






 





<!
DOCTYPE

html
PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">






 





<
script

runat
="server">







  
      








   
Sub Page_Load(ByVal sender AsObject, ByVal e As System.EventArgs)






      
If
Not Page.IsPostBack Then






           
Dim dic AsNew truc






           
Dim Matable AsNew DataTable






            dic.creat()






            Matable = dic.MyDT






           
Dim nr AsInteger






            nr = Matable.Rows.Count






            MsgBox("dic" & nr)






       
End
If







 
  
End
Sub






</
script
>





 





<
html

xmlns
="http://www.w3.org/1999/xhtml"
>






<
head

runat
="server">







   
<
title
>Untitled Page</title>





</
head
>





<
body
>






   
<
form
id
="form1"
runat
="server">







   








   
    
</
form
>






</
body
>





</
html
>





 Des commentaires?
0
Paramba Messages postés 47 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 3 septembre 2012
25 sept. 2006 à 20:52
Au fait cette solution ne m arrange pas!! Est ce que quelq'un pourrait m aider?
En bref j ai besoin d'une solution qui me permette de créer une table ds une procedure et y ajouter des enregistements à partir d'une autre procédure.. sur la même page ASP?
La déclaration des variables type public ne me fournit aucun résultat .. et je n arrive pas à construire une classe!
Merciiiiiiiiiiiiiiiii
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
25 sept. 2006 à 21:37
Salut

1 --> La creation de table est en general due a une mauvaise conception.
Il y a peu de cas ou cette technique est vraiment indispensable.

2 --> C'est normal que tes tables ne s'enregistrent pas en base
Les datables sont des tables dotnet (independant de la base)
c'est une abstraction pour uniformiser les developpement.
Pour creer des tables en base de données, il faut utiliser les ordres
sqlcommand ("create datatable ....") je pense que ca focntionne
ou des procedure stockée
exec " create datatable " + @nom + " ....."


Voila
0
Paramba Messages postés 47 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 3 septembre 2012
25 sept. 2006 à 21:49
1. Je ne vois pas en quoi s agirait -il d une mauvaise technologie.  Et pourquoi le rattacher forcément à une base de données existante.. s agissant d une table temporaire...
2. Question mal comprise!! Je ne veux pas créer une table ds une base de données existante!!
REmarque
A relire ma question attentivement!!
0
crilun Messages postés 114 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 17 octobre 2006
25 sept. 2006 à 22:22
crilun
quand tu dis table tu veut dire datatable alors? et procédure : Stockée ou asp ?
0
Paramba Messages postés 47 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 3 septembre 2012
25 sept. 2006 à 22:32
Mais... evidemment...
Table = une table créee à l aide de Datatable
et procédure = procédure asp.net
0
Paramba Messages postés 47 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 3 septembre 2012
27 sept. 2006 à 20:52
Alors..personne?
0
Rejoignez-nous