DataTable an Sub() übergeben (Visual Studio 2005)

tombo82

Mitglied
Hi,
habe in einem Modul mehrere DataTable als Public declariert, die auch im Hauptformular bekannt sind.
In diesen Modul befindet sich u.a. eine Sub name (tabellenname as DataTable), die als Parameter ein DataTable erwartet (tabellenname as DataTable) um diese zu bearbeiten
Der Aufruf erfolgt vom Hauptformular aus, der Übergabeparameter ist eine von den Public declarierten DataTables (call name (tabelle_1))
Das Problem: solange ich innerhalb dieser Sub name (tabellenname as DataTable) auf die Tabelle zugreife (z.b. mit einem DataGrid, kann ich den bearbeiteten Inhalt sehen.
Sobald das Prog. wieder zum aufrufenden Hauptformular zurückkehrt, ist die Tabelle (die ja public ist) wieder/immer noch leer!? :confused:
Habe ja den Verdacht, daß die übergebene Tabelle nur lokal behandelt wird, aber ich finde keinen (für mich als Einsteiger) brauchbaren Tip, wie ich auf die DataTable global verweisen kann. Habe auch nichts über den Einsatz von Zeigern gefunden (wie man sie declariert usw.)
Kann mir da jemand auf die Sprünge helfen? Vllt. kleines Beispiel o.ä.

Danke
tombo82
 
Soweit ich weiß werden in VB Parameter standardmäßig als ByVal deklariert, änder das ByVal mal in ByRef, dann müsste es eigentlich klappen.

Also

Visual Basic:
public sub Name ( ByRef tabelle as DataTable)
 
jo, das mit "ByRef" hat auf anhieb funktioniert, riesen Dank!! :)

In deinen Beispiel ist mir aufgefallen, daß du "puplic Sub...." geschrieben hast.
Bisher habe ich meine Sub's einfach als "Sub (...)" erstellt. Ist das ähnlich, wie bei den Variablen?
Wann sollte man "Public" verwenden & wann besser nicht?

Wie gehe ich eigentlich vor, wenn ich mein DataTable jetzt ausdrucken möchte ? Oder wenigsten als csv-Datei abspeichern kann, um es mit einen anderen Prog. zu drucken?

Nochmals Danke
tombo82
 
Zuletzt bearbeitet:
Wenn die Methode auch außerhalb der Klasse verfügbar sein soll, dann kannst du Public verwenden, wenn nicht dann verwende Private. Verwendest du nur Sub ohne einen Zugriffmodifizierer, müssten die als Private deklariert werden. Das ich hier Public gewählt habe war willkürlich.

Ich persönlich bevorzuge die Methode immer einen Modifizierer zu verwenden. Es gibt noch andere Zugriffsmodifizierer, lies dazu einfach mal in der MSDN oder einem Buch zu VB2005/2008 nach.

Wenn du einen DataTable drucken oder als CSV speichern willst, benutze einfach mal die Forensuche oder Google, dieses Thema wurde schon zig mal behandelt. ;-)
 

Neue Beiträge

Zurück