collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 72
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 14707
  • stats Beiträge insgesamt: 74942
  • stats Themen insgesamt: 10082
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 933

Autor Thema: Suche Button und Serienbrief über Access öffnen / ablegen  (Gelesen 15419 mal)

Offline Muhkuh86

  • Newbie
  • Beiträge: 10
Hallo,


ich bin gerade dabei mir eine kleine Datenbank für eine Bibliothek (Schulprojekt) anzulegen und habe noch zwei Fragen zur Durchführung.

Mein bisheriger Stand ist, dass ich 4 Tabellen (TAusleihen, TKunden, TBuecher und TBNummer), 1 Abfrage (ASerienbrief), 6 Formulare (FAusleihe, FKunden, FBuecher, UFName, UFTitel und FStartmenue) und 1 Bericht (BAusleihen) habe.

Die DB ist wie folgt aufgebaut:

Beziehungen:

TKunden steht 1:n mit Tausleihen
Tausleihen steht 1:1 mit TBuecher.

Nun zu meinen Fragen.

1. Mein Startformular, welches als GUI dient,soll u.A. zwei Buttons haben, welche es mir ermöglichen, direkt und ohne die jeweilen Formulare zu öffnen, Kunden oder Buecher zu suchen. Wie realisiere ich das am besten? Ich weiss nicht, wie ich die Verknüpfung zur Suche erstellen kann. Oder geht das über einen komplett anderen weg?

2. Ich möchte einen Bericht automatisch an Kunden verschicken, die Bücher länger als einen Monat ausgeliehen haben, dass Sie es zurückbringen sollen. Dazu habe ich einen Serienbrief in Word erstellt. Wo und wie kann ich diesen am besten in die DB integrieren? Wie mache ich das, dass er mir sagt, dass Kunde X bereits seit einem Monat das Buch y ausgeliehen hat? Ich habe da keinerlei Ansatz, wo und wie ich das einbaue. Der Brief soll dann übrigens nicht via Mail verschickt werden (gibt dafür eh keine Einträge in den Tabellen), sondern automatisch mit dem betreffenden Datensatz der 30 Tage überfällig ist, als Doc in einem bestimmten Ordner abgespeichert werden, damit man ihn direkt ausdrucken kann.


Vielleicht kann mir da ja irgendjemand Lösungshinweise oder Hilfe geben :)

Liebe Grüße
Nora
 

database

  • Gast
Re: Suche Button und Serienbrief über Access öffnen / ablegen
« Antwort #1 am: April 07, 2010, 09:44:42 »
Hallo Nora,

Zitat
Tausleihen steht 1:1 mit TBuecher

kann nicht stimmen, da ein Buch mehrmals ausgeliehen werden kann. somit sollte die Beziehung  1-Bücher  n-Ausleihen lauten!

zu 1  jedes Formular zählt zum GUI :)
         Ja ist lösbar - du brauchst eine Möglichkeit die entsprechenden Suchkriterien gegen die Datenbank zu schicken und ein Teil, das dir das Ergebnis darstellt.
         Vernüpfung zur 'Suche' ... 'Suche' ist kein Datenbankobjekt sondern ein Vorgang. In deinem Fall KANN das per VBA ausprogrammiert werden.

zu 2  Serienbriefe beruhen auf einer Tabelle oder Abfrage, die entweder in Word selbst oder aus einem Word-kompatiblen Programm (Datenbank) stammen.
         In deinem Fall würde ich empfehlen per Abfrage eine Tabelle mit den Serienbriefdaten zu befüllen, den Serienbrief in Word positionierst du dann auf diese Datenquelle.
         Wenn du mit VBA nich so auf Freundschaft bist - den Serienbrief von Word aus öffnen.
         Ein anderer Weg wäre der, dass du einen Bericht erstellst, der dem Serienbrief gleicht und diesen dann Datensatzweise als PDF in einn Verzeichnis druckst (exportierst).
         Das dort erzeugte PDF-Dokument kannst du dann nach belieben Drucken um es traditionell per Post zu versenden oder bei Bedarf per Mail als Anhang versenden.

Zitat
Wie mache ich das, dass er mir sagt, dass Kunde X bereits seit einem Monat das Buch y ausgeliehen hat
In dem du das Ausleihdatum mit dem aktuellen Tagesdatum vergleichst (per Abfrage)

HTH

Peter
« Letzte Änderung: April 07, 2010, 09:47:28 von database »
 

Offline Muhkuh86

  • Newbie
  • Beiträge: 10
Re: Suche Button und Serienbrief über Access öffnen / ablegen
« Antwort #2 am: April 07, 2010, 10:16:04 »
Hallo,

erstmal danke für die rasche Antwort.

Leider kann ich damit nicht allzuviel anfangen ;D

Also erstmal ist noch zu sagen, dass jedes Buch nur einmal verliehen werden kann, wenn es weg ist, kann es in der Zeit nicht nochmal verliehen werden (1:1), davon ausgehend, dass jeder Schlüssel eindeutig zu einem Buch zugewiesen ist, und nicht nur einem Titel (wovon es logischerweise mehrere Bücher gibt).

Kann man das mit der Suche auch ohne VBA lösen? Ich wollte das über einen Suche-Button im Startmenü lösen, wo ich bei der Erstellung mit dem Assistenten angebe: Formular öffnen (z.B. FKunden) und dann "Das Formular öffnen und bestimmte Daten suchen un anzeigen". Dort kommt dann aber leider eine Fehlermeldung, dass die Formulare erst verknüpft werden müssen, bzw. ein verknüpftes Feld vorhanden sein muss. Wie verknüpfe ich das denn? Dachte das Formular bezieht seine Daten direkt aus der Tabelle...


Den Serienbrief habe ich schon erstellt und er bezieht auch seine Daten (Anrede, Name, Anschrift etc.) direkt aus den Tabellen (TKunden und TBuecher). Nur leider weiss ich nun nicht, wie ich den Brief via Access abspeichere, bzw. prüfe, dass diese besagten 30 Tage rum sind und ich dafür eine Meldung o.ä. erhalte.

Mit VBA bin ich eher auf Kriegsfuss. Abfragen gehen noch, nur wiess ich auch nicht wie ich das damit realisieren kann :(

Habt ihr vielleicht noch Tipps für mich?
 

database

  • Gast
Re: Suche Button und Serienbrief über Access öffnen / ablegen
« Antwort #3 am: April 07, 2010, 11:17:08 »
Hallo,

Zitat
dass jedes Buch nur einmal verliehen werden kann, wenn es weg ist, kann es in der Zeit nicht nochmal verliehen werden (1:1)
Da hast du natürlich recht. 8)
Nur ersuche ich zu beachten, dass ein Verleihvorgang so ziemlich nichts mit Datenbanktechnik zu tun hat. Lies dazu bitte AUCH hier nach...
http://www.dbwiki.de/wiki.php?title=Access_Anf%E4nger:_Grundlagen_des_Datenbank-Designs

Zitat
Kann man das mit der Suche auch ohne VBA lösen

Ja, kann man auch - die Fehlermeldung entsteht dadurch dass Access zum Zeitpunk zu dem du das Formular öffnen willst nicht 'weiss' welchen Datensatz du sehen willst.
Zitat
Dachte das Formular bezieht seine Daten direkt aus der Tabelle
...wenn du das so definiert hast - JA. Um einen bestimmten Datensatz anzeigen zu können - bzw. beim Öffnen des Formulars ein bestimmter Datensatz angezeigt werden soll, muss Access bekanntgegeben werden, welcher dieses sein soll.
Ich gehe davon aus, dass du mit Access 2007 arbeitest - wegen der Fehlermeldung, die dann erzeugt wird, wenn man per Assistenten eine Schaltfläche zum Öffnen eines Fomulars anlegen will.
Makros sind nicht so flexibel wie VBA - daher will in diesem Fall Access ein Feld auf dem Formular 'sehen' um sich von dort die Infos zu holen um welchen Datensatz es sich handelt.

Legst du den Button ohne Assistenten an, hast du die Möglichkeit anschließend ins Ereignis 'Beim Klicken' z.B. folgenden Code zu schreiben:
DoCmd.OpenForm "tbl_Kunde", , , "Name='" & InputBox("Name") & "'"Damit wird das Formular geöffnet und jener Datensaatz angezeigt, der im Feld 'Name' den Namen stehen hat, den du in die Inputbox eingegeben hast.

Zitat
Den Serienbrief habe ich schon erstellt ...
Dazu bitte den Hinweis beachten, die Daten in eine extra Tabelle zu legen oder eine entsprechende Abfrage zu erstellen.
In dem Zusammenhang weise ich dich nochmals eingehend darauf hin, dass die 1:1 Beziehung nicht stimmt! Glaube mir, ich weiß schon wovon ich rede ;D
Etwa so bekommst du die Dauerausleiher ... :)
SELECT * FROM Tabelle WHERE  Date()-[Ausleihdatum] > 30
Mit VBA bist du eher auf Kriegsfuß OK, dann öffne den Serienbrief von Word aus und verwende 'SpeichernUnter ... PDF / XPS' oder du installierst dir einen Free PDF Converter (google) und Druckst dann über den Installierten PDF-'Drucker' in ein Verzeichnis.
 

Offline Muhkuh86

  • Newbie
  • Beiträge: 10
Re: Suche Button und Serienbrief über Access öffnen / ablegen
« Antwort #4 am: April 07, 2010, 12:23:57 »
Hallo database,

nochmals danke für deine ausführliche Hilfe.

Also unser Lehrer ist ja quasi der Projektleiter und hat uns diese Beziehungen auferlegt.

So ist der Aufbau:

[TKunden] 1----n [TAusleihen] 1-------1[TBuecher]


Den Code DoCmd habe ich ausprobiert, da kommt die Meldung, dass Access das Makro DoCmd nicht finden kann (ich habe Access 2003).
Also ich habe im FStartmenü einen Button ohne Assistenten erstellt und bei Ereignis "Beim Klicken" den Code angepasst und eingetragen.
Klappt aber nicht :(

Wir sollen basierend auf dem Formular FKunden eine Suche starten. Kann ich da einstellen, dass er mehr sucht als nur den Namen wie in dem Code? Ich müsste sicher ein extra Suchformular erstellen mit Abfragen etc...nur da hört es dann wieder bei mir auf und er meinte ja "basierend auf FKunden" (also ohne extra Formular).

Kann man nicht irgendwie die Suche von Access dafür verwenden? Ich meine die Suche, die ich auch direkt in dem Formular FKunden per Button benutzen kann (Datensatznavigation --> Datensatz suchen).

Entschuldige bitte die unbeholfenen Fragen, aber ich habe davon wirklich nicht allzuviel Ahnung.


Das mit dem Serienbrief hab ich auch nicht verstanden. Wo trage ich dieses SELECT * FROM ein?


Viele Grüße


 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 24266
Re: Suche Button und Serienbrief über Access öffnen / ablegen
« Antwort #5 am: April 07, 2010, 13:12:10 »
Hallo,

auch ich muß sagen, dass eine 1:1-Beziehung  Unsinn ist.

Frage mal den Lehrer, ob:

1) Du evtl. was falsch verstanden hast
2) er einen falschen ( vielleicht besser: unpassenden ;-) )Gedankengang entwickelt hat
3) er sich bewußt ist, was er mit einer 1:1-Beziehung anstellen wird (so es eine ist)

4)
Für diese Ausleihgeschichte brauchst Du im Grunde nur 3 TAbellen:

TKunden  (alle Kunden der Bücherei)

TBücher (alle registrierten Büpcher der Bücherei)

TAusleihen (nur Primärschlüsselfeld (Autowert), KUndennummer, Buchnummer,Vorgangsdatum, Vorgangsart)



Beziehungen:

TKunden  1:n   TAusleihen  n:1  TBücher


Für jede Tabelle erstellst du ein Formular ( für Tausleihen ein Endlosform, darin zur Auswahl eines Kunden ein Kombifeld für Kundennummer)

Im Formular "frmBücher" kommt ein UFO, das das Form "frmAusleihen" anzeigt und über das Ausleih_ID-Feld verknüpft ist.


Das ist alles. Mit Hilfe des Forms "frmBücher" kannst Du eine Ausleihe eines Büches dann bearbeiten, ob Ausleihvorgang oder Rückgabe gerade erledigt werden soll.

(Die Ausleihvorgänge können auch über das Endlosform "frmAusleihen" direkt erfasst werden, wenn ein zusätzliches Kombi für die Auswahl eines Buche (Buch_ID) vorgesehen wird.

Das kannst Du aber selber mal probieren.

Bestimmte Einschränkungen bei der Auswahl eines Buches (z. B. nur die Bücher anzeigen, die akt. nicht verliehen sind) erfolgt über geeignet erstellet Abfragen für das Kombi.   Diese zeitliche Einschränkung (Kriteriumsangabe) ist etwas schwieriger zu erstellen, weil Datumsbereiche abgefragt werden müssen und die bestimmte Formatierungen des Datums erfordern.





Mi

Offline Muhkuh86

  • Newbie
  • Beiträge: 10
Re: Suche Button und Serienbrief über Access öffnen / ablegen
« Antwort #6 am: April 07, 2010, 14:57:02 »
Hallo DF6GL (hat der Name was zu bedeuten? :D),

also unser Lehrer hat uns eine umfassende Projektaufgabe gegeben, in der handfest steht, dass es eine 1:1 Beziehung sein muss (auch Access gibt mir das vor, wenn ich die jeweiligen Primärschlüssel aus TBuecher und Tausleihen verknüpfe), aber da können wir uns ewig "streiten", ich würde es so machen wie ihr sagt, dürfen wir aber nicht.


Im Formular "frmBücher" kommt ein UFO, das das Form "frmAusleihen" anzeigt und über das Ausleih_ID-Feld verknüpft ist.

Das darf ich auch nicht machen. Die einzigen UF habe ich bei dem Fausleihen, wo die jeweiligen Kundennamen und Buchtitel zudem jeweiligen Schlüssel angezeigt wird, wenn ich ihn eintippe.

 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 24266
Re: Suche Button und Serienbrief über Access öffnen / ablegen
« Antwort #7 am: April 07, 2010, 15:40:28 »
Hallo,



in der Tat, er hat was zu bedeuten  ;)    --> das ist mein Amateurfunk-Rufzeichen



Ok mit der 1:1-Beziehung, wenn es denn so sein muß (was ich nach wie vor bezweife, dass das auch so gemeint ist) )

"die jeweiligen Primärschlüssel aus TBuecher und Tausleihen verknüpfe"   ist falsch! Natürlich gibt Access es Dir dann vor, wenn Du es so machst, aber das heißt noch lange nciht, dass es auch sinnhaftig richtig ist.

"dürfen wir aber nicht."  ok, dann eben nicht.  Aber die Konsequenz ist eine nicht funktionierende Db..

Du kannst ja mal, sobald die "Lösung" bekannt ist, diese hier posten  ;)

Offline Muhkuh86

  • Newbie
  • Beiträge: 10
Re: Suche Button und Serienbrief über Access öffnen / ablegen
« Antwort #8 am: April 07, 2010, 16:06:48 »
Werd ich machen, wenn ich alternative Lösungen bekomme. Wir müssen das dann abgeben und kriegen (wohl nur) eine Note, mal schauen.

Jetzt muss ich erstmal noch gucken wie ich die Sachen da umsetze.

Danke euch.

LG
 

database

  • Gast
Re: Suche Button und Serienbrief über Access öffnen / ablegen
« Antwort #9 am: April 07, 2010, 22:24:51 »
Hallo Nora,

Zitat
aber da können wir uns ewig "streiten"
Ich glaube ich gehe da mit DF6GL konform, wenn ich betone, dass hier nicht um Streit geht sondern darum, das du Verständnis bekommst für die Vorgänge in und um eine Datenbank.
Ich glaube eher, dass die Vorgabe lautet in der Tabelle Ausleihen einen Primärschlüssel zu führen - das ist OK, dann sollte es noch ein Feld geben, das vielleicht BuchID_FK heißt und ein Zahlenfeld vom Typ Long Integer ist.
Wenn du dieses dann mit dem Primärschlüssel der Tabelle Bücher verbindest - dann hasst du es richtig gemacht. (Ergibt dann die 1:n)
Tabellen hinzuzaubern und irgendwas zu verbinden von dem man der Meinung ist dass es so sein SOLL ist ein bisschen dünn und führt meist direkt ins Datenchaos!
Sollte diese Vorgabe tatsächlich in der Form von einem Lehrer kommen bin ich der Meinung, dass es besser ist wenn dieser eure Arbeiten nicht beurteilt  :-\ OK - dieses Urteil steht mir nicht zu ... aber dennoch.

DoCmd  ... das ist unter Acc2003 keine Besonderheit! Da hast du dich sicher verschrieben - kontrolliere noch mal bitte  DoCmd geht sicher!

Grüße

Peter

 

Offline Muhkuh86

  • Newbie
  • Beiträge: 10
Re: Suche Button und Serienbrief über Access öffnen / ablegen
« Antwort #10 am: April 08, 2010, 08:45:40 »
Guten Morgen,

also wir sollten einen Primärschlüssen bei den Kunden und bei den Büchern anlegen und diese als Fremdschlüssel bei Tausleihen zusammenführen. So ist es auch in der Aufgabenstellung gefordert.

Das DoCmd geht jetzt, glaube da war ein Leerzeichen davor :)

Geht das auch irgendwie in Verbindung mit mit Like "*", also dass man Mei eingibt und alle Meiers bekommt? :)

Ich glaube ich werde das über ein Suchformular mit Listenfeld lösen, sieht besser aus und zeigt ja dann nicht nur einen Treffer an. Oder was meint ihr?


Auf einen neuen langen Tag mit Access :)

LG
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 24266
Re: Suche Button und Serienbrief über Access öffnen / ablegen
« Antwort #11 am: April 08, 2010, 09:18:26 »
Hallo,

also doch 1:n ....     ;D  

DoCmd.OpenForm "tbl_Kunde", , , "[Name] like '" & InputBox("Name") & "*'"
Auf Name "Name" DRINGEND verzichten!! Mindestens Eckklammern benutzen!

Statt der Inputbox könnte (besser) auch ein normales ungebundenes Textfeld herhalten.

Wie und was Du zum Suchen nimmst, ist allerdings Geschmacksache...


Ich für meinen Teil benutze standardmäßig ein ungebundenes Kombi (im Formkopf oder -fuß) oder auch ein Listenfeld, evtl. zur besseren Einschränkung abhängige Kombi-/Listenfelder und filtere danach das Formular, bzw. weise dem eine neue Abfrage mit passender Kriteriumsangabe zu.


Offline Muhkuh86

  • Newbie
  • Beiträge: 10
Re: Suche Button und Serienbrief über Access öffnen / ablegen
« Antwort #12 am: April 08, 2010, 12:59:09 »
Huhu,

naja nein, 1:1 weil er es so sagt ^.^ /) ...



Danke für den Code. Ich habe jetzt mein Suchformular fertig und es funktioniert auch alels wunderbar :)

Nur eine "Kleinigkeit" hätte ich noch gern, falls das einfach möglich ist. Ich möchte auf einem Eintrag in der Liste klicken und dann diesen Datensatz in dem Formular FKunden direkt anzeigen lassen.

Wie mache ich das am besten?


Viele Grüße
 

database

  • Gast
Re: Suche Button und Serienbrief über Access öffnen / ablegen
« Antwort #13 am: April 08, 2010, 14:52:27 »
Hallo,

Zitat
naja nein, 1:1 weil er es so sagt
*AAAAArrrgggghhhhhhh*   ;D ;D


Zitat
Auf Name "Name" DRINGEND verzichten!! Mindestens Eckklammern benutzen
Hatte übersehen darauf hinzuweisen, dass die Bezeichnungen nur sinngemäß zu verstehen sind - Reservierte Bezeichner sind natürlich so wie Sonderzeichen ... tunlichst zu vermeiden.

Zur Gestaltung gibt es wie DF6GL bemerkt hat natürlich verschiedene Möglichkeiten, die Inputbox auch hier bitte als eine dieser Möglichkeiten zu sehen - sie bietet halt zum Ausprobieren den kürzesten Anlaufweg.

Zitat
Ich möchte auf einem Eintrag in der Liste klicken
Welche Liste meinst du damit - ein Listenfeld (Steuerelement) oder eine Kombibox (Kombinationsfeld)?

Wenn du das Listenfeld ansprichst, welches du für dein Suchformaular ins Auge gefasst hast...

Jedes Listenfeld sollte zumindest 2 Felder (Spalten) haben wobei die erste (nicht sichtbare) Spalte den Primärschlüssel der Herkunftstabelle / Abfrage / Werteliste darstellt.
Klickst du nun auf das Listenfeld um einen Datensatz zu markieren, kannst du über das Ereignis 'Beim Klicken' beispielsweise den Wert des Listenfeldes abfragen.
Das Listenfeld hat beim Klicken immer den Wert, der in der GEBUNDENEN SPALTE steht. Im beschriebenem Szenario also den Primäschlüssel des ausgewählten Datensatzes.
Natürlich kann man auch den Wert einer anderen Spalte auslesen - so zum Beispiel den der Namensspalte, wenn diese im Listenfeld angeezeigt wird oder Mitglied der RowSource ist.

Zugriff auf den Wert der gebundenen Spalte wenn das Listenfeld z.B. 'lstNamensliste' heißt:
Dim lngID as Long
lngID = Me!lstNamensliste

Zugriff auf eine weitere Spalte im Listenfeld
Dim strName as String
strName = Me!lstNamensliste.Column(n)

Wobei n für die Position der  Spalte im Listenfeld steht 0 = die gebundene Spalte, 1 = die erste sichtbare, 2 = die 2. sichtbare ....
Somit erhältstt du die Werte, die du dann als Filterkritereien beim Öffnen des Formulars angeben kannst.

HTH

Peter

 

Offline Muhkuh86

  • Newbie
  • Beiträge: 10
Re: Suche Button und Serienbrief über Access öffnen / ablegen
« Antwort #14 am: April 08, 2010, 16:22:55 »
Huhu,

muss ich dafür extra ein neues Formular erstellen oder kann ich das vorhandene FKunden dafür benutzen?

Und wie wende ich die Filterkriterien dann an?


Wenn dann würde ich das über die gebundene Spalte machen, ich weiss aber nicht wie ich das Filterkriterium einbinde.
 

 

Suche nach der richtigen Syntax (…datumsbezogen)

Begonnen von BrunielaBoard Tabelle/Abfrage

Antworten: 1
Aufrufe: 2578
Letzter Beitrag Juni 24, 2010, 11:31:37
von blackoutNO
Suche in großen Dateien

Begonnen von LexboroBoard Access Programmierung

Antworten: 1
Aufrufe: 2437
Letzter Beitrag Juli 22, 2010, 18:40:36
von Lexboro
DS-Suche aus Hauptformular in Unterformular (Code vorhanden)

Begonnen von gastBoard Access Programmierung

Antworten: 19
Aufrufe: 12918
Letzter Beitrag August 03, 2010, 16:06:33
von borst1
Suche im UFO ausführen

Begonnen von Bernie110Board Formular

Antworten: 2
Aufrufe: 2579
Letzter Beitrag August 11, 2010, 21:27:09
von Bernie110
Suche Frontend fuer den Modebereich/Textilbereich

Begonnen von Susi SorglosBoard Tabelle/Abfrage

Antworten: 1
Aufrufe: 2844
Letzter Beitrag September 11, 2010, 16:32:03
von database

Advertisment / Werbung Find and Replace - Banner-Ad

Advertisment / Werbung - Amazon Affiliate Links