Supportnet / Forum / Anwendungen(Java,C++...)
Funktion die ein Recordset zurückgibt in VB?
Frage
Hallo zusammen!
Ich möchte mir so eine Funktion (in Visual Basic) basteln, die als Rückgabewert ein Recordset(also das Ergebnis einer SQL Abfrage) zurückgibt. Ich habe da was versucht, doch es klappt irgendwie noch nicht so ganz...Ich verbinde mich zuerst mit einer MySQL Datenbank, dann mache ich eine Abfrage und möchte eben das Resultat dann zurückgeben.
Hier der Code:
==========================================================
Public Function MakeConnRead(server As String, database As String, user As String, pwd As String, sqlstatment As String)
Dim Conn As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim connstring As String
connstring = "Driver=MySQL; Server=" + server + ";" + "Database=" + database + ";"
'Connection herstellen...
Set Conn = New ADODB.Connection
Conn.Provider = "MSDASQL"
Conn.Mode = adModeRead
Conn.Open connstring, user, pwd
Conn.CursorLocation = adUseClient
'Abfrage machen...
Set Rs = New ADODB.Recordset
Rs.CursorLocation = adUseClient
Rs.Open sqlstatment, Conn, adOpenKeyset, adLockReadOnly
MakeConnRead = Rs
End Function
==========================================================
Die Prozedur, die diese Funktion aufruft sieht folgendermassen aus:
==========================================================
Private Sub Form_Load()
Dim server As String, database As String, user As String, pwd As String
Dim Datas As ADODB.Recordset
Dim sql As String
sql = "SELECT p.plz_zahl as PLZ, o.ort_name as Ort FROM plz as p JOIN ort as o WHERE p.ort_id = o.ort_id"
server = mdlConnection.server
database = mdlConnection.database
user = mdlConnection.user
pwd = mdlConnection.pwd
Set Datas = New ADODB.Recordset
Datas = mdlConnection.MakeConnRead(server, database, user, pwd, sql)'Hier wird die Funktion aufgerufen....
Set dgAdressen.DataSource = Datas
End Sub
===========================================================
Wäre cool, wenn jemand eine Lösung meines Problems hat.
Danke.
mfg olimination
Antwort 1 von Teerbaby
probier mal das:
Public Function MakeConnRead(server As String, database As String, user As String, pwd As String, sqlstatment As String) as adodb.recordset
Public Function MakeConnRead(server As String, database As String, user As String, pwd As String, sqlstatment As String) as adodb.recordset
Antwort 2 von Renegade
@teerbaby, so wird das auch nicht funzen. Der Recordset muss by reference in die Funktion übergeben werden, damit die Auswertung funktioniert.
Probiers mal das, so läuft es bei mir.
Nen Kleinen Tipp noch, Server, Database, also alles bis auf SQL-Statement würde ich kapseln.
Funktion:
Public Function MakeConnRead(byval server As String,byval database As String,byval user As String,byval pwd As String,byval sqlstatment As String, byref rs as adodb.recordset)
.....
End Function
Aufruf:
dim rs as adodb.recordset
call MakeConnRead(..,...,...,...,...,...,rs)
msgbox rs.recordcount
Probiers mal das, so läuft es bei mir.
Nen Kleinen Tipp noch, Server, Database, also alles bis auf SQL-Statement würde ich kapseln.
Antwort 3 von olimination
Hey Jungs!
Danke für eure Antworten! Es hat nun prima geklappt mit diesem Uebergeben "byref". Danke.
mfg olimination
Danke für eure Antworten! Es hat nun prima geklappt mit diesem Uebergeben "byref". Danke.
mfg olimination
Antwort 4 von Teerbaby
@Renegade
Eigentlich übergibt VB Parameter defaultmäßtig by reference.
Naja, Hauptsache es klappt jetzt :)
Eigentlich übergibt VB Parameter defaultmäßtig by reference.
Naja, Hauptsache es klappt jetzt :)
Antwort 5 von Renegade
@teerbaby
ich bin ja kein defaultmäßiger basic-programmierer und bevorzuge die Übergabeangabe byval bzw. byref.
Kleiner Tipp für dich: Bei VB.NET ist by reference nicht mehr defaultmässig!
ich bin ja kein defaultmäßiger basic-programmierer und bevorzuge die Übergabeangabe byval bzw. byref.
Kleiner Tipp für dich: Bei VB.NET ist by reference nicht mehr defaultmässig!