Array als return


JoeBloggs

Mitglied
Hallo,

ich glaube ja ich stehe ein wenig auf dem schlauch, auf jeden Fall komme ich nicht weiter.

Ich lese eine Access Tabelle aus und bekomme 3 Spalten in einer Zeile zurück Diese 3 einzelnen Werte möchte ich nun gern irgendwie per return zurückschicken. Wie kann ich das realisieren?

Kann auch alles als String zurückschicken, doch wie zerlege ich den String in der aufrufenden klasse?

Besten Dank
Markus

Code:
	Public Shared Function Request3(ByVal mySelectQuery As String) As Array
   
   		'== Connect to DB == 
   		Dim myConnString As String
   		Dim myReturnArray(3) As String
   
   		myConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb"
   		Dim myConnection As New OleDbConnection(myConnString)
   		Dim myCommand As New OleDbCommand(mySelectQuery, myConnection)
   		myConnection.Open()
   		Dim myReader As OleDbDataReader
   		myReader = myCommand.ExecuteReader()
   		' Always call Read before accessing data.
   		If myReader.HasRows Then
   			Do While myReader.Read()
 				'very dirty - temporary solution
 			 'Console.WriteLine(vbTab & "{0}", myReader.GetString(0))
   			    myReturnArray(0) = myReader.GetString(0)
   			    myReturnArray(1) = myReader.GetString(1)
   			    myReturnArray(2) = myReader.GetString(2)
   			Loop
   		Else
   			Console.WriteLine("No rows returned.")
   		End If
   
   		' always call Close when done reading.
   		myReader.Close()
   		' Close the connection when done with it.
   		myConnection.Close()
   
   		Return myReturnArray(3)
   
   	End Function
Der gepostete Code funktioniert natürlich nicht, hatte als Rückgabe wert erst String, aber das klappt nicht....
 
Zuletzt bearbeitet:

ChMaster

Mitglied
hi,

warum dimensionierst du myReturnArray(3) als String?
dann ist klar das du einen String zurück bekommst und
kein Array ... :)

mach doch:

Dim myReturnArray(3) As Array
 

Julian Maicher

Erfahrenes Mitglied
hi,

warum dimensionierst du myReturnArray(3) als String?
dann ist klar das du einen String zurück bekommst und
kein Array ...

mach doch:

Dim myReturnArray(3) As Array
Ehm, nein!
myReturnArray ist natürlich ein Array, auch wenn es als String deklariert wurde.
Deklariert man ein Array als String, besitzen nur die einzelnen Dimensionen den Datentyp String. Das ist also so schon korrekt.
Nur:
Code:
Public Shared Function Request3(ByVal mySelectQuery As String) As Array
   ...
   Dim myReturnArray(2) As String 'Du brauchst nur 3 Dimensionen
   ...
   Return myReturnArray 
   ...
End Function
Wenn du myReturnArray(3) zurücklieferst, dann ist das natürlich ein String. Es ist schließlich nur die 3 Dimension eines als String deklarierten Arrays.
Du musst schon das ganze Array zurückliefern!

Du könntest auch mit Datasets, Datatables bzw. Datarows arbeiten und diese dann als Rückgabewert der Funktion liefern. Sieht auf den ersten Blick vielleicht komplizierter aus, ist es aber nicht - wohl eher leichter.
Und wenn .NET solche tollen Objekte liefert, kann man sie auch ruhig benutzen.
Du kannst es dir ja mal angucken: System.Data
 
Zuletzt bearbeitet:

JoeBloggs

Mitglied
Hi,

danke euch beiden, habe das problem mittlerweile über ein Objekt geregelt und das UML Diagramm so ein wenig ausgetrickst. Ich werde das mit dem Array aber auch nochmal ausporobieren, man lernt ja nie aus.

Gruss
markus