Hallo !
ich möchte für einen user ein formular basteln, mit dem er sich die von ihm gewünschten Felder einer Tabelle / Abfrage selbst aussuchen kann und diese nach Excel exportieren kann. Dann muss er nicht direkt auf der DB arbeiten. Die Tabellennamen kommen schon in eine combobox, nur die Felder ändern sich ja individuell je nach Auswahl. Hat hier jemand eine idee oder gibt es eine „fertige“ Lösung eines Ausgabegenerators ?
Gruss,
Andreas
Hi Andreas,
ich möchte für einen user ein formular basteln, mit dem er
sich die von ihm gewünschten Felder einer Tabelle / Abfrage
selbst aussuchen kann und diese nach Excel exportieren kann.
„einer Tabelle / Abfrage“
wo ist die, eine Accesstabbelle, SQL, ?
Mit was soll das geschehen, mit VB-Code mit Excel-Vba-Code?
Dann muss er nicht direkt auf der DB arbeiten. Die
Tabellennamen kommen schon in eine combobox, nur die Felder
ändern sich ja individuell je nach Auswahl.
Wo ist die Combobox, wer, welches programm schreibt das was rein?
Gruß
Reinhard
Hallo Andreas,
erster Ansatz:
Die Tabelle öffnen, und die Feldnamen in eine Combobox (oder Listbox) zur Auswahl schreiben.
Dim strSQL As String
Dim objRS As ADODB.Recordset
Dim objConnection As ADODB.Connection
Private Sub Lesen()
Dim DB As String
Dim i As Integer
DB = "C:\Datenbank.mdb"
strSQL = "SELECT \* FROM Tabelle;"
Set objConnection = New ADODB.Connection
With objConnection
.CursorLocation = adUseClient
.Mode = adModeShareDenyNone
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = DB
.Open
End With
Set objRS = New ADODB.Recordset
With objRS
Set .ActiveConnection = objConnection
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockOptimistic
.Source = strSQL
Call .Open
End With
Set Adodc1.Recordset = objRS
For i = 0 To Adodc1.Recordset.Fields.Count - 1
Combo1.AddItem Adodc1.Recordset.Fields.Item(i).Name
Next
objRS.Close
objConnection.Close
End Sub
Private Sub Form\_Load()
Lesen
End Sub
Der Anwender wählt die Felder aus. Die Felder kommen statt dem Stern in den SQL-String, das Recordset wird geöffnet, an ein ADODC übergeben dessen Daten in einem Flexgrid angezeigt werden.
Der Code ist also schon fast Vollständig, fehlt nur etwas Tipparbeit.
Gruß Rainer
Halle Reinhard,
also: Acess-Tabelle, Access-Formular (keine Datenherkunft) VBA-code, combobox füllt sich mit select-Anweisung aus MySysObjects…
Gruss,
Andreas
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Der Anwender wählt die Felder aus. Die Felder kommen statt dem
Stern in den SQL-String, das Recordset wird geöffnet, an ein
ADODC übergeben dessen Daten in einem Flexgrid angezeigt
werden.
Der Code ist also schon fast Vollständig, fehlt nur etwas
Tipparbeit.
Gruß Rainer
Hallo Rainer,
so wie ich den Code überflogen habe, gibt er in die Combo(List)box die Tabellennamen zurück. Ich benötige jedoch die entsprechenden Feldnamen der Tabellen, denn die Combobox funktioniert bei mir schon …
Gruss,
Andreas
Hallo,
so wie ich den Code überflogen habe, gibt er in die
Combo(List)box die Tabellennamen zurück.
nein, in die Combobox werden die Feldnamen eingetragen.
Gruß Rainer
stimmt ! sorry, ich hatte vergessen, ich arbeite mit A97, da gabs noch kein ADO…
Ich kämpfe weiter !
Gruss,
Andreas
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Access 97 Abfragefomular für Excelexport
also: Acess-Tabelle, Access-Formular (keine Datenherkunft)
VBA-code, combobox füllt sich mit select-Anweisung aus
MySysObjects…
Hallo Andreas,
kannst du mal mit FAQ:2861 mal so eine Beispiels .mdb hochladen.
Gruß
Reinhard
Hallo Reinhard,
Beispiel-Datei liegt unter
http://www.hostarea.de/server-12/Dezember-e7cd7104e2…
Gruss,
Andreas
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
http://www.hostarea.de/server-12/Dezember-e7cd7104e2…
Hallo Andreas,
ich hatte erwartet dort eine Combobox vorzufinden und Vba-Code, dann hätte ich es probiert mittels Vba den Inhalt der Combobox oder aufgrund des Inhaltes der Combobox Felder nach Excel rüberzuschaufeln.
Ich fand aber nix. Das erschwert meinen Hilfewunsch ungemein, nicht wegen einer Combobox in VB, Vba, sondern mit der Referenzierung von Zellen, Spalten Feldern in Access.
Gruß
Reinhard
Hallo,
stimmt ! sorry, ich hatte vergessen, ich arbeite mit A97, da
gabs noch kein ADO…
danke für die Erinnerung, DAO hatte ich doch schon völlig vergessen, obwohl das einfacher ist.
Ich habe das Projekt mal auf DAO geändert und auch gleich vervollständigt.
Gruß Rainer
Dim DB As Database
Dim RS As Recordset
Dim strSQL As String
Private Sub Command1\_Click()
Dim i As Integer
strSQL = "SELECT "
For i = 0 To List2.ListCount - 1
If i \> 0 Then
strSQL = strSQL & ", "
End If
strSQL = strSQL & List2.List(i)
Next
strSQL = strSQL & " FROM Tabelle;"
Set RS = DB.OpenRecordset(strSQL)
For i = 0 To RS.Fields.Count - 1
List1.AddItem RS.Fields(i).Name
Next
Set Data1.Recordset = RS
RS.Close
End Sub
Private Sub Form\_Load()
Dim i As Integer
Set DB = OpenDatabase("C:\Datenbank.mdb")
strSQL = "SELECT \* FROM Tabelle;"
Set RS = DB.OpenRecordset(strSQL)
For i = 0 To RS.Fields.Count - 1
List1.AddItem RS.Fields(i).Name
Next
Set Data1.Recordset = RS
RS.Close
End Sub
Private Sub Form\_QueryUnload(Cancel As Integer, UnloadMode As Integer)
DB.Close
End Sub
Private Sub List1\_Click()
List2.AddItem List1.List(List1.ListIndex)
List1.RemoveItem List1.ListIndex
End Sub
Hallo,
stimmt ! sorry, ich hatte vergessen, ich arbeite mit A97, da
gabs noch kein ADO…
danke für die Erinnerung, DAO hatte ich doch schon völlig
vergessen, obwohl das einfacher ist.
Ich habe das Projekt mal auf DAO geändert und auch gleich
vervollständigt.
Gruß Rainer
hallo Rainer !
Ihr seid alle so gut zu mir
)
Nur bei mir kommt eine Fehlermeldung bei List1.additem, nämlich dass „Metode oder Datenobjekt nicht gefunden“ wurde…
Gruss,
Andreas
Hallo Andreas,
Ihr seid alle so gut zu mir
)
*gg* ich hatte kein Beispiel für den Umgang mit DAO mehr. Das habe ich jetzt bei der Gelegenheit geändert. Wenn ich es demnächst brauchen sollte, muss ich nicht suchen.
Du siehst, purer Eigennutz! 
Nur bei mir kommt eine Fehlermeldung bei List1.additem,
nämlich dass „Metode oder Datenobjekt nicht gefunden“ wurde…
Dann heißt Deine Liste nicht List1.
Wenn Du VBA verwendest, wird die wohl ListBox1 heißen.
Wenn Du kein Steuerelement ‚Data‘ hast, musst Du das auch entfernen, in VB6 habe ich damit ein Flexgrid verbunden und die Anzeige ist erledigt. Die musst Du Dir bei VBA noch selbst ausdenken, wie Du die in die Excel-Tabelle bekommst, davon habe ich keine Ahnung.
Gruß Rainer
Hallo Rainer,
vielen Dank für Deine Tipps !
Auch mit Hilfe Deiner „Denkanstösse“ habe ich jetzt eine Lösung gefunden.
Nochmals vielen Dank !
Andreas
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]