Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Probleme beim Kopieren die Ergebnisse einer Abfrage in Excel

Begonnen von Carlos_C, März 12, 2019, 17:06:14

⏪ vorheriges - nächstes ⏩

Carlos_C

Hallo liebes Forum,

ich habe folgendes Problem, und zwar, ich möchte per Klick die Ergebnisse einer Access-Abfrage in einer bestimmten Excel-Datei in einem neuen Blatt kopieren und habe folgendes versucht:

DoCmd.TransferSpreadsheet acExport, 8, "qry_meinabfrage", DateinameMitPfad, True, "NeueTabelle"


Das erste Mal hat es wunderbar geklappt, aber komischerweise ab dem zweiten Mal kommt folgende Fehlermeldung:

Laufzeitfehler '2083':
Die Datenbank " ist schreibgeschützt.


Hat jemand eine Idee, wie man das lösen kann?

LG

Carlos



Gruß,

Carlos

Carlos_C

Hallo Forum nochmal,

ich habe teilweise eine Lösung gefunden, und zwar mit:

Dim xlAnw As Excel.Application
Dim xlBuch As Excel.Workbook
Dim xlArbBlatt As Excel.WorkSheet

Dim rs As DAO.Recordset

Set xlAnw = CreateObject("Excel.Application")
Set xlBuch = xlAnw.Workbooks.Open(DateinameNeu)
Set xlArbBlatt = xlBuch.Worksheets("Daten Prüfstand")

Set rs = CurrentDb.OpenRecordset("qry_meineabfrage")
xlArbBlatt.Range("B8").CopyFromRecordset rs
rs.Close
Set rs = Nothing

xlBuch.Save
xlAnw.Quit

Set xlBuch = Nothing
Set xlArbBlatt = Nothing
Set xlAnw = Nothing


Leider kommt folgende Fehlermeldung:

Laufzeitfehler '3061':
11 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben.


Wenn ich aber testweise meine "qry_meineabfrage" durch eine normale Tabelle ersetze, funktioniert es wunderbar. Access schreibt die Ergebnisse einer Tabelle in einem bestimmten Excel-Blatt einer bestimmten Excel-Datei, und zwar ab der Zelle "B8". Das ist genau, was ich am Ende haben wollte =)

Wie Ihr Euch wahrscheinlich gedacht habe, basiert meine "qry_meineabfrage" auf Eingaben eines Formulars (das gleiche Formular, wo der Button mit der oberen Prozedur ist).

Ich habe gelesen, dass ich die Kriterien der Abfrage in der Form Eval("XXX") eingeben soll, was ich versucht habe. Es kommt aber dann folgende Fehlermeldung:

Datentypenkonflikt in Kriterienausdruck

Laut der FAQ 6.4 von Donkarl ist diese Methode einfach anzuwenden, wenn man ein Abfragekriterium in der Form Forms!Formularname!SteuerelementName hat. In meiner Abfrage haben aber die Kriterien entweder die Form

-   Wie "*" & [Forms]![frm_MeinFormular]![cbo_MeineKombinationsbox] & "*" , oder

-   >=Nz([Forms]![frm_MeinFormular]![txt_DatumVon];#1-1-1900#) Und <=Nz([Forms]![frm_ MeinFormular]![txt_DatumBis];#1-1-2200#)

Ich weiß jetzt nicht weiter.

Hat jemand einen Tipp für mich?

Danke

Carlos



Gruß,

Carlos

DF6GL

Hallo,


der Tipp besteht darin, auf die Formularbezüge in der Abfrage ganz zu verzichten und (als eine von mehreren Methoden) den Abfrage-SQL-String direkt in  VBA mit den benötigten Kriterien-Werten zusammenzusetzen.


Zudem ist das Format des Datums-Literals falsch:

Entweder muss es dem USA-Format (#01/01/1900#)
oder dem ISO-Format   (#1900-01-01#) 
entsprechen.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Carlos_C

Hallo Franz,

vielen Dank für den Tipp!

Da ich mich nicht gut mit SQL-Abfragen auskenne, habe ich Deine Aussage

als eine von mehreren Methoden

wahr genommen und mir was anderes ausgedacht, und zwar, habe ich eine Tabelle tbl_suchkriterien erstellt, auf der mittels meiner VBA Prozedur die Suchkriterien gespeichert werden (jedes Mal wird die Tabelle geleert und dann mit den neuen Suchkriterien befüllt). Dann habe ich eine Abfrage erstellt, die auf die tbl_suchkriterien basiert, und in

Set rs = CurrentDb.OpenRecordset("qry_meineabfrage")

statt "qry_meineabfrage" die neue Abfrage eingegeben.

Jetzt funktioniert es! =))

Auch wenn ich Deiner Empfehlung mit der SQL-Abfrage nicht gefolgt habe, war es extrem wichtig zu wissen, dass man auf die Formularbezüge ganz verzichten soll. Vielen Dank!

Nun habe ich aber ein anderes Problem. In der Exceldatei gibt es ein Blatt namens Auswertung, auf der eine Auswertung gemacht wird, basiert auf die Daten vom Blatt Daten Prüfstand. Auf dem Blatt Daten Prüfstand wurden die Daten mittels vba mit der .CopyFromRecordset rs-Methode geschrieben. Im Blatt Auswertung sind alle Zellen in der Spalte D mit Format Zahl, aber nach dem das .CopyFromRecordset rs passiert, wird das Format in der Spalte D zum Datum-Format. Ich verstehe nicht warum =(

Hat jemand eine Idee, warum das passiert?

Danke und Gruß,

Carlos



Gruß,

Carlos