Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1732to1736
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Daten aus Access direkt in Listbox einlesen (SQL)

Daten aus Access direkt in Listbox einlesen (SQL)
06.01.2020 06:46:26
Klaus
Hallo Forum,
ich habe eine Userform, in der ich Werte aus einer Access-Datenbank zeige.
In ListBox1 werden alle Auftragsnummern gezeigt.
Wird ein Auftrag aus ListBox1 ausgewählt, wird die Modellnummer in Label1 angezeigt, und in UserForm2 werden alle Artikelnummern aus der zu dem Modell gehörenden Stückliste angezeigt.
(und dann passiert noch eine Menge mehr, aber für die Frage habe ich den Code auf das wesentliche gekürtzt)
Bisher löse ich das so, und es funktioniert auch:
Sub Laden_SQL(mySQLcmd As String)
Dim cmd As ADODB.Command
Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Set con = New ADODB.Connection
con.Open ConnectionString:= _
"Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=C:\herber\myAccDb.accdb" & _
"Mode=Share Exclusive"
Set cmd = New ADODB.Command
cmd.ActiveConnection = con
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseServer
rs.Open mySQLcmd, _
ActiveConnection:=con, _
CursorType:=adOpenStatic, _
LockType:=adLockPessimistic, _
Options:=adCmdTableDirect
With Tabelle1
.UsedRange.ClearContents
.Range("A1").CopyFromRecordset Data:=rs
End With
Set cmd = Nothing
con.Close
Set con = Nothing
End Sub
Private Sub UserForm_Initialize()
Dim i As Long
Call Laden_SQL("SELECT AuftragsNr FROM AuftragAlle AS mytab WHERE [mytab.DatumStart] = " & Date) _
With Tabelle1
For i = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
UserForm1.ListBox1.AddItem .Cells(i, 1).Value
Next i
End With
End Sub
Private Sub ListBox1_Change()
Dim i As Long
Call Laden_SQL("SELECT Modell FROM AuftragAlle AS mytab WHERE [mytab.AuftragsNr] = " &  _
UserForm1.ListBox1.Value)
UserForm1.Label1.Caption = Tabelle1.Range("A1").Value
Call Laden_SQL("SELECT Artikelnr FROM Stueckliste AS mytab WHERE [mytab.Modell] = " & UserForm1. _
Label1.Caption)
With Tabelle1
For i = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
UserForm1.ListBox2.AddItem .Cells(i, 1).Value
Next i
End With
End Sub
Wenn es bei drei Objekten bleiben würde wäre es ja auch ok. Es geht mir aber tierisch auf den Keks, mit jedem SQL Kommando umständlich den Weg über eine Exceltabelle zu gehen.
Hat jemand eine Idee, ob ich die "Laden_SQL" Sub in eine Function umschreiben kann, um dann den/die Wert/e aus der Access DB direkt zu übergeben, ohne ihn erst in eine Tabelle zu schreiben? In Pseudocode könnte das dann so aussehen:
Function Laden_SQL(mySQLcmd As String)
[... AccDb initilaisieren ...]
Laden_SQL = mySQLcmd
End Function
Private Sub ListBox1_Change()
UserForm1.Label1.Caption = Laden_SQL("SELECT Modell FROM AuftragAlle AS mytab WHERE [mytab. _
AuftragsNr] = " & UserForm1.ListBox1.Value)
End Sub
Kann das für einen Wert, um ein Label zu beschriften, funktionieren?
Kann das auch für viele Werte, um eine Listbox zu füllen, funktionieren?
LG,
Klaus M.

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten aus Access direkt in Listbox einlesen (SQL)
06.01.2020 08:09:23
Luschi
Hallo Klaus,
'rs' ist ein RecordSet-Object, daß man auch in einer Schleife vom 1. bis zum letzten Datensatz _ durchlaufen kann und den Inhalt sofort in die Listbox(en) schreiben kann nach dem Muster:

If Not rs.BOF Or rst.EOF Then
rs.MoveFirst
Do While Not rst.EOF
UserForm1.ListBox2.AddItem rs.Fields(0).value
rs.MoveNext
Loop
End If
Gruß von Luschi
aus klein-Paris
AW: Daten aus Access direkt in Listbox einlesen (SQL)
06.01.2020 08:33:51
volti
Hallo Klaus,
das ist so ein spezieller Fall, den ich in meinem Thread vom 04.12.2019 gemeint hatte. :-)
http://www.herber.de/cgi-bin/callthread.pl?index=1727182
Mach es so wie Luschi vorschlägt.
M.E. müssten aber die zwei rst noch in rs geändert werden, oder sehe ich da was falsch.
viele Grüße
Karl-Heinz
Anzeige
AW: Daten aus Access direkt in Listbox einlesen (SQL)
06.01.2020 08:46:27
Luschi
Hallo Karl-Heinz,
Genau hingeguckt - sch... Copy & Paste
Gruß von Luschi
aus klein-Paris
Danke für die Hinweise ...
07.01.2020 06:18:33
Klaus
... damit werde ich heute mal rumprobieren :-) Habt nen guten Tag!
Klaus M.

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige