1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Frage zu MS Access Abfrage

Discussion in 'Office-Programme' started by gilldex, Oct 10, 2006.

Thread Status:
Not open for further replies.
  1. gilldex

    gilldex Byte

    Hallo

    Ich habe eine Datenbank in der gelistet wird wer wenn an welchem Datum angerufen hat. Immer am Ende der aktuallen Woche wird die Liste gedruckt. Die Liste wird natürlich immer länger und ich habe darum eine Abfrage eingebaut die mir meinen Bericht auf die letzt Woche kürzt.

    Nun möchte ich aber dass der Benutzer manuell den Zeitraum eingeben kann aus welchem dann der Bericht erstellt wird.
    Ich komme aber nicht wirklich weiter weill ich nicht weiss wie ich das angehen soll.

    Danke für jede Hilfe!
     
  2. Hascheff

    Hascheff Moderator

    Schau mal [post=1158206]hier[/post]!
    Oder gibt es noch Fragen?
     
  3. gilldex

    gilldex Byte

    Ui. Habe gar nicht gesehen dass noch einer geantwortet hatte. Deine Lösung ging auf jedenfall ohne Probleme.

    Danke dir vielmals!!!
     
  4. Hascheff

    Hascheff Moderator

    Bitteschön!
     
  5. gilldex

    gilldex Byte

    Ich hab zwar doch noch eie Frage. Ich möchte bei der Abfrage das Start und Enddatum eben aus einem Textfeld in einem Formular holen. Nur funktioniert das nicht so ganz. Es erscheinen immer wieder die beiden Felder die mich dann abfragen von wann bis wann.
     
  6. Hascheff

    Hascheff Moderator

    Dann musst du in diesem Formular eine Schaltfläche einbauen. Wenn du in der Werkzeugbox "Assistent benutzen" aktiviert hast, bekommt die Schaltfläche vorerst die Abfrage zugewiesen. Damit hast du aber noch nichts gewonnen.
    Auf der Registerkarte Ereignisse der Eigenschaften der Schaltfläche kannst du dann hinter Klicken auf die drei Punkte gehen. Dann bist du im VBA-Editor. Dort siehst du, wie die Abfrage gestartet wird.
    Diese Befehle ersetzt du durch einen SQL-Befehl.
    Ich gehe dabei folgendermaßen vor:
    Im Abfragefenster gehe ich auf die Ansicht SQL und kopiere das Ganze. Dann gehe ich wieder in dasVBA-Fenster und füge unter dim... ein. Keine Panik wegen der roten Zeilen, aber weils beruhigender aussieht, setze ich überall ein Hochkomma davor.


    Mehr dazu später.:mussweg:
     
  7. Hascheff

    Hascheff Moderator

    Fortsetzung
    Zunächst ist noch eine kleine Vorarbeit im Formular zu leisten: Die beiden Textfelder erhalten vernünftige Bezeichnungen (findest du in Eigenschaften - Andere). Ich geh für das Folgende davon aus, dass sie VonDat und BisDat heißen.
    Nun wieder zum VBA-Code.
    Mit dim SqlStr as String definierst du eine Stringvariable, und in die muss im Folgenden die ganze SQL-Abfrage reingesteckt werden. Es ist vorteilhaft, wenn der Text am Ende möglichst nicht über den rechten Fensterrand hinausragt, so kann man leichter die notwendigen Änderungen vornehmen.
    Deshalb gehe ich folgendermaßen vor: Ich schreibe
    Code:
    SqlStr = ""
    SqlStr = SqlStr & ""
    Die zweite Zeile kopiere ich mehrmals untereinander, überschüssige Zeilen werden am Ende gelöscht.
    Dann markiere ich Teile des SQL-Textes und ziehe ihn hintereinanderweg zwischen die Anführungszeichen.
    Aufpassen muss man auf die Leerzeichen, der VBA-Editor hat am Zeilenende Leerzeichen gelöscht. Ich achte darauf schon weiter oben beim Setzen der Hochkommas. Hinter dem Hochkomma wird ein Leerzeichen gesetzt.
    Wenn die String-Variable gefüllt ist, fehlt nur noch die Ausführung durch
    Code:
    DoCmd.RunSql SqlStr
    Wenn du jetzt testen würdest, würde immer noch genau dasselbe wie immer passieren.
    Nun kommen die entscheidenden Änderungen.
    Im SqlStr stehen die Parameter, ich glaub, ich habe sie [VonDatum] und [BisDatum] genannt.
    Statt dieser Parameter schreibst du
    Code:
    " & Me!VonDat & "
    bzw. BisDat
    und das wars!
    Achte darauf, dass die Anführungszeichen mitgeschrieben werden müssen. Entsteht durch Randlage links "" & oder rechts & "", kann dies natürlich weggelassen werden.
    Ich hoffe, ich habe alles noch richtig im Kopf gehabt. Sag Bescheid.
    PS.: Überflüssiges (Hochkommas) kann gelöscht werden.
     
  8. gilldex

    gilldex Byte

    Ich habe das ganze nun gestern Abend auf eine andere Art gelöst bekommen. Danke dir trotzdem.

    Nun plagt mich jedoch noch als allerletztes ein Problem. Ich meiner Liste erfasse ich die Anrufe die eingehen. Wenn jetzt an einem Tag 50+ Anrufe kommen steht auf meinen Bericht dann bei jedem Kontakt das Datum. Ist es nicht möglich dass das Datum für jeden Tag nur einmal geschrieben wird in den Bericht? Also für jeden Tag das Datum und bei den restlichen Kontakten am gleichen Tag soll das Datum nicht kommen.

    Hab schon so einiges versucht...
     
  9. Hascheff

    Hascheff Moderator

    Jein.
    Ja, es gibt noch einen komlizierteren Weg, so dass das Datum neben dem ersten Datensatz erscheint.
    Ich denke, es genügt, wenn das Datum über den Datensätzen steht. Dann hat man auch den Platz effektiver genutzt.

    Öffne den Berichtsentwurf und wähle Ansicht - Sortieren und gruppieren. Gehe in die erste freie Zeile und Wähle das Feld Datum, wenn es nicht schon in der Liste steht. Durch Ziehen mit der Maus lässt sich die Reihenfolge ändern.
    Jedenfalls muss der Cursor in der Zeile Datum blinken, dann gehst du unten bei Gruppeneigenschaften und wählst hinter Gruppenkopf Ja.
    Nun kannst du dieses Fenster schließen. Im Detailbereich nimmst du das Datumsfeld, schneidest es aus und fügst es im neu entstandenen Gruppenkopf Datum ein. Der Rest ist Kosmetik.

    Da fällt mir ein, ich rede von Access 2000. Was hast du eigentlich?
     
  10. gilldex

    gilldex Byte

    Hallo, ich werde es mal so versuchen. Ich benutze eigentlich nur Access 2003
     
Thread Status:
Not open for further replies.

Share This Page