collapse

* Benutzer Info

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

* Wer ist Online

  • Punkt Gäste: 39
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 1
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 13611
  • stats Beiträge insgesamt: 60959
  • stats Themen insgesamt: 8314
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 16
  • stats Am meisten online: 415

Autor Thema: "Check All"-Button auf Unterformular anwenden  (Gelesen 603 mal)

Offline lutschi83

  • Access-Profi
  • **
  • Beiträge: 129
"Check All"-Button auf Unterformular anwenden
« am: April 26, 2017, 13:24:19 »
Hallo Leute,
ich habe ein Formular frm_invoice_create mit einem Unterformular subform_invoice. Wenn ich im Hauptformular den Distributor auswähle, dann werden die Datensätze im Unterformular gefiltert. Nun möchte ich, dass bei allen gefilterten Datensätze das Ja/Nein-Feld "Status_invoiced" auf JA (True) gesetzt wird.
Könnt ihr mir bitte dabei helfen?
Vielen Dank schon einmal im Voraus.
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6601
Re: "Check All"-Button auf Unterformular anwenden
« Antwort #1 am: April 26, 2017, 16:54:58 »
Hallo,
zeige den Filter.
Gruß
Klaus
 

Offline lutschi83

  • Access-Profi
  • **
  • Beiträge: 129
Re: "Check All"-Button auf Unterformular anwenden
« Antwort #2 am: April 27, 2017, 07:53:40 »
Hallo,

also einmal habe ich folgenden Filter
Private Sub btn_filter_Click()
Dim strVon As String
Dim strBis As String
Dim strKrit As String
Dim strkrit2 As String
    If IsDate(Me.txtvon) And IsDate(Me.txtbis) Then
        strVon = Format(Me!txtvon, "\#yyyy\-mm\-dd\#")
        strBis = Format(Me!txtbis, "\#yyyy\-mm\-dd\#")
        strKrit = "delivery_note_date Between " & strVon & " AND " & strBis
        strkrit2 = " and distributor='" & Me!distributor & "'"
        Forms!frm_invoice!subfrm_invoice.Form.Filter = strKrit & strkrit2
        Forms!frm_invoice!subfrm_invoice.Form.FilterOn = True
        Else
        Forms!frm_invoice!subfrm_invoice.Form.Filter = ""
        Forms!frm_invoice!subfrm_invoice.Form.FilterOn = False
    End If
Forms!frm_invoice!subfrm_invoice.Requery
End Sub
Dieser funktioniert irgendwie nicht  :'(
und dann habe ich noch diesen Filter:
Private Sub distributor_AfterUpdate()
If Nz(Me!distributor) <> "" Then
 Me!subfrm_invoice.Form.Filter = "distributor='" & Me!distributor & "'"
Me!subfrm_invoice.Form.FilterOn = True
Else
Me!subfrm_invoice.Form.FilterOn = False
End If
Forms!frm_invoice!subfrm_invoice.Requery
End Sub
 

Offline Frank77

  • Access-Profi
  • **
  • Beiträge: 162
    • Die Zauberbaecker
Re: "Check All"-Button auf Unterformular anwenden
« Antwort #3 am: April 29, 2017, 18:21:00 »
Hallo! vieleicht hilft die das weiter, musst mal testen

Gruß Frank
Private Sub btn_filter_Click()
    If IsDate(Me!txtvon) Then
        strFilter = strFilter & " AND delivery_note_date >= " & Format$(Me!txtvon, "\#yyyy\-mm\-dd\#")
    End If
    If IsDate(Me!txtbis) Then
        strFilter = strFilter & " AND delivery_note_date <= " & Format$(Me!txtvon, "\#yyyy\-mm\-dd\#")
    End If
    If Len(Me!Me!distributor) > 0 Then
        strFilter = strFilter & " AND distributor = '" & Me!distributor & "'"
    End If
    If Len(strFilter) > 0 Then
        strFilter = Mid(strFilter, 6)
        With Me!subfrm_invoice.Form
            .Filter = strFilter
            .FilterOn = True
            .Requery
        End With
    Else
        With Me!subfrm_invoice.Form
            If .FilterOn = True Then
                .FilterOn = False
                .Requery
            End If
        End With
    End If
End Sub



Private Sub distributor_AfterUpdate()
    If Len(Me!distributor) > 0 Then
        With Me!subfrm_invoice.Form
            .Filter = "distributor = '" & Me!distributor & "'"
            .FilterOn = True
            .Requery
        End With
    Else
        With Me!subfrm_invoice.Form
            If .FilterOn = True Then
                .FilterOn = False
                .Requery
            End If
        End With
    End If
End Sub
Selbstständig = Selbst und Ständig
 

Offline Josef P.

  • Access-Profi
  • **
  • Beiträge: 226
    • Code-Bibliothek für Access-Entwickler
Re: "Check All"-Button auf Unterformular anwenden
« Antwort #4 am: April 29, 2017, 20:40:37 »
Hallo!

Falls die Daten im Unterformular bearbeitbar sind, könntest du dessen Recordset durchlaufen und das Datenfeld auf True setzen.

Falls die Datenquelle keine Änderung erlaubt, könntest du den Formularfilter inkl. eventuell in der Datenquelle enthaltene Filter für eine Update-Anweisung verwenden.

Falls das auch nicht möglich ist, könntest du die Primärschlüsselwerte aus dem Formular ermitteln und damit eine Update-Anweisung ausführen.

Wenn du beschreibst, wo du Probleme hast, dein Vorhaben umzusetzen, kann besser geholfen werden.

mfg
Josef

Offline lutschi83

  • Access-Profi
  • **
  • Beiträge: 129
Re: "Check All"-Button auf Unterformular anwenden
« Antwort #5 am: Mai 04, 2017, 10:35:13 »
Zunächst einmal Danke Frank77, aber leider funktioniert dein Code nicht bei mir.
Die Daten im Unterformular sind editierbar. Mein Problem ist, dass mein oben aufgezeigter Filter nicht funktioniert. Der "Datumsfilter" liefert kein Ergebnis und ich benötige dann noch einen Button "check all", der die gefilterten Ergebnisse den Status "invoiced", welches ein JA/Nein-Feld ist,  auf "ja" setzt.
Ich hoffe ich konnte es einigermaßen erklären.
 

Offline lutschi83

  • Access-Profi
  • **
  • Beiträge: 129
Re: "Check All"-Button auf Unterformular anwenden
« Antwort #6 am: Mai 08, 2017, 11:54:01 »
Hallo,

ich habe es mit folgendem code Private Sub btncheck_Click()
     Dim dbs As Database

Set dbs = CurrentDb

    dbs.Execute "UPDATE qry_for_invoice SET status_invoiced = -1 WHERE status_invoiced = 0 ;"

dbs.Close

 End Sub
hinbekommen, dass alle Werte "angehakt" werden. Bei meiner manuellen Aktivierung der Schaltfläche Status_invoiced hab ich aber noch folgende Prozedur angehängt:
Private Sub status_invoiced_AfterUpdate()
If Me.status_invoiced = True Then
Me.invoice_number.Value = Forms!frm_invoice_create!invoice_number
Me.invoice_number_id.Value = Forms!frm_invoice_create!ID
End If

End Sub
Wie bekomme ich nun hin, dass dies ebenfalls mit dem Button "btncheck" geschieht.
Ich habe die Prozedur einfach mal hinten angehängt, doch dann funktionert der Button überhaupt nicht mehr!

Hat jemand eine Lösung dafür?

Vielen Dank schon einmal im Voraus!
 

Offline el_gomero

  • Access-Profi
  • **
  • Beiträge: 450
  • Wissen ist Macht - weiss nichts - Macht nichts
Re: "Check All"-Button auf Unterformular anwenden
« Antwort #7 am: Mai 08, 2017, 12:06:29 »
Hallo,

erste Prozedur überarbeitet:

Private Sub btncheck_Click()
     Dim dbs As DAO.Database

Set dbs = CurrentDb

    dbs.Execute "UPDATE qry_for_invoice SET status_invoiced = -1 WHERE status_invoiced = 0 ;"

SET dbs = nothing

End Sub

Zur 2. gibt es zuwenig Infos. Einzel- Endlosform? Wie sah dein gescheitertet Versuch aus? Was soll der Sinn der Aufgabe sein?
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen
 

Offline lutschi83

  • Access-Profi
  • **
  • Beiträge: 129
Re: "Check All"-Button auf Unterformular anwenden
« Antwort #8 am: Mai 08, 2017, 13:28:04 »
Hi, erstmal danke für die Überarbeitung.
Der gescheiterte Versuch sah wie folgt aus:
Private Sub btncheck_Click()
     Dim dbs As Database

Set dbs = CurrentDb

    dbs.Execute "UPDATE qry_for_invoice SET status_invoiced = -1 WHERE status_invoiced = 0 ;"

dbs.Close
If Me.status_invoiced = True Then
Me.invoice_number.Value = Forms!frm_invoice_create!invoice_number
Me.invoice_number_id.Value = Forms!frm_invoice_create!ID
End If
 End Sub
Die Daten kommen aus einer Abfrage und sind in einem Unterformular angezeigt. Wenn der Status_invoiced = true ist, dann sollen sie die Rechnungsnummer zugeordnet bekommen. Dies soll automatisch passieren. Es funktioniert wenn ich das Häkchen manuell setze. Ich hätte es halt gern zusätzlich wenn "check_all" geklickt wird.
 

Offline el_gomero

  • Access-Profi
  • **
  • Beiträge: 450
  • Wissen ist Macht - weiss nichts - Macht nichts
Re: "Check All"-Button auf Unterformular anwenden
« Antwort #9 am: Mai 08, 2017, 14:30:54 »
so wie ich das jetzt verstehe, sollen alle DS mit Status invoiced = True die ID und invoice_number aus dem aktuell geladenen DS im Form erhalten ... das wäre dann auch per Aktualisierungsabfrage zu lösen

dbs.execute "UPDATE DeineTabelle SET invoice_number = " & Forms!DeinForm!invoice_number & ", invoice_number_id = " & Forms!DeinForm!invoice_number_id
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen
 

Offline lutschi83

  • Access-Profi
  • **
  • Beiträge: 129
Re: "Check All"-Button auf Unterformular anwenden
« Antwort #10 am: Mai 08, 2017, 14:44:54 »
Danke dafür, aber irgendwie funktioniert dies nicht. Zudem benötige ich auch noch vorher einen Datumsfilter auf dem Hauptformular! Hat dies dann irgendeinen Einfluss darauf? Folgenden Code habe ich dafür Private Sub btn_filter_Click()
Dim strVon As String
Dim strBis As String
Dim strKrit As String
Dim strkrit2 As String
    If IsDate(Me.txtvon) And IsDate(Me.txtbis) Then
        strVon = Format(Me!txtvon, "\#yyyy\-mm\-dd\#")
        strBis = Format(Me!txtbis, "\#yyyy\-mm\-dd\#")
        strKrit = "delivery_note_date Between " & strVon & " AND " & strBis
        strkrit2 = " and distributor='" & Me!distributor & "'"
        Forms!frm_invoice!subfrm_invoice.Form.Filter = strKrit & strkrit2
        Forms!frm_invoice!subfrm_invoice.Form.FilterOn = True
        Else
        Forms!frm_invoice!subfrm_invoice.Form.Filter = ""
        Forms!frm_invoice!subfrm_invoice.Form.FilterOn = False
    End If
Doch leider funktioniert dieser nicht.
« Letzte Änderung: Mai 08, 2017, 14:52:38 von lutschi83 »
 

Offline lutschi83

  • Access-Profi
  • **
  • Beiträge: 129
Re: "Check All"-Button auf Unterformular anwenden
« Antwort #11 am: Mai 24, 2017, 10:35:23 »
Private Sub btncheck_Click()
     Dim dbs As DAO.Database

Set dbs = CurrentDb

dbs.Execute "UPDATE qry_for_invoice SET status_invoiced = -1 WHERE status_invoiced = 0 ,"
dbs.Execute "UPDATE qry_for_invoice SET invoice_number = Forms!frm_invoice_create!invoice_number,"
dbs.Execute "UPDATE qry_for_invoice SET ID = Forms!frm_invoice_create!invoice_number_id ,"
Set dbs = Nothing

End Sub

Warum funktioniert dieser Code nicht? Wenn ich die zweite und dritte Zeile weglasse, also nur den Status_invoiced ändern lasse, klappt es.
 

Offline Lachtaube

  • Access-Meister
  • ***
  • Beiträge: 583
Re: "Check All"-Button auf Unterformular anwenden
« Antwort #12 am: Mai 24, 2017, 12:39:48 »
Es wundert mich, dass das Komma am Ende des Abfragetextes nicht angemeckert wird. Da darf - muss aber nicht - allerhöchstens ein Semikolon (;) verweilen. Ansonsten löst eine in VBA ausgeführte Abfrage keine Formularbezüge auf. Entweder setzt Du selbst den Parameter ein oder Du lässt Dir durch die Eval-Funktion helfen. Siehe: Ein Parameter wurde erwartet und ggf. für's fortgeschrittene Stadium Parameterabfrage per VBA öffnen.

PS: wenn Du der Execute-Methode den zweiten optionalen Parameter als dbFailOnError spendierst, wird auch inhaltlich eine Prüfung der Abfrage vorgenommen.
Grüße von der (⌒▽⌒)
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1401
Re: "Check All"-Button auf Unterformular anwenden
« Antwort #13 am: Mai 25, 2017, 02:17:47 »
Hallo,
Was Lachtaube sagen will,
Zitat
dbs.Execute "UPDATE qry_for_invoice SET invoice_number = " & Forms!frm_invoice_create!invoice_number
dbs.Execute "UPDATE qry_for_invoice SET ID =  " & Forms!frm_invoice_create!invoice_number_id
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline lutschi83

  • Access-Profi
  • **
  • Beiträge: 129
Re: "Check All"-Button auf Unterformular anwenden
« Antwort #14 am: Mai 31, 2017, 09:15:28 »
Hallo Leute,

also leider funktioniert
dbs.Execute "UPDATE qry_for_invoice SET invoice_number = " & Forms!frm_invoice_create!invoice_number
dbs.Execute "UPDATE qry_for_invoice SET ID =  " & Forms!frm_invoice_create!invoice_number_id
auch nicht. Bitte, kann mir vielleicht jemand eine Möglichkeit zeigen, wie ich die Invoice_Number und ID mit dem Check-All-Button in das Unterformular bekomme?! Bitte, ich bin total am verzweifeln!

Im Grunde möchte ich eigentlich "nur", dass folgender Code
Private Sub status_invoiced_AfterUpdate()
If Me.status_invoiced = True Then
Me.invoice_number.Value = Forms!frm_invoice_create!invoice_number
Me.invoice_number_id.Value = Forms!frm_invoice_create!ID
End If

End Sub
für alle gefilterten Datensätze im Unterformular via "check-all-Button" ausgeführt wird. Im Moment muss ich das ja für jeden Datensatz manuell machen.

Ich wäre sehr dankbar für eure Hilfe! Vielen vielen Dank schon einmal
« Letzte Änderung: Mai 31, 2017, 09:47:44 von lutschi83 »