Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: JoeSan78 am Juni 09, 2023, 15:05:38

Titel: Erstellung Info Meldung mit Abfrage
Beitrag von: JoeSan78 am Juni 09, 2023, 15:05:38
Hallo Zusammen,

vielen Dank für die Aufnahme. Ich glaube ich brauche doch Hilfe, alleine schaffe ich das irgendwie nicht und CHATGBT versteht mich nicht. Ich kann nur hoffen, dass vllt. hier jemand mir helfen kann. Es ist eine Herzensangelegenheit.

Ich habe 2006 mit Access 2003 eine Datenbank erstellt. Seit Jahren arbeite ich dran, mal oft mal gar nicht. Nun bin ich fast am Ende, es fehlen nur noch zwei Funktionen.

Man startet diese Datenbank und hat ein Mainformular, mit Buttons, bei diesen man zum beispiel DVD, Vinyls oder Audio CDs etc. (weitere Medien) als Datensätze eingeben kann, wie zum Beispiel Name, Titel, Genre, Preis und eben auch Verliehen an mit Datum als Textfeld formatiert. Nun habe ich eine Abfrage erstellt, diese scheint zu funktionieren. Ich möchte im Grunde für das Formular Vinyls beim Start eine Meldung haben die lauten müsste:" Es sind noch Vinyls verliehen!" dies soll mit der Bedingung gekoppelt sein, dass diese Meldung nur dann auftaucht, wenn auch welche verliehen worden sind (durch Eintrag ins Formular bzw. gesammelt in der Tabelle).

Meine Frage an euch, kann mir jemand Schritt für Schritt da durchhelfen? Ich arbeite grundsätzlich auf der 2003er Version (alter Laptop) habe aber auch Office 2013.

Vielen Dank im Voraus für eure Unterstützung.

LG
Joe
Titel: Re: Erstellung Info Meldung mit Abfrage
Beitrag von: MzKlMu am Juni 09, 2023, 15:17:13
Hallo,
ZitatNun habe ich eine Abfrage erstellt, diese scheint zu funktionieren.
Und was macht diese Abfrage ?
Bitte mal zeigen (SQL).
Zitatund eben auch Verliehen an mit Datum als Textfeld formatiert.
Was heißt als Textfeld formatiert. Ein Datum ist eine Zahl, aber kein Text.

Woran erkennt man denn, dass welche verliehen sind ?
Gibt es eine extra Tabelle für die verliehenen Tonträger ?

Zeige mal ein Bild des Beziehungsfensters damit man eine Vorstellung über die Struktur der Tabellen (Datenmodell) hat.
Titel: Re: Erstellung Info Meldung mit Abfrage
Beitrag von: JoeSan78 am Juni 09, 2023, 23:21:38
Hallo Klaus,

vielen Dank für deine Rückmeldung.
Die Abfrage zeigt mir lediglich an, wo ein Verliehenvermerk vorhanden ist, zugegeben auf primitiver Art und Weise. hier soll ja nur der Eintrag selbst gezählt werden und die Text Formatierung sollte ausreichen.
Anbei drei Screenshots, der erste ist die Abfrage, der zweite die Tabelle und der dritte Screenshot das dazugehörige Formular, ich kann auch gerne die Datenbank zukommen lassen, damit man die Bezüge besser erkennen kann.

Für das Beispiel an dem Tonträger Vinyl möchte ich mein Problem darstellen.

Meine Idee war mit dem Makro (Meldung) das Ergebnis meiner Abfrage in der Meldung zu verarbeiten, sprich durch die Abfrage wird erkannt, dass ein Eintrag vorhanden ist und dieser dann die Meldung bringt.

Hoffe ich konnte deine Fragen beantworten.

LG
Joe

 

Titel: Re: Erstellung Info Meldung mit Abfrage
Beitrag von: MzKlMu am Juni 10, 2023, 00:21:31
Hallo,
Zitatund die Text Formatierung
Was willst Du dauernd mit Textformatierung ?

Zum Zählen brauchst Du keine Abfrage, da reicht DCount.

MsgBox DCount("[Verliehen an / Datum]", "tblGTVinyl")
Bitte zeige den SQL Text der Abfrage. Den Abfrageentwurf kann man in die SQL Sicht umschalten.

Und das Beziehungsbild wäre auch informativer als die Bilder.
Oder hast Du nur diese eine Tabelle.

PS:
Wenn man die Bilder sieht, kommen heftige Zweifel an einem sinnvollen Datenmodell auf.
Daher die Bitte mal das Beziehungsbild zu zeigen.
Titel: Re: Erstellung Info Meldung mit Abfrage
Beitrag von: JoeSan78 am Juni 11, 2023, 00:01:24
Hallo Zusammen,

also die SQl-Ansicht zeigt folgendes an:

SELECT [Verliehen an / Datum:]
FROM tblGtVinyl
WHERE [Verliehen an / Datum:]=[tblGtVinyl]![Verliehen an / Datum:]

Ok ehrlich gesagt was das Beziehungsbild betrifft, da hab ich nicht gefunden, wo man diese Ansicht herbekommt, habe aber ein Objektabhängigkeitsscreenshot.

Ok das das Datenmodell sicher effizienter gestaltet werden könnte wage ich nicht zu bezweifeln, das Ganze basiert auf das was ich anwenden möchte und was ich zzur Archivierung aber auch für das DJing benötige, denn ursprünglich gab es nur den Button "Vinyls".

Das mit der Msgbox hab ich zumindest soweit verstanden, dass ich diesen Passus wohl als Code sehe für VBA? Wie füge ich dann aber jetzt hinzu, dass eine entsprechende Meldung kommt? Und wenn jetzt kein Verlieheneintrag vorhanden ist, dass auch diese Meldung nicht kommt?

Gebe zu, ein Paar Makros zu machen oder ein SQL ist eine Sache aber VBA da habe ich leider viel vergessen und nicht mehr im Element.

Vielen Dank erneut für den regen Austausch.

LG
Joe



Titel: Re: Erstellung Info Meldung mit Abfrage
Beitrag von: MzKlMu am Juni 11, 2023, 00:20:31
Hallo,
Zitatwas das Beziehungsbild betrifft, da hab ich nicht gefunden, wo man diese Ansicht herbekommt,
Beziehungen müssen aktiv von Dir im Beziehungsfenster angelegt werden. Das Beziehungsbild findest Du in den Datenbanktools.
Beziehungen sind das A+O einer Datenbank.

Welche Tabellen gibt es denn in Deiner DB ?
Wann hättest Du gern dass die Meldung kommt ?

PS:
Zitat[Verliehen an / Datum:]
Solche Feldnamen sind eine Katastrophe. In Feld und Objektnamen sollte man Leer und Sonderzeichen unbedingt vermeiden. Am zuhörigen Bezeichnungsfeld kannst Du Dich an austoben.
Titel: Re: Erstellung Info Meldung mit Abfrage
Beitrag von: Beaker s.a. am Juni 11, 2023, 12:42:08
Hallo,

Ohne auf das wahrscheinlich falsche oder gar nicht vorhandene Datenmodell
einzugehen.
Anzahl verliehener Vinyls
Anzahl = DCount("*", "tblGtVinyl", "verliehen_am Is Not NULL"Anzeige aller verliehener Vinyls
SELECT Feldliste
FROM tblGtVinyl
WHERE verliehen_am Is Not NULL

Zu deiner Abfrage, - ein Feld mit sich selber zu vergleichen ergibt immer
True, so dass alle DS angezeigt (oder auch gezählt) werden.

Beziehungsfenster: öffenen im Menu "Datenbanktools" (s. Klaus), im Kontextmenu
"alle anzeigen" auswählen, die angezeigten Systemtabellen als erstes wieder
ausblenden (die braucht man nicht zu sehen), Screenshot machen und hier hochladen.

gruss ekkehard
Titel: Re: Erstellung Info Meldung mit Abfrage
Beitrag von: MzKlMu am Juni 11, 2023, 12:54:07
@Ekkehard
Mit der Formel in #3 kannst Du Dir zum Zählen die Where Klausel sparen.
AnzahlVerl: DCount("[Verliehen an / Datum]", "tblGTVinyl")Wenn der Feldname (statt *) verwendet wird, werden nur die DS gezählt die einen Eintrag im Feld haben. Null fällt automatisch raus.
Titel: Re: Erstellung Info Meldung mit Abfrage
Beitrag von: Beaker s.a. am Juni 11, 2023, 16:47:49
Hallo Klaus,

Ja, vergesse ich immer wieder :-(.
Hattest du mich schon mal darauf hingewiesen.

gruss ekkehard
Titel: Re: Erstellung Info Meldung mit Abfrage
Beitrag von: JoeSan78 am Juni 11, 2023, 22:08:48
Hallo Zusammen,

habe in Access 2003 das nicht gefunden aber habe auch höhere Versionen und wurde fündig. Habe ein Screenshot zu den Beziehungen hochgeladen.

Um auf die Frage zurückzukommen, wo genau diese Meldung kommen soll möchte ich das kurz zusammenfassen. Also Screenshot 2 zeigt das Mainformular, am Beispiel von "Vinyls" soll beim Klicken von dem Button zum Öffnen des Formulares auch entsprechend die Meldung kommen:"Es sind noch Vinyls verliehen!" (Meldung rein Informativ). Im Formular "Vinyls" gibt es ja ein kleinerer Button, bei dem ich mir die Liste der verliehenen Vinyls anzeigen lassen und als PDf ausdrucken kann.

Natürlich soll das auf die anderen Eingabeformulare für Audio-CDs, DVDs etc. übertragen werden.

Ich bin im Prinzip nicht in der Lage ein Befehl oder ein VBA Code fehlerfrei einzufügen, es gab immer ein Fehler bezüglich der Syntax bzw. Fehlercode 3075.
Kann den Fehler nicht finden und habe die Savecopy der Datenbank wieder hergestellt.

Vielen Dank für euer Schwarmwissen, es ist sehr spannend, da hier auch Meinungen und Tipps mitgeteilt werden, die mein Organizer doch perfekter machen würde.

LG
Joe
Titel: Re: Erstellung Info Meldung mit Abfrage
Beitrag von: MzKlMu am Juni 11, 2023, 23:51:51
Hallo,
Zitathabe in Access 2003 das nicht gefunden
Das gibt es auch in Access2003.
Zitatda hier auch Meinungen und Tipps mitgeteilt werden, die mein Organizer doch perfekter machen würde.
Die hier vorliegende Struktur ist unbrauchbar.
Die Tonträger (Vinyl, DVD, Audio, VHS) gehören alle in eine Tabelle mit einem Kennzeichen für die Art des Tonträgers. Für das Verleihen eines Tonträgers ist eine extra Tabelle erforderlich. Darin werden auch die Namen derer die geliehen haben erfasst. Die Beziehungen sind auch unvollständig. Ist jetzt aber egal, weil die Struktur (Datenmodell) ohnehin nicht passt.

Du solltest Dir die Grundlagen erarbeiten und dann noch mal von vorn anfangen.

https://www.access-tutorial.de/
Titel: Re: Erstellung Info Meldung mit Abfrage
Beitrag von: JoeSan78 am Juni 12, 2023, 23:04:10
Hallo Zusammen,

das ganze war ja mal ursprünglich zusammen in einer Tabelle, alerdings war sie für meinen Geschmack zu breit. Tonträger wollte ich von den Filmgeschichten und von den PC-Spielen bzw. Videospielen trennen, da einfach zu unterschiedlichen Parameter vorhanden sind, die ich benötige. Daran hatte ich aber auch gedacht, zumal ich auch gerne keine vorgefertigten Filter nutzt, sondern nur ein Abfrageformular habe, welche mit einzeiligen Listenfelder versehen sind. Hier würden aber bei falsche parameter ständig Fehlermeldungen kommen oder keine Ergebnisse, diese müssten so eingegeben werden, dass es keinen Konflikt gibt. Beispiel, wenn ich Stirb Langsam suche kann man nicht auf ungemixt oder remix oder Plattform mit einstellen dürfen, ihr könnt sehen, dass ich das alles eben trennen wollte, naja zugegeben geht sicher besser, aber es muss doch einen weg geben mit vba einen Code mit MSGBOX einzugeben, welches noch eine Meldung angibt, die wiederum nur mit ok weggeclickt werden kann.

vielen Dank für den Hinweis, werde mir diesbezüglich wohl nochmal Gedanken machen müssen.

MfG
Joe
Titel: Re: Erstellung Info Meldung mit Abfrage
Beitrag von: MzKlMu am Juni 12, 2023, 23:56:57
Hallo,

Zitataber es muss doch einen weg geben mit vba einen Code mit MSGBOX einzugeben,
Du hast doch schon Lösungsvorschläge dazu bekommen. In meiner Antwort in #3 steht doch eine VBA Code für eine MsgBox die weggeklickt werden muss. Die zusätzliche Zeile muss nur zu dem Code dazu der das entsprechende Formular öffnet. Da braucht man auch wie gesagt keine Abfrage dazu.
Wo hapert es denn jetzt noch ?
Titel: Re: Erstellung Info Meldung mit Abfrage
Beitrag von: JoeSan78 am Juni 13, 2023, 22:23:40
Hallo Klaus,

ehm Missverständnis, dachte dass da noch was dazu ergänzt werden muss, also ich würde diesen Code unter dem Formular unter "Beim Laden" eingeben. Dann sollte das gehen.
Werde es gleich ausprobieren.

Vielen Dank für Eure Anregungen und, Tipps und Lösung.

LG
Joe
Titel: Re: Erstellung Info Meldung mit Abfrage
Beitrag von: JoeSan78 am Juni 13, 2023, 23:46:33
Hallo Zusammen,

hat gut geklappt allerdings wollte ich eine andere Art ausprobieren. Im Screenshot kann man sehen, wie ich mir das vorgestellt habe, mit dem unterschied, dass aktuell eine Vinyl verliehen ist und die Meldung falsch ist, habe jetzt alles ausprobiert, komme aber nicht drauf, habe folgenden Code verwendet:

Private Sub Form_Load()
    Dim rs As Recordset
    Dim count As Integer
    Dim strSQL As String
    strSQL = "SELECT COUNT(*) FROM tblGtVinyl WHERE Verliehen='Ja';"
    On Error Resume Next
    Set rs = CurrentDb.OpenRecordset(strSQL)
    If rs.EOF Then
        MsgBox "Es sind keine Vinyls verliehen!", vbInformation, "Hinweis"
    Else
        count = rs.Fields(0).Value
        rs.Close
        If count > 0 Then
            MsgBox "Es sind noch Vinyls verliehen!", vbInformation, "Hinweis"
        Else
            MsgBox "Es sind keine Vinyls verliehen!", vbInformation, "Hinweis"
        End If
        End If
    On Error GoTo 0
End Sub


Für heute gebe ich es auf. Glaube aber, dass ich der Lösung nahe bin, was meint Ihr?

Schon mal Vorab Danke.

LG
Joe
Titel: Re: Erstellung Info Meldung mit Abfrage
Beitrag von: MzKlMu am Juni 14, 2023, 00:58:55
Hallo,
warum nimmst Du nicht den Vorschlag von mir?
Was Du da hast ist doch viel zu umständlich.
Private Sub Form_Load()
If DCount("[Verliehen an / Datum]", "tblGTVinyl") = 0 then
        MsgBox "Es sind keine Vinyls verliehen!", vbInformation, "Hinweis"
    Else
        MsgBox "Es sind " & DCount("[Verliehen an / Datum]", "tblGTVinyl") & " Vinyls verliehen!", vbInformation, "Hinweis"
End Sub


PS:
Bitte für Codedarstellungen die Codetags des Forums verwenden, siehe Dein letzter beitrag.
Titel: Re: Erstellung Info Meldung mit Abfrage
Beitrag von: Beaker s.a. am Juni 14, 2023, 10:26:35
Hallo,
Und wegen besserer Lesbarkeit und des doppelten Aufrufs von DCount
würde ich dazu eine Variable hernehmen
Private Sub Form_Load()
Dim Vv As Integer
Vv = DCount("[Verliehen an / Datum]", "tblGTVinyl")
If Vv = 0 then
        MsgBox "Es sind keine Vinyls verliehen!", vbInformation, "Hinweis"
    Else
        MsgBox "Es sind " & Vv & " Vinyls verliehen!", vbInformation, "Hinweis"
End Sub

gruss ekkehard
Titel: Re: Erstellung Info Meldung mit Abfrage
Beitrag von: MzKlMu am Juni 14, 2023, 10:30:21
Einverstanden  :)  ;D  8)
Titel: Re: Erstellung Info Meldung mit Abfrage
Beitrag von: JoeSan78 am Juni 14, 2023, 23:39:41
Hallo Zusammen,

ja funktioniert bei beiden Vorschläge und die da vor hätten sicher auch funktioniert, es stimmt, ich hatte unsauber bei der Benennung der Tabelleninhalte gearbeitet.

Nun habe ich der Letzte Vorschlag eingefügt. Vielen Dank hierfür, für meine letzte Funktion möchte ich es erstmal selbst versuchen.

LG
Joe

PS: Danke für den TAG Hinweis für das Einfügen der Codes.