![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Hero
![]() Registriert seit: 04.09.2001
Beiträge: 894
|
![]() hi !
ich bräuchte eure hilfe bei einem access-programm. Wie schaffe ich es, dass ich die Datensätze, die in einem Report angeziegt werden in eines separate Tabelle exportiere ? (Der Recordsource des Reports basiert auf einer Abfrage, welche Parameter enthält - z.B. geben Sie ein ... ein) Die Abfrageparameter sollen nicht erneut eingegeben werden müssen, sondern es soll sofort (ohne Nachfrage) eine Tabelle erstellt werden, welche die selben Datensätze enthält, die dem Report als Grundlage dienen. Sinn der Sache: statt Report soll dann ein Serienbrief an die "selben Datensätze" erstellt werden. ...hab schon länger nix mit access programmiert - weiß jemand rat ?? mfg -hannes |
![]() |
![]() |
![]() |
#2 |
Veteran
![]() Registriert seit: 10.01.2001
Beiträge: 478
|
![]() Also eigentlich kann man ja einen Serienbrief genausogut aus einer Abfrage erstellen wie aus einer Tabelle aber du wirst schon deine Gründe haben
![]() Anbei ein kleines Beispiel. Wenn du den Report rptSourcePartial öffnest wird die Tabelle tblTarget mit allen Datensätzen aus der Tabelle tblSource befüllt auf die die Abfrage qrySourcePartial passt. Nicht vergessen ADO und ADOX einzubinden wenn du in deiner Datenbank so vorgehen willst. |
![]() |
![]() |
![]() |
#3 |
Hero
![]() Registriert seit: 04.09.2001
Beiträge: 894
|
![]() erstmal vielen dank für deine hilfe !
wenn man nach sowas speziellem sucht, findet man (ich zumindest) im internet keine hilfe dazu - schön das es foren mit hilfsbereiten menschen gibt ! ![]() hmmm - das beispiel ist zwar o.k. - jedoch nicht ganz das, was ich will - ich will definitiv kein ADO verwenden (weiß, dass DAO beim kunden funktioniert - will da keine unsicherheit reinbringen, außerdem muss sowas in der Art ja auch mit Dao gehn, oder ?) Ev. ist aber mein Lösungsansatz falsch - daher eine kurze Beschreibung: Access 2000 Programm macht folgendes: - Aus einer Liste aller in der DB vorhandenen Berichte kann einer ausgewählt werden - Dieser basiert auf einer Abfrage - Die Abfrage enthält Parameterfelder - z.B. "Geben Sie das gewünschte Land ein !" - Im Bericht werden dann nur die Daten mit diesem Land angezeigt - Nun soll es möglich sein, an alle Personen, die im Bericht aufscheinen ein Mail zu schicken Meine Überlegung: die RecordSource des Berichtes in eine extrene DB-Tabelle exportieren, ein Word Objekt erzeugen und die Serienmailfunktion ausführen und als Datenherkunft die exportierte, neu erstellte DB angeben (funktioniert schon alles) Die Abfrageparameter soll man nicht nochmals eingeben müssen, daher RecordSource vom Bericht und nicht vom Query - dann kam nämlich jedesmal nochmals die Parameterabfrage. Also, wenn du ev. noch eine idee hast, bitte um mitteilung. ![]() thx -hannes |
![]() |
![]() |
![]() |
#4 |
Veteran
![]() Registriert seit: 10.01.2001
Beiträge: 478
|
![]() UUPs! Das hatte ich missverstanden. Ich habe sowas aber auch ehrlich gesagt selbst noch nie verwendet.
Als erstes fällt mir in dem Fall ein, das Recordset des Berichts mit einer Schleife zu durchlaufen und dabei die einzelnen Datensätze in die Zieltabelle zu schreiben. do while not Recordset.EOF . . . loop Ist aber wohl definitiv weder die schönste noch die schnellste Lösung. Sind im geöffneten Bericht die Parameterfelder im SQL-Statement wirklich nicht durch die eingegebenen Werte ersetzt? Sonst könnte man mein ursprüngliches Beispiel doch noch verwenden. Das ummodeln auf DAO sollte eigentlich kein Auftrag sein. Bis morgen, Seidl PS: Konnte nicht wiederstehen und habe doch noch kurz den Debugger bemüht. Leider wird so eine Parameterabfrage als procedure gespeichert und ich sehe im Augenblick keinen Weg die Abfrage, basierend auf den zuletzt übergebenen Werten, auszulesen. Vielleicht fällt mir ja morgen noch was ein aber ich bin nicht besonders zuversichtlich. |
![]() |
![]() |
![]() |
#5 |
Hero
![]() Registriert seit: 04.09.2001
Beiträge: 894
|
![]() hi!
wow - mit einer antwort um die zeit hätt ich nicht mehr gerechnet. ![]() ...dachte, ich bin der einzige, der um die zeit noch auf ist und so einen schmarrn programmiert. Wg. Zugriff auf Recordset des Reports - hab ich auch schon versucht: Der Report hat ein RecordSet Objekt, jedoch beim Zugriff: Reports(Me!SelBericht).Recordset kommt die Fehlermeldung: This feature is not available in an MDB. ![]() ![]() ![]() Mach inzwischen folgendes: rsource = Reports(Me!SelBericht).RecordSource So bekomme ich die Recordsource des Berichtes (geht nur, wenn bericht geöffnet ist - auch sehr supa...) Dann starte ich eine Query, welche auf dieser Recordsource basiert, jedoch eine Tabelle erstellt. recht umständlich, weil man eine 2. query benötigt. noch dazu muss man die query-parameter erneut eingeben. Werd mir nochmal dein ADO-Beispiel ansehen - mit Dao bekomm ich's leider nicht hin, dass ich auf das Recordset des Reports zugreife und dessen Daten in eine ext. Tabelle exportiere. thx -hannes |
![]() |
![]() |
![]() |
#6 |
Veteran
![]() Registriert seit: 10.01.2001
Beiträge: 478
|
![]() Ich hab' mir die Sache jetzt nochmal angesehen aber offengesagt fällt mir auch nichts gescheites mehr ein.
Ist die Performance bei der Abfrage so kritisch das du eine parametrisierte verwenden musst? Ansonsten könntest du ja die Parameterabfrage selbst ausprogrammieren und damit ein SQL-Statement erstellen das du dann als Quelle verwenden kannst. Vielleicht liesse sich auch noch eine Lösung für deinen derzeitigen Ansatz finden aber ob es wirklich dafürsteht den dazu nötigen Zeitaufwand zu erbringen? |
![]() |
![]() |
![]() |
#7 |
Hero
![]() Registriert seit: 04.09.2001
Beiträge: 894
|
![]() hi !
Die Performance ist sicher nicht so kritisch, es handlet sich jedoch um ein bestehendes Programm, welches ich erweitern muss (will daher möglichst wenig ändern). Ich habs inzwischen folgendermaßen gelöst (sicher nicht der schönste, aber ein funktionierender Ansatz) - zu jedem Query gibt es ein 2. "Tabellenerstellungs" Query - Dieses liefert die selben Ergebnisse und schreibt diese in eine temp. Tabelle - Dieses 2. Query verweist bei den Parametern auf Felder des Berichtes, die Parameter müssen daher nicht nochmals eingegeben werden. Nachteil: Bericht muss diese Felder (hidden) enthalten. - Beim Anzeigen des Berichtes hole ich mir dessen "RecordSource" - Die 2. Query heißt "Create "<RecordSource> - Diese führe ich aus - Die Daten stehen dann in einer temp. Tabelle, ich öffne ein Word Objekt und zeige diese in einem Serienbrief an. ...ist also eh so ähnlich, wie deine idee ! ![]() mfg -hannes ps: ich glaub, jetzt bekomm ich bald ein "sterndal", weil ich immer so viele sachen frage ! *g* |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|