Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Listenauswertung

Begonnen von Ferranti, Juli 27, 2013, 00:15:20

⏪ vorheriges - nächstes ⏩

Ferranti

Hallo liebe Access Experten,
ich habe ein Formular mit Listenfeld erzeugt. Ich greife dazu auf eine Abfrage zu.
Durch Maus-Click wähle ich 1 Zeile ( Record ) aus und drucke diese Daten dann aus. Das funktioniert auch .
Jetzt möchte ich aber die Felder-Inhalte dieses Datensatzes weiter bearbeiten.
Und genau da komme ich nicht weiter.....
Ich hänge die Prozedur mit Kommentaren an und erbitte Eure Hilfe


Private Sub btn_Drucken_Click()
   Dim Element As Variant
   Dim EVUNr As Integer
   Dim Bedingung As String
   Dim rscE As Recordset
   Dim evunam As String
     
     
   
                ' Auswahl nur 1 Satz , war ursprünglich für beliebige gebaut. Ich habe von <>0 auf =1 geändert.

   If Me!Lst_EVUAuswertung.ItemsSelected.Count = 1 Then
       For Each Element In Me.Lst_EVUAuswertung.ItemsSelected
           EVUNr = Me.Lst_EVUAuswertung.ItemData(Element)
           Bedingung = Bedingung & "StromID =" & EVUNr & " OR "
           
           Next Element
        Bedingung = Left(Bedingung, Len(Bedingung) - 4)
             ' On Error Resume Next
              ' DoCmd.OpenReport "EVUListe", acViewPreview, , Bedingung   ' Ausdruck der mark. Sätze
             
   End If    ' Bis hier alles ok.
 '.....................................................................................
   
       
      MsgBox EVUNr    ' zum Testen:  Hier wird die Korrekt. Datensatz Nr. (StromId) gezeigt, die in der Liste ausgewählt wurde

         DoCmd.OpenQuery ("afrevdat"), , acEdit
       
       DoCmd.GoToRecord acDataQuery, "afrevdat", acGoTo, EVUNr          ' afrevdat ist Name der Abfrage
     
         
         
         Let evunam = Me.EVU_Name
         MsgBox evunam                     'zum Testen: Hier wird immer der 1. Wert aus dem Listenfeld gezeigt anstatt
                                                      ' aus dem Satz, den ich mit der EVUNr angebe.......
                   
     
   

End Sub

DF6GL

Hallo,

ZitatLet evunam = Me.EVU_Name
          MsgBox evunam                     'zum Testen: Hier wird immer der 1. Wert aus dem Listenfeld gezeigt anstatt
                                                       ' aus dem Satz, den ich mit der EVUNr angebe.......

Genau so ist das ja auch angegeben.....


Wie kommst Du darauf, dass in  "evunam"  ein Feldwert aus dem aktuellen Datensatz der geöffneten Abfrage stehen könnte?


Zitat"Jetzt möchte ich aber die Felder-Inhalte dieses Datensatzes weiter bearbeiten."

Vergiss diese Methode der Editierung eines Abfrageergebnisses  und erstelle ein Formular, mit dem der/die Datensätze gefiltert  und editiert werden können.


Ferranti

Hallo Fanz

du hast sicher recht, es gibt bessere Wege...
Aber ich probiere im Moment als Einsteiger Verschiedenes.

Meine Überlegung war: Wenn ich (wie im oberen Teil) Bedingung an den Report übergebe mit  "StromId= " 26,
dann bekomme ich ja auch den Datensatz 26 ausgedruckt.

Wenn ich dann mit 
DoCmd.GoToRecord acDataQuery, "afrevdat", acGoTo, EVUNr         
doch  Datensatz (EVUNr) 26 vorgebe, müßte ich doch auch diesen bearbeiten oder ändern
o.ä. können.
Oder habe ich da einen grundsätzlichen Denkfehler?? Mach mich doch bitte schlau......
Vielen Dank erstmal
Reinhard

MzKlMu

Hallo,
ZitatOder habe ich da einen grundsätzlichen Denkfehler??
Ja, und zwar einen gewaltigen. Das acGoTo, Zahl geht nicht zu einem bestimmten Datensatz, sondern die Zahl ist ein Offset es wird nicht zum Datensatz mit der EVUNr  26 gesprungen, sondern es wird um 26 Datensätze weiter gesprungen. Wenn Du im 5. DS bist, wird zum 31 DS gesprungen. Das kannst Du in der Hilfe zu GoToRecord nachlesen, sehr ausführlich. Für acGoTo wird der Datensatzzeiger verwendet, der aber nicht sichtbar und idendifizierbar ist. Der Datensatzzeiger wird ausschließlich intern verwendet und hat mit der sichtbaren EVUNr  nichts zu tun.  Der Datensatz wird ausschließlich über die EVUNr  idendifiziert und das geht über einen Filter mit einem Formular. Mit einer Abfrage geht das nicht, bzw. macht keinen Sinn.

So wie ich das verstanden habe willst Du ja immer nur den im Listenfeld angeklickten Datensatz drucken, bzw. bearbeiten.
Zum Drucken reicht ein Einzeiler:
Private Sub btn_Drucken_Click()
               DoCmd.OpenReport "EVUListe", acViewPreview, , "EVUNr = " & Me.Lst_EVUAuswertung
End Sub

Lege jetzt ein Formular an mit der Abfrage als Datenherkunft. Dann noch einen weiteren Button (btn_Bearbeiten) zum Bearbeiten des Datensatzes- Und der kriegt folgenden Code:
Private Sub btn_Bearbeiten_Click()
               DoCmd.OpenForm "EVUListeFormular", acNormal, , "EVUNr = " & Me.Lst_EVUAuswertung
End Sub

Und fertig ist die Laube.


Gruß Klaus