Supportnet Computer
Planet of Tech

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


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.


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

Antwort 4 von Teerbaby

@Renegade
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 möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: