Datatable

Signaler
Messages postés
47
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
3 septembre 2012
-
Messages postés
47
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
3 septembre 2012
-
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

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
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
Messages postés
114
Date d'inscription
lundi 10 mai 2004
Statut
Membre
Dernière intervention
17 octobre 2006

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.
Messages postés
47
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
3 septembre 2012

Mille fois merci!!!
Messages postés
47
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
3 septembre 2012

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!!
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
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
Messages postés
47
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
3 septembre 2012

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!!!
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
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.
Messages postés
47
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
3 septembre 2012

...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?
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
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
Messages postés
47
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
3 septembre 2012

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!!!
Messages postés
47
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
3 septembre 2012

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?
Messages postés
47
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
3 septembre 2012

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
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
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
Messages postés
47
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
3 septembre 2012

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!!
Messages postés
114
Date d'inscription
lundi 10 mai 2004
Statut
Membre
Dernière intervention
17 octobre 2006

crilun
quand tu dis table tu veut dire datatable alors? et procédure : Stockée ou asp ?
Messages postés
47
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
3 septembre 2012

Mais... evidemment...
Table = une table créee à l aide de Datatable
et procédure = procédure asp.net
Messages postés
47
Date d'inscription
vendredi 18 novembre 2005
Statut
Membre
Dernière intervention
3 septembre 2012

Alors..personne?