![]() |
|
|
zurück zur ÜbersichtDiskussionsgruppe: DatenbankenHallo,
Von: Marcel1983 Datum: 19.06.2007, 10:49
alle Antworten zu dieser FrageAntwort 1 von lleopard vom 21.06.2007, 09:37 Hi Marcel, natürlich geht das... im Hintergrund - also bevor der DS angezeigt wird - greifst du einfach per VBA drauf zu. Dafür schnappst du dir den SQL-String der Query und Verweist in der Ereignisprozedur des Buttons einfach auf diesen SQL-String und liest die Werte aus. Wenn du nun also die Werte in Excel wegschreiben willst, solltest du im Objektkatalog einen Verweis auf Excel setzen. Dann fügst du deiner Routine folgende Zeile ein (nur ein Beispiel) Dim oExcel As Excel.Application, Tmp, oSheet As Excel.Worksheet, Er As Long dim i as integer, j as integer Set oExcel = CreateObject("Excel.Application") With oExcel Randomize .Visible = False 'verhindert, daß Excel angezeigt wird .Workbooks.Open "Pfad der Exceltabelle" 'Wenn du nun eine Zeile an eine bestehende Tabelle anfügen willst - ich setze voraus du weißt welche Spalten (inkl. Bezeichnung) die Tabelle hat, wanderst du nun so lange die Tabellenzeilen entlang bis du am Ende eine neue leere Zeile hast: do while .Cells(1,i ) ="" i = i +1 loop 'wenn nun also den Wert für i - also der ersten leeren Zeile in Excel - hast, kannst du ganz bequem die Daten auslesen und anfügen: dim dbs as dao.database dim rs as dao.recordset dim fld as dao.field dim stg as string set dbs = currentdb set rs = dbs.openrecordset ("Select * From Tabelle WHERE Spalte = ????") 'Nur ein DS? If rs.bof then Exit sub 'Beendet die Routine, wenn kein DS vorhanden ist rs.movelast if rs.recordcount > 1 then exit sub 'beendet die Routine,wenn mehr als 1 DS vorhanden ist. 'Bitte auch eine Reaktion einbauen... Meldung der Art MsgBox "Fehler ...." j = 1 for each fld in rs.fields stg =rs(fld.name) 'Wenn die Anordnung der Tabellenspalten der Struktur der Datenbanktabelle entspricht: .cells(j, i) = stg j = j + 1 next fld 'Nun speichern wir das janze: .ActiveWorkbook.Save .Workbooks.Close .Quit end with ' Beenden den Verweis 'Beenden den DS-Zugriff rs.close set rs = Nothing set dbs = Nothing Wenn du mit Excel.Application arbeitest, die Funktion schrittweise ausführst und das Testfenster öffnest, wirst du feststellen, daß du auch ein neues Tabellenblatt erstellen kannst, eine ganz neue Exceltabelle erstellen kannst, in jedes beliebige Sheet schreiben kannst, usw... Hoffe das hat dir ein wenig weitergeholfen,... Gruß Leo Antwort 2 von Marcel1983 vom 21.06.2007, 09:55 Jo Danke!! Antworten der Gruppe: Datenbanken
|
|