Formular mit Daten aus Recordset öffnen

Moderator: ModerationP

Formular mit Daten aus Recordset öffnen

Beitragvon Steffen112 » 05. Aug 2020, 12:07

Hallo,

ich schreibe gerade für mich und meine Kollegen eine Datenbank zur Dokumentenverwaltung.

Nun wollte ich eine Funktion einfügen um Bereits erstellte Dokumente zu ändern.
Weiter unten ist mein Code wie ich mir den gewünschten Bericht mir anzeigen lassen kann, dieser Funktioniert auch.
Leider bekomme ich ihn aber nicht umgewandelt um das gewünschte "Formular" zu öffnen, dort zeigt er mir nämlich immer nur den ersten Datensatz an :(

kann mir bitte wer helfen? danke im Vorraus.


Code: Alles auswählen
Private Sub cmdProtokollAnsehen_Click()
'mdlBerichte_Uebersicht.Berichte_Ansehen ("Notrufannahme")
'
If Form_frmD_MeldungAnsehen.txtFilterID = "" Then
    MsgBox ("Bitte geben sie eine Protokoll-ID ein" + vbCrLf + "Diese sind in der ersten Spalte abgebildet")
    Exit Sub
End If


   Dim db     As DAO.Database
   Dim rs     As DAO.Recordset
   Dim strSQL As String


   Set db = CurrentDb                 ' Datenbank definieren
   strSQL = "SELECT * FROM tblNotrufabfrage"   ' SQL-String definieren
   Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)  ' Recordset öffnen (schreibender Zugriff)

Do Until rs.EOF
    If CStr(rs!NotrufannahmeID) = Form_frmNotrufannahmeAnsehen.txtFilterID Then
        DoCmd.OpenReport "rptNotrufabfrage", acViewReport
        Report_rptNotrufabfrage.txtBerichtID = Form_frmNotrufannahmeAnsehen.txtFilterID
        Report_rptNotrufabfrage.Requery
        rs.Close
        Exit Sub
    End If
rs.MoveNext
Loop
MsgBox ("zur eingebenen ID wurde kein Protokoll gefunden")




End Sub
Mit freundlichen Grüßen

Steffen
Steffen112
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 209
Registriert: 07. Jun 2016, 00:09

Re: Formular mit Daten aus Recordset öffnen

Beitragvon Bitsqueezer » 05. Aug 2020, 17:19

Hallo,

vielleicht solltest Du nicht gerade IN der Schleife, in der Du durch ein Recordset gehst, dasselbe schließen...?

Und dann auch noch mit Exit Sub ganz rausgehen, mitten aus der Schleife...weia...

Zuletzt könntest Du auch einfach die Abfrage vorher filtern und dann den Report alleine die Seiten je Eintrag generieren, dann sparst Du auch noch die Schleife und viel Gedöns.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7682
Registriert: 21. Jun 2007, 12:17

Re: Formular mit Daten aus Recordset öffnen

Beitragvon knobbi38 » 05. Aug 2020, 23:35

Hallo Steffen,

also deinen Code solltest du nochmal grundlegend überarbeiten. Auch in der Programmierung gelten gewisse Regeln, die beachtet werden sollten!

Diese beiden Codezeile geben überhaupt keinen Sinn:
Code: Alles auswählen
Report_rptNotrufabfrage.txtBerichtID = Form_frmNotrufannahmeAnsehen.txtFilterID
Report_rptNotrufabfrage.Requery

Mal abgesehen davon, daß hier nicht die aktuelle Instanz des Reports, sondern die Default-Instanz eines Reports angesprochen wird, kann ein Report nicht nachträglich gefiltert werden. Eine Report mußt du dir in etwa wie ein Stück Papier vorstellen, das nach dem Bedrucken nicht mehr verändert werden kann. Zum Einschränken der Datenmenge mußt du entweder die Datenquelle des Reports anpassen oder beim Öffnen des Reports mit DoCmd eine Where-Bedingung mitgeben.

Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 2438
Registriert: 02. Jul 2015, 14:23

Re: Formular mit Daten aus Recordset öffnen

Beitragvon knobbi38 » 05. Aug 2020, 23:36

Hallo Steffen,

also deinen Code solltest du nochmal grundlegend überarbeiten. Auch in der Programmierung gelten gewisse Regeln, die beachtet werden sollten!

Diese beiden Codezeile geben überhaupt keinen Sinn:
Code: Alles auswählen
Report_rptNotrufabfrage.txtBerichtID = Form_frmNotrufannahmeAnsehen.txtFilterID
Report_rptNotrufabfrage.Requery

Mal abgesehen davon, daß hier nicht die aktuelle Instanz des Reports, sondern die Default-Instanz eines Reports angesprochen wird, kann ein Report nicht nachträglich gefiltert werden. Eine Report mußt du dir in etwa wie ein Stück Papier vorstellen, das nach dem Bedrucken nicht mehr verändert werden kann. Zum Einschränken der Datenmenge mußt du entweder die Datenquelle des Reports anpassen oder beim Öffnen des Reports mit DoCmd eine Where-Bedingung mitgeben.

Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 2438
Registriert: 02. Jul 2015, 14:23

Re: Formular mit Daten aus Recordset öffnen

Beitragvon Steffen112 » 06. Aug 2020, 05:26

Hallo,

Danke für die Antworten,
meine Frage war aber wie ich ein Formular öffne, mit den Datensatz aus dem Recordset,

ich habe den Code angegeben da ich so den Bericht öffne und ich dachte man kann den dafür Umwandeln.

wegen den Bemerkungen "Recordset in schleife schließen und Prozedur verlassen":
warum darf man das nicht? ich beende die Prozedur doch so oder so? ja ich könnte "exit Do" nehmen und den rest unten drunter schreiben nur so brauche ich für die MsgBox keine Abfrage (inkl. Hilfsvariable) ob ein Ergebniss gefunden wurde.

Was die 2 Codezeilen angehet, ich hatte es da auch nicht hinbekommen das der richtige Bericht göffnet wird aber mit den 2 Zeilen funktioniert es lustiger weise.
Im Schrittweisen durchgehen macht ACCESS da folgendes:

Bericht öffen (leer) -> DoCmd.OpenReport "rptNotrufabfrage", acViewReport
ID Setzen -> Report_rptNotrufabfrage.txtBerichtID = Form_frmNotrufannahmeAnsehen.txtFilterID
aktualisieren -> Report_rptNotrufabfrage.Requery
und lustiger weise habe ich dann mein gewünschter Bericht offen
Mit freundlichen Grüßen

Steffen
Steffen112
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 209
Registriert: 07. Jun 2016, 00:09

Re: Formular mit Daten aus Recordset öffnen

Beitragvon Bitsqueezer » 06. Aug 2020, 08:14

Hallo,

wozu machst Du dann eine Schleife, wenn Du nur genau einen Datensatz öffnen willst?

Warum schaust Du Dir nicht mal die Parameter von "OpenForm" und "OpenReport" an, dann wäre das ein Einzeiler... ja, die F1-Taste schmerzt immer so beim Drücken...ich weiß...

Und: Was glaubst Du, wieviele Menschen vor Dir versucht haben, ein Formular (oder Report) zu öffnen, das einen gewünschten Datensatz anzeigt? Ich verstehe wirklich echt nicht mehr, wieso man immer die gleiche Frage erneut stellt, obwohl sie schon gefühlt millionenfach beantwortet wurde.

Mal kurz die Frage in einer Suchmaschine Deiner Wahl (oder nur hier im Forum) eingeben und Du bekommst so viele Antworten, daß Du nicht genug Lebenszeit hast, um sie alle zu lesen...

Wenn Du ein spezielles Problem hast, das sich damit immer noch nicht beantworten läßt, dann müßtest Du schon mal eine Demodatenbank hochladen, die man sich anschauen kann.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7682
Registriert: 21. Jun 2007, 12:17

Re: Formular mit Daten aus Recordset öffnen

Beitragvon Steffen112 » 06. Aug 2020, 09:04

Bitsqueezer hat geschrieben:Hallo,

wozu machst Du dann eine Schleife, wenn Du nur genau einen Datensatz öffnen willst?

Warum schaust Du Dir nicht mal die Parameter von "OpenForm" und "OpenReport" an, dann wäre das ein Einzeiler... ja, die F1-Taste schmerzt immer so beim Drücken...ich weiß...

Und: Was glaubst Du, wieviele Menschen vor Dir versucht haben, ein Formular (oder Report) zu öffnen, das einen gewünschten Datensatz anzeigt? Ich verstehe wirklich echt nicht mehr, wieso man immer die gleiche Frage erneut stellt, obwohl sie schon gefühlt millionenfach beantwortet wurde.

Mal kurz die Frage in einer Suchmaschine Deiner Wahl (oder nur hier im Forum) eingeben und Du bekommst so viele Antworten, daß Du nicht genug Lebenszeit hast, um sie alle zu lesen...

Wenn Du ein spezielles Problem hast, das sich damit immer noch nicht beantworten läßt, dann müßtest Du schon mal eine Demodatenbank hochladen, die man sich anschauen kann.

Gruß

Christian


Falls du dir den MsgBox-Text im Code (Nach der Schleife) zufällig durchgelesen hast, was du aber nicht hast sonst wüsstest du das die Schleife, eigentlich nicht zum Öffnen gedacht ist, sondern der Kontrolle ob zu der im Textfeld eingegebenen ID auch ein Bericht exsistiert, damit ich den Fehler nicht abfangen muss, sondern ihn direkt verhinder.
Code: Alles auswählen
MsgBox ("zur eingebenen ID wurde kein Protokoll gefunden")

(Entschuldige aber wenn es einfacher geht, dann sag wie, ich suche keine Hilfe für funktionierende Dinge, aber wenn mir jemanden FREUNDLICH sagt wie es leichter geht, bin ich gerne für Vorschläge offen)

UND JA ich habe schon gegoogelt und die Hilfe genommen, aber nichts passendes gefunden bzw. bekomme ich es nicht zum laufen, frag ja nicht aus dämlicher langeweile hier im Forum!
Hab auch versucht den Filter einzustellen aber nix gefunden.
mein Problem ist ja auch nicht das formular zu öffnen
Code: Alles auswählen
DoCmd.OpenForm "Name vom Formular", acNormal

Hab es danach auch schon mit Filterbedingung versucht das will auch nicht.
Code: Alles auswählen
DoCmd.OpenForm "Name vom Formular", acNormal, ID= Suchtextfeld für ID


deswegen frage ich hier
Mit freundlichen Grüßen

Steffen
Steffen112
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 209
Registriert: 07. Jun 2016, 00:09

Re: Formular mit Daten aus Recordset öffnen

Beitragvon knobbi38 » 06. Aug 2020, 09:23

Hallo Steffen,

Was die 2 Codezeilen angehet, ich hatte es da auch nicht hinbekommen das der richtige Bericht göffnet wird aber mit den 2 Zeilen funktioniert es lustiger weise. Im Schrittweisen durchgehen macht ACCESS da folgendes

Mir ist klar, was Access da macht und warum das für dich scheinbar funktioniert, aber vielleicht solltest du nochmal über Objekte und deren Instanzen in VBA etwas nachlesen, vielleicht wird es dann klarer und mit lustig hat das nun gar nichts zu tun.

Hier ein Beispiel, wie ein geöffneter Report angesprochen wird:
Code: Alles auswählen
  Const RPT_NAME As String = "MyReport"
 
  DoCmd.OpenReport RPT_NAME, acViewPreview
 
  If CurrentProject.AllReports(RPT_NAME) Then
    With Reports(RPT_NAME)
      ' ... TODO ---
    End With
  End If

Was den Rest betrifft, hast du ja scho genügend Hinweise erhalten, daß die Programmstruktur mehr als verbesserungswürdig ist. Auch hier nochmal der Tip, sich mit den Grundlagen der Programmierung zu beschäftigen. Einfach drauf los nur weil es lustigerweise funktioniert, ist bestimmt nicht der richtige Weg.

Warum möchtest du überhaupt ein Formular so öffnen? Das gibt doch keinen Sinn. Da dir die Kriterien bekannt sind, kannst du diese einfach per Openform mit übergeben.

Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 2438
Registriert: 02. Jul 2015, 14:23

Re: Formular mit Daten aus Recordset öffnen

Beitragvon knobbi38 » 06. Aug 2020, 09:35

Steffen hat geschrieben:... sonst wüsstest du das die Schleife, eigentlich nicht zum Öffnen gedacht ist, sondern der Kontrolle ob zu der im Textfeld eingegebenen ID auch ein Bericht exsistiert, damit ich den Fehler nicht abfangen muss, sondern ihn direkt verhinder.

Du öffnest ein Recorset, erstellst eine Schleife und öffnest darin einen Bericht, um herauszubekommen, ob eine ID in einer Tabelle existiert und das nur um einen Fehler zu verhindern?
Ich glaub's nicht ... :shock:

Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 2438
Registriert: 02. Jul 2015, 14:23


Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: Bitsqueezer, Marmeladenglas und 4 Gäste