Individuelles Abfragefomular basteln

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 :wink:)

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 :wink:)

*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! :smile:

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]