4.2k Aufrufe
Gefragt in Datenbanken von bloodnfire Einsteiger_in (11 Punkte)
Hallo Zusammen,

für die Arbeit muss ich eine Plantafel erstellen, welche auf der Zeilenebene die Produkte enthalten soll und auf der Spaltenebene soll die Kalenderwoche als eine Spalte und darunter die Spalten Werktage 1-5 sowie eine Spalte Summe auftauchen.
Hier ist es Analog in Excel dargestellt. http://www.flickr.com/photos/61485684@N02/5597338761/

Die Berechnung der Summe findet aus den Tagen 1-5 statt. Ich habe schon vieles Probiert, aber es funktioniert nicht. Ich verzeifel hierbei bald. Die mehreren KWs kann ich über ein Endlosformular darstellen, das ist möglich. Nur wie bekomme ich das layout hin?

Danke im Voraus für Antworten

HEEEELP!

Gruss Andreas

5 Antworten

0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo Andreas,

wie sieht deine Datenbasis aus und wieviele Kalenderwochen willst du in Spalten darstellen? Wie stehen die Zeilen eines Produkts in Beziehung, ist das für jedes Produkt identisch - und was ist mit den Leerzeilen, notwendig? Wann wir was farbig dargestellt? Wie sieht deine Idee bei einem Seitenumbruch aus? Du siehst, da müssen erst ein mal noch paar Antworten her. Prinzipiell geht das, mit ein wenig VBA allemal.

Gruß
Ralf
0 Punkte
Beantwortet von bloodnfire Einsteiger_in (11 Punkte)
Hallo Ralf,

vielen Dank für die Antwort.

Ich brauche die Plantafel für 12 Wochen in die Zukunft. D.h. 12
Kalenderwochen á 6 Spalten (= Tage + Summe).
Die Produktzeilen sind identisch.
Die Zeile "Prognose" enthält Prognosewerte in der 12 Wochen
Vorschau und ist bei mir eine Tabelle (die teilweise dünn besetzt ist,
weil der Wert 0 drin steht, falls für den Tag kein Prognosewert
vorhanden ist).
Die Zeile "Bedarf" ist eine Tabelle, die die Bedarfe pro Tag erfasst.
Die Leerzeilen sind nicht notwendig. Die habe ich zur besseren
Darstellung hineingenommen.
Die Zeile "bekannt" oder "neu" sind jeweils Tabellen, die im Vorfeld
berechnet wurden.
Die Zeile "Offene Bedarfsmenge" ist das Ergebnis der Prognose -
bekannten Menge
In die Zeile "Manuelle Einplanung" soll man ggf. einen Wert
eintragen können, der im Hintergrund dann in eine Tabelle
geschrieben wird, um die bekannte Menge falls nötig manuell
anpassen zu können.
Die farbige Hervorhebung soll einem nur helfen zu erkennen, wo
eine Unter- bzw. Übermenge vorhanden ist. Das ist eine nice to
have.
Es soll keinen Zeilenumbruch geben. Die Plantafel soll nach rechts
mittels Scrollbalken navigierbar sein.

Mir fehlt bei dem ganzen eine Grundidee, wie ich die Gestaltung und
Berechnung der Summe hinbekommen kann.
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo Andreas,

du benötigst also ein Formular, keinen Bericht, ok. Wenn ich dich richtig verstehe, sind die Kalenderwochenangaben beliebig aber fest für die Darstellung. Die Zeilen "Prognose", "Bedarf", "bekannt", "neu" und "offene Bedarfsmenge" reine Anzeigewerte, also nicht in diesem Formular gefüllt werden sollen. Die Zeile "neue Einplanung" soll als Eingabefelder bereit gestellt werden.

Falls das so ist, würde ich folgendermaßen vorgehen:

1. Du erstellst ein Endlosformular mit der Datenherkunft einer Zwischentabelle für die Editierfelder für die "neue Einplanung", als auch für die "Read-Only"-Felder jeweils mit generischen Kalenderwochenangaben und Wochentagen, also z.B. PROGNOSE_1_1, PROGNOSE_1_2 ... PROGNOSE_1_5, PROGNOSE_2_1 ... PROGNOSE_12_5 sowie alle anderen Werte und natürlich der Materialnummer.

2. Die Kalenderwochenüberschriften sind in 12 Textfeldern (CAPTURE-Eigenschaft) beim öffnen des Formulars per VBA zu setzen, entsprechend deiner Logik, z.B. heute ist KW17, dann belegst du die Felder mit 18/2001 - 30/2011 vor.

3. Beim Öffnen des Formulars füllst du die Zwischentabelle mit den Werten aus den entsprechenden Wochen per VBA, wo du bei der KW eine berechnung vornehmen musst. also so was wie (VBA-Ansatz, entschuldige evtl. Syntaxfehler, da nur kurz runter geschrieben):

....
while not Materialrec.eof
' evtl. Filterung der Quell-Recordsets auf Materialnummer
rec.addnew
for iDatum = firstdayOfNextWeek to firstdayOfNextWeek +12*7
kw =Format(iDatum, "ww", vbMonday, vbFirstFourDays)
y = year(iDatum)
if kw <> kwSave then
kwIndex = kwIndex +1
kwSave = kw
end if
dow = Weekday(Date, vbMonday)
if dow <=5
wert = ... 'aus deinen Tabellen ermitteln mit kw und y oder wie auch immer
rec("PROGNOSE_" & kw-aktuelleKW & "_" & dow) ) = wert
end if
next
next
rec.update
Materialrec.movenext
wend
....


4. Mit einem Speicherbutton (oder beim Schließen des Formulars) kannst du dann den umgekehrten Weg gehen und die Werte aus der Zwischentabelle per VBA (Cursor) in deine Originaltabellen überträgst und den Tag aus der KW und dem Wochentag berechnest.

Wenn du 12 Wochen im Voraus die Planzahlen eingibst, und du das wöchentlich machst, kann es sein (je nach deiner Logik), dass du die vorherigen Daten zunächst per SQL-Befehl löschen musst.
Ich hoffe, dieser Ansatz (bestimmt einer von vielen) hilft dir weiter, sonst melde dich bitte mit konkreteren Angaben. Da ich den Aufbau deiner Quelltabellen nicht kenne, bin ich hiermit mit dem Tipp am Ende ;-)

Gruß
Ralf
0 Punkte
Beantwortet von bloodnfire Einsteiger_in (11 Punkte)
Hallo Ralf,

super vielen Dank für die Antwort. Allerdings bin ich jetzt noch mehr verwirrt als vorher.

du benötigst also ein Formular, keinen Bericht, ok. Wenn ich dich richtig verstehe, sind die Kalenderwochenangaben beliebig aber fest für die Darstellung. Die Zeilen "Prognose", "Bedarf", "bekannt", "neu" und "offene Bedarfsmenge" reine Anzeigewerte, also nicht in diesem Formular gefüllt werden sollen. Die Zeile "neue Einplanung" soll als Eingabefelder bereit gestellt werden.

Das ist korrekt.

1. Du erstellst ein Endlosformular mit der Datenherkunft einer Zwischentabelle für die Editierfelder für die "neue Einplanung", als auch für die "Read-Only"-Felder jeweils mit generischen Kalenderwochenangaben und Wochentagen, also z.B. PROGNOSE_1_1, PROGNOSE_1_2 ... PROGNOSE_1_5, PROGNOSE_2_1 ... PROGNOSE_12_5 sowie alle anderen Werte und natürlich der Materialnummer.

Brauche ich für "Prognose", "Bedarf", ... jeweils ein Endlosformular oder sind in einem Formular die jeweiligen Felder. Ich kann mir nicht vorstellen, wie das aussehen sollte.

2. Die Kalenderwochenüberschriften sind in 12 Textfeldern (CAPTURE-Eigenschaft) beim öffnen des Formulars per VBA zu setzen, entsprechend deiner Logik, z.B. heute ist KW17, dann belegst du die Felder mit 18/2001 - 30/2011 vor.

Ich habe ein einem Eingabefeld bereits den Default-Wert generiert. Die Füllung wird doch über eine Schleife geregelt, oder?


Beim Öffnen des Formulars füllst du die Zwischentabelle mit den Werten aus den entsprechenden Wochen per VBA, wo du bei der KW eine berechnung vornehmen musst. also so was wie (VBA-Ansatz, entschuldige evtl. Syntaxfehler, da nur kurz runter geschrieben): [/code]
Wenn ich erstmal so weit bin, dass ich das Formular in der Form habe, wie ich es haben soll, dann kümmere ich mich um die korrekte Befüllung der Spalten.


4. Mit einem Speicherbutton (oder beim Schließen des Formulars) kannst du dann den umgekehrten Weg gehen und die Werte aus der Zwischentabelle per VBA (Cursor) in deine Originaltabellen überträgst und den Tag aus der KW und dem Wochentag berechnest.

Wenn du 12 Wochen im Voraus die Planzahlen eingibst, und du das wöchentlich machst, kann es sein (je nach deiner Logik), dass du die vorherigen Daten zunächst per SQL-Befehl löschen musst.
Ich hoffe, dieser Ansatz (bestimmt einer von vielen) hilft dir weiter, sonst melde dich bitte mit konkreteren Angaben. Da ich den Aufbau deiner Quelltabellen nicht kenne, bin ich hiermit mit dem Tipp am Ende ;-)


Die Prognosewerte werden täglich geladen, ändern sich aber nur einmal in der Woche vom System aus berechnet. D.h. dass die jeweiligen Werte werden gelöscht. Was nicht gelöscht werden darf sind die die manuellen Einplanungsmengen. Diese müssen berücksichtigt werden bzw. werden für die Weiterbearbeitung benötigt

An diesem Tool verzweifel ich bald.
Gruß
Andreas
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo Andreas,

auf verbaler Ebene wird es jetzt kompliziert. Wenn du eine Bsp-DB hast, lade sie mal auf einen File-Hoster hoch.

Gruß
Ralf
...