Ein Dataset global deklarieren

12/09/2007 - 18:20 von Tamara Mikes | Report spam
Salü alle zusammen. Irgendwie stehe ich gerade total auf dem Schlauch.

Ich habe im Projektmappenexplorer eine Klasse clsMeineDaten hinzugefügt.

Dort habe ich folgendes programmiert:

Shared Sub AdressenLaden()
Dim vSQL As String = "SELECT * FROM tblAdressen"
Dim daAdressen as OleDbDataAdapter
daAdressen = New OleDbDataAdapter (vSQL, ModulIStart.dbConString)
daAdressen.fill(myDT_Adressen)
...
End Sub


Wenn ich nun
Dim myDT_Adressen As NewDataTable
in der gleichen Shared Sub deklariere, dann geht das ja wohl innerhalb
dieser Shared Sub.
Wo aber deklariere ich myDT_Adressen As NewDataTable wenn ich dieses Teil in
allen meinen Klassen verwenden möchte?

Habe versucht mit
Public myDT_Adressen As New DataTable()

Aber dann bekomme ich die Fehlermeldung bei
daAdressen.fill(myDT_Adressen) dass nicht ohne explizite Instanz einer
Klasse aus verwiesen werden...
Was heisst das? Wie muss ich denn die DataTable ansprechen?

Eine einfache Variabel habe ich ja mit
Public vBenutzername As String
am Anfang der Klasse definiert und spreche die an mit
msgBox KlassenName.Instance.vBenutzername
Aber wie mach ich das mit der DataTable?

Wenn ich sie mit Public deklariere, kann ich innerhalb der eigenen Klasse
nicht mehr darauf zugreifen.

Mein Ziel ist es, dass ich im ganzen Projekt überall auf die myDT_Adressen
zugreifen kann.


Vielen Dank für Hinweise
Gruss Tamara
 

Lesen sie die antworten

#1 Peter Götz
12/09/2007 - 20:32 | Warnen spam
Hallo Tamara,

Ich habe im Projektmappenexplorer eine Klasse
clsMeineDaten hinzugefügt.

Dort habe ich folgendes programmiert:

Shared Sub AdressenLaden()
Dim vSQL As String = "SELECT * FROM tblAdressen"
Dim daAdressen as OleDbDataAdapter
daAdressen = New OleDbDataAdapter (vSQL, ModulIStart.dbConString)
daAdressen.fill(myDT_Adressen)
...
End Sub


Wenn ich nun
Dim myDT_Adressen As NewDataTable
in der gleichen Shared Sub deklariere, dann geht
das ja wohl innerhalb dieser Shared Sub.



Warum deklarierst Du die Sub als "Shared"?


Wo aber deklariere ich myDT_Adressen As
NewDataTable wenn ich dieses Teil in
allen meinen Klassen verwenden möchte?

Habe versucht mit
Public myDT_Adressen As New DataTable()

Aber dann bekomme ich die Fehlermeldung bei
daAdressen.fill(myDT_Adressen) dass nicht ohne
explizite Instanz einer Klasse aus verwiesen werden...
Was heisst das?



Shared und Deine Public myDT_Adressen, das passt
nicht zusammen.

Wie muss ich denn die DataTable ansprechen?



Was genau willst Du denn erreichen?
Soll mit jedem Aufruf Deiner Sub eine neue DataTable
erstellt und mit Daten gefüllt werden?

Dann wàre eine Function, welche die neue DataTable
zurückgibt, das Richtige.

Oder soll einmal eine DataTable erstellt und mit Daten
gefüllt werden und anschliessend von anderen Modulen
aus auf eben diese einzige DataTable zugegriffen werden?

Dann könnte das etwa so aussehen:

Imports System.Data.OleDb
Public Class Class1
Private mCnn As OleDbConnection
Private mDTAdressen As DataTable

Public ReadOnly Property DTAdressen() As DataTable
Get
Return mDTAdressen
End Get
End Property

Public Sub ReadAdressen()
If mCnn Is Nothing Then
mCnn = New OleDbConnection("Connectionstring")
mCnn.Open()
End If
Dim DA As New OleDbDataAdapter _
("Select * From Tabelle", mCnn)

DA.Fill(mDTAdressen)
End Sub
End Class

Die Sub ReadAdressen() könnte evtl. bereits im Konstruktor
(Sub New) der Klasse aufgerufen werden.

Das ganze sollte natürlich noch um eine passende
Fehlerbehandlung erweitert werden.

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen