VBA Zugriff auf MS ACCESS

11/12/2007 - 15:29 von Holger D. | Report spam
Hallo liebe Community,

ich habe ein Ploblem, auf dessen Lösung ich nicht alleine stoße. Auch das
Recherchieren im Internet hat mir nicht geholfen.

Ich habe ein UserForm mit zwei Listenfeldern. Eine Liste wird gefüllt mir
den vorhandenen Tabellen einer vordefinierten Accessdatenbank. Die andere
Liste wird mit den entsprechenden Merkmalen gefüllt. Nun markiert der Nutzer
die gewünschten Tabellen und Merkmale und importiert die entsprechenden
Datensàtze. Das funktioniert soweit mit dem unten aufgeführten Code.
Nun möchte ich das jedoch noch in Abhàngigkeit einer Datumsbeschrànkung
durchführen (VON_DATUM; BIS_DATUM). Ein Merkmal der Tabellen ist das Feld
"herstelldatum" und in Anhàngigkeit der Datumsgrenze im UserForm sollen nur
die Merkmale importiert werden, die zustzàlich mit dem Eingabedatum gefiltert
wurden.

Kann mir dabei jmd. helfen? Ich bin dort ziemlich ratlos.

Herzlichen Dank für die Hilfe und
schöne Grüße
Holger

Hier der Cod
-

Private Sub CommandButton1_Click()
'keine Tabelle ausgewàhlt ?
If ListBox1.ListIndex = -1 Then
MsgBox "Bitte wàhlen Sie eine Tabelle!", vbCritical
Exit Sub
End If
'Überschriften setzen (Feldnamen)
Anzahl_Felder = 0
With ListBox2
For i = 0 To .ListCount - 1
If .Selected(i) Then
Anzahl_Felder = Anzahl_Felder + 1
Cells(1, Anzahl_Felder) = .List(i)
With Cells(1, Anzahl_Felder)
.Interior.ColorIndex = 48
.Interior.Pattern = xlSolid
.Font.Bold = True
End With
End If
Next i
End With
If Anzahl_Felder = 0 Then
MsgBox "Bitte wàhlen Sie mindestens 1 Feld aus!", vbCritical
Exit Sub
End If
'Tabelle zum Einlesen öffnen
Set Datensatz = Datenbank.OpenRecordset(Tabellenname, dbOpenDynaset)
'Anzahl der Datensàtze
Anzahl = Datenbank.TableDefs(Tabellenname).RecordCount
z = 2 'ab Zeile 2 Daten schreiben
'alle Datensàtze einlesen
Do Until Datensatz.EOF
'Schleife über alle Felder
With ListBox2
'ab Spalte 1 wird geschrieben
s = 1
For X = 0 To .ListCount - 1
If .Selected(X) Then
'Wert ermitteln
n = Datensatz.Fields(X).Value
'Ausgabe in der Tabelle
Cells(z, s) = n
'Spaltennummer um 1 erhöhen
s = s + 1
End If
Next X
End With
'Ausgabezeile um 1 erhöhen
z = z + 1
'nàchster Datensatz
Datensatz.MoveNext
Loop
'Datenbank schließen
Datenbank.Close
'Optimale Spaltenbreite
Range(Cells(1, 1), Cells(1, Anzahl_Felder)).EntireColumn.AutoFit
'Information (Anzahl der Datensàtze)
MsgBox Anzahl & " Datensàtze eingelesen", vbInformation, "Datenbank
importieren"
'Userform schließen
Unload Me
End Sub
 

Lesen sie die antworten

#1 Holger D.
11/12/2007 - 16:41 | Warnen spam
Hallo NG,

kann mir bei diesem Problem jemand helfen??
Danke schon mal vorab,
Holger


"Holger D." wrote:

Hallo liebe Community,

ich habe ein Ploblem, auf dessen Lösung ich nicht alleine stoße. Auch das
Recherchieren im Internet hat mir nicht geholfen.

Ich habe ein UserForm mit zwei Listenfeldern. Eine Liste wird gefüllt mir
den vorhandenen Tabellen einer vordefinierten Accessdatenbank. Die andere
Liste wird mit den entsprechenden Merkmalen gefüllt. Nun markiert der Nutzer
die gewünschten Tabellen und Merkmale und importiert die entsprechenden
Datensàtze. Das funktioniert soweit mit dem unten aufgeführten Code.
Nun möchte ich das jedoch noch in Abhàngigkeit einer Datumsbeschrànkung
durchführen (VON_DATUM; BIS_DATUM). Ein Merkmal der Tabellen ist das Feld
"herstelldatum" und in Anhàngigkeit der Datumsgrenze im UserForm sollen nur
die Merkmale importiert werden, die zustzàlich mit dem Eingabedatum gefiltert
wurden.

Kann mir dabei jmd. helfen? Ich bin dort ziemlich ratlos.

Herzlichen Dank für die Hilfe und
schöne Grüße
Holger

Hier der Code
-

Private Sub CommandButton1_Click()
'keine Tabelle ausgewàhlt ?
If ListBox1.ListIndex = -1 Then
MsgBox "Bitte wàhlen Sie eine Tabelle!", vbCritical
Exit Sub
End If
'Überschriften setzen (Feldnamen)
Anzahl_Felder = 0
With ListBox2
For i = 0 To .ListCount - 1
If .Selected(i) Then
Anzahl_Felder = Anzahl_Felder + 1
Cells(1, Anzahl_Felder) = .List(i)
With Cells(1, Anzahl_Felder)
.Interior.ColorIndex = 48
.Interior.Pattern = xlSolid
.Font.Bold = True
End With
End If
Next i
End With
If Anzahl_Felder = 0 Then
MsgBox "Bitte wàhlen Sie mindestens 1 Feld aus!", vbCritical
Exit Sub
End If
'Tabelle zum Einlesen öffnen
Set Datensatz = Datenbank.OpenRecordset(Tabellenname, dbOpenDynaset)
'Anzahl der Datensàtze
Anzahl = Datenbank.TableDefs(Tabellenname).RecordCount
z = 2 'ab Zeile 2 Daten schreiben
'alle Datensàtze einlesen
Do Until Datensatz.EOF
'Schleife über alle Felder
With ListBox2
'ab Spalte 1 wird geschrieben
s = 1
For X = 0 To .ListCount - 1
If .Selected(X) Then
'Wert ermitteln
n = Datensatz.Fields(X).Value
'Ausgabe in der Tabelle
Cells(z, s) = n
'Spaltennummer um 1 erhöhen
s = s + 1
End If
Next X
End With
'Ausgabezeile um 1 erhöhen
z = z + 1
'nàchster Datensatz
Datensatz.MoveNext
Loop
'Datenbank schließen
Datenbank.Close
'Optimale Spaltenbreite
Range(Cells(1, 1), Cells(1, Anzahl_Felder)).EntireColumn.AutoFit
'Information (Anzahl der Datensàtze)
MsgBox Anzahl & " Datensàtze eingelesen", vbInformation, "Datenbank
importieren"
'Userform schließen
Unload Me
End Sub





Ähnliche fragen