Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Status Bestellung abfragen

Begonnen von K.Koopmann, Oktober 09, 2015, 01:35:10

⏪ vorheriges - nächstes ⏩

K.Koopmann

Hallo Forum,
ich suche schon eine geraume Zeit nach einer Lösung meines Problems, finde aber vielleicht einfach nicht den richtigen Suchbegriff  :-\

Ich habe ein Formular für Bestellungen, welches auf einer Tabelle "Bestellung_Vorgang" basiert. Hier werden die Stammdaten für die Bestellung eingegeben. Wie z.B. Der Besteller, das Bestelldatum, Der Lieferant, die Kostenstelle, etc.
In diesem Formular sind des weiteren die Unterformulare "Bestellung_Artikel" welches auf der Tabelle "Bestellung_Artikel" basiert und über "Bestellung_Vorgang_ID" mit der Haupttabelle verknüpft ist.
In dieser Tabelle werden die Daten zu den bestellten Artikeln eingegeben.
Dann gibt es noch ein Unterformular, in welchem dann die bereits eingegebenen Artikel angezeigt werden in der Datenblatt Ansicht. In dieser Ansicht sind auch gleich die Felder für den Wareneingang, also Datum: wann ist die Lieferung angekommen und wieviel wurde geliefert. Dazu ein Kontrollkästchen welches auf True gesetzt wird sobald eine Liefermenge eingegeben wird.

Und jetzt zur eigentlichen Frage:
Im Hauptformular ist ein Bezeichnungsfeld, welches von Rot auf Grün umspringen soll, sobald alle Artikel dieser Lieferung angekommen sind (also alle Kontrollkästchen auf True stehen). Wie kann ich das erreichen?
Mein Lösungsansatz war:
If Me!ufo_Bestellung_Artikelliste!geliefert = True Then
    Me.bez_Status_Bestellung.BackColor = vbGreen
Else
     Me.bez_Status_Bestellung.BackColor = vbRed
End If

Dann wird das Statusfeld aber nur dann oder eben schon Grün sobald der erste Datensatz (also das Kontrillkästchen) auf True steht.

Vielen Dank schon mal für Eure Ideen, Tips und Ratschläge.
Bei Verwirrung, einfach noch mal nachfragen.

Grüße, Kai

DF6GL

#1
Hallo,

der Suchbegriff könnte z. B. sein:

VBA-Hilfe zu den Domänenaggregatfunktionen Dcount() und DSum().

Mit Dcount wird die Gesamt-Anzahl der Artikel zu einer Bestellung ermittelt und dazu addiert die Summe aller gesetzten KKs (Wert eines gesetzten Ja/Nein-Feldes = -1!). Sobald das Ergebnis 0 ist, sind alle Artikel bestellt.


evtl. geht auch dieses:

Im Unterformular-Fuß ein Textfeld (txtAnz)mit Steuerelementinhalt
=Anzahl(*)
einfügen, weiterhin ein Textfeld (txtSuKK) Steuerelementinhalt
=Summe([NamedesKontrollkästchens])

und im Hauptform ein Textfeld (txtAlleArtikelBestellt) mit Steuerelementinhalt

=[Bestellung_Artikel]!txtAnz+[Bestellung_Artikel]!txtSuKK)

Kann sein, dass das Setzen des Hauptform-Textfeldes nur über eine Zuweisung Im UFO funktioniert:

Sub Form_Current()
Me.Parent!txtAlleArtikelBestellt=Me!txtAnz+Me!txtSuKK
End Sub

K.Koopmann

Hallo Franz (DF6GL),
vielen Dank für Deine Hilfe. Leider konnte ich erst heute ausprobieren. Aber es möchte noch nicht ganz so, wie ich es gerne hätte.
Das mit den Textfeldern war soweit schon mal ganz gut. Damit konnte ich dann ein weiteres Textfeld füttern, welches mir den Wert "0" ausgibt sobald alle Bestellungen mit einem Häckchen im Kontrollkästchen gefüllt waren.
Was ich aber nicht hin bekommen habe, ist das Textfeld im Hauptformular. Dieses zeigte mir immer "0" an. Egal ob ein KK oder gar kein KK auf True standen.
Was ich aber beobachten konnte, ist: Die zusätzlichen Felder mit der Anzahl der Datensätze und Die Anzahl der abgehakten KKs brauchen etwas um sich aufzubauen. Dann steht im Textfeld im Hauptformular aber schon die "0" obwohl da theoretisch z.B. eine "-3" drin stehen müsste.
Verwirrt...
Kann es sein, das die Berechnung einfach zu langsam ist?
Ich möchte doch einfach nur das Statusfeld meiner Bestellung von Rot auf Grün haben, sobald alle Artikel verbucht sind.

Vielen Dank für neue Ideen oder einer Belehrung, was ich evtl. falsch mache.

Gruß, Kai

DF6GL

Hallo,
hast Du auch den letzten Teil meines Postings in Betracht gezogen..?

K.Koopmann

Hallo Franz,

ja, das habe ich auch versucht. Aber auch da übergibt er mir zuerst immer die "0". Dadurch ist mein Statusfeld dann immer grün.
Ich habe da eine Testdatenbank vielleicht hilft die das Problem anschaulich zu machen. Ich werde sie mal anhängen.
Das Feld "Lieferung komplett geliefert" soll grün werden, sobald alle KKs in der Bestellung im Unterformular abgehakt sind.

Schon mal vielen Dank für die Mühe.

Gruß, Kai.

MaggieMay

Hallo,

ich habe einiges ausprobiert und zu meiner Überraschung hat es mit Hilfe von Formularfeldern nicht geklappt. Die letztendlich funktionierende Lösung finde ich persönlich unbefriedigend, aber vielleicht kann das noch jemand anderes aufklären.
Freundliche Grüße
MaggieMay

K.Koopmann

Hallo Maggie May,

vielen Dank schon mal für die schnelle Antwort.
Leider bekomme ich die Datei nicht geöffnet. Es wird angezeigt: Unbekanntes Datenbankformat...

Ich benutze Access 2007, kann es vielleicht an einer anderen Version liegen?

Viele Grüße aus Bremen, Kai

MaggieMay

Hallo Kai,

ich habe die Datei mit A2010 bearbeitet, was muss ich tun, dass du sie mit A2007 öffnen kannst? Ich dachte, eigentlich wäre das kein Problem.
Freundliche Grüße
MaggieMay

K.Koopmann

Hallo Maggie May,

hui, das ging aber schnell. Begeistert  :D
Ich bin der Meinung, Du kannst die Datenbank unter dem Access 2007 Format abspeichern. Ist bei mir, wenn ich auf "Speichern unter" gehe. Dann kann ich (bei mir) z.B. Access 2000 auswählen. Schau mal nach.

Grüße, Kai

MaggieMay

A2007-A2010 ist ja das Standardformat, aber als ich sie als MDB speichern wollte wurde das verweigert mit Hinweis auf die nicht-kompatible Sortierfolge. Vielleicht hat es ja damit etwas zu tun, ich habe das jetzt mal geändert.
Freundliche Grüße
MaggieMay

K.Koopmann

Nochmal Hallo MaggieMay,

nein, geht leider auch nicht. Es scheint wohl ein Problem mit den Funktionen zu sein, welche Access 2010 mitbringt. Sobald diese neuen Funktionen genutzt werden lässt es sich wohl mit Access 2007 nicht mehr öffnen.
Und recht hast Du natürlich. Das Datenbankformat ist das gleiche.
Benutzt Du zufällig so etwas wie "Empty Cell"? Das soll wohl häufig das Problem verursachen.
Vielleicht sollte ich meinem Chef mal Access 2010 ans Herz legen  ;D

Aber wie gesagt, vielen vielen Dank für Deine Mühen.
Gruß, Kai

el_gomero

Hallo,

hab das Datenbankformat mal nach mdb konvertiert - hth.
Gruß
Jürgen


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

DF6GL

Hallo,

der Prüfcode sollte (könnte) so lauten:
    If DSum("Menge_geliefert", "tbl_bestellung_artikel", "Bestellung_Vorgang_ID=" & Me!ID) - DSum("Menge_geliefert", "tbl_bestellung_artikel", "Bestellung_Vorgang_ID=" & Me!ID & " and geliefert <>0") = 0 Then
    Me!bez_Status_Bestellung.BackColor = vbGreen
    Else
    Me!bez_Status_Bestellung.BackColor = vbRed
    End If



andere Codefehler habe ich nicht überprüft.

K.Koopmann

Hallo el_gomero, Hallo MaggieMay,

vielen Dank !!!  :D :D :D
el_gomero für das konvertieren
und MaggieMay für die Lösung meines Problems. Das funktioniert super. Aber darf ich noch mal fragen, warum die Lösung "unbefriedigend" ist? Sie funktioniert doch einwandfrei. Aber vielleicht lerne ich so, besser zu programmieren.

:D Gerade beim Antworten die Meldung über einen neuen Beitrag erhalten. Danke DF6GL.
Ist das der Punkt der "unbefriedigend" genannt werden kann?
Wenn das so sauberer ist, werde ich den Code mal so übernehmen.  :D

Auf jeden Fall kann ich jetzt (wenn denn Feierabend ist) beruhigt in meinen Herbsturlaub gehen.

Nochmals vielen Dank allen Beteiligten und bis zu meinen nächsten Problemen  ;D ::)

Grüße aus Bremen, Kai

MaggieMay

#14
Hallo Kai,

als "unbefriedigend" habe ich meine Lösung bezeichnet, weil ich ursprünglich davon ausgegangen bin, dass dies auch (meiner Erwartung nach) durch berechnete Felder in Haupt- und Unterformular hätte lösbar sein sollen.

Ansonsten bin ich in erster Linie Programmiererin und bevorzuge daher im Zweifelsfall VBA-Lösungen anstelle von "undurchsichtigen" Formular-Steuerelement-Konstrukten in Form von Formeln oder Ausdrücken im Steuerelementinhalt.

ZitatBenutzt Du zufällig so etwas wie "Empty Cell"? Das soll wohl häufig das Problem verursachen.
Ich habe die Formulare ja nicht neu angelegt, sondern nur die von dir gelieferte DB als Grundlage genommen und verändert. Ich habe keine Ahnung, warum du sie nun nicht mehr öffnen konntest.
Freundliche Grüße
MaggieMay