Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Wochennummer in Crystal Rport
..Heinz..
myCSharp.de - Member



Dabei seit:
Beiträge: 135

Themenstarter:

Wochennummer in Crystal Rport

beantworten | zitieren | melden

Hi :-)

ich sitze gerade vor einem CrystalReport, indem Datumsfelder sind.

Nun würde ich diese gerne formatieren. Uns zwar wie folgt:

Ist-Zustand: 1.1.2009 (Datum)
Soll-Zusstand: 1.2009 (Wochennummer)

Ist-Zusatzand: 6.5.2009 (Datum)
Soll-Zustand: 19.2009 (Wochennummer)

Nun meine Frage: Wer hat sowas schonmal gemacht bzw. wo kann man es nachlesen? Habe bei meinen Suchen noch nichts wirklich gutes gefunden.
private Nachricht | Beiträge des Benutzers
Counterfeit
myCSharp.de - Member



Dabei seit:
Beiträge: 118
Herkunft: Kassel

beantworten | zitieren | melden

Probier mal als Formel folgendes:

Format(DeinDatum, "WW.yyyy")

Das funktioniert so zummindest in dem ReportDesigner von Visual Studio 2008 :-)
private Nachricht | Beiträge des Benutzers
macmark
myCSharp.de - Member



Dabei seit:
Beiträge: 53
Herkunft: Köln

beantworten | zitieren | melden

Hi,
nein.... so einfach ist es in Deutschland nicht! :-> Dafür gibt es sogar ne DIN - Norm. In CRW ist das "nur" die rechnerische Wochennummer. Richtig wäre es die Woche als Formel ermitteln zu lassen :

Local DateTimevar Datum := {Datum.Datum};
//der obigen Variable "Datum" kann dann das jeweils benötigte Datum zugewiesen
werden
Local Datevar t;
Local NumberVar KW;
//Berechnen der Kalenderwoche
t := DateSerial(Year(Datum + (8 - Weekday(Datum)) Mod 7 - 3), 1, 1);
KW := ((Datum - t - 3 + (Weekday(t) + 1) Mod 7)) \ 7 + 1;
//Aufbereiten für des Ergebnisses zur Ausgabe
if KW = 1 and Month(Datum) = 12 then
CStr(KW,"00") + "/" + CStr(Year(Datum) + 1,"0000")
else
if KW > 50 and month(Datum) = 1 then
CStr(KW,"00") + "/" + CStr(Year(Datum) - 1,"0000")
else
CStr(KW,"00") + "/" + CStr(Year(Datum),"0000");

Siehe dazu http://www.macon-gmbh.de/download/Tipps_CR_Allgemein.pdf

Gruss
Markus
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von macmark am .
private Nachricht | Beiträge des Benutzers
Counterfeit
myCSharp.de - Member



Dabei seit:
Beiträge: 118
Herkunft: Kassel

beantworten | zitieren | melden

Oh, gut zu wissen, danke :-)
private Nachricht | Beiträge des Benutzers
..Heinz..
myCSharp.de - Member



Dabei seit:
Beiträge: 135

Themenstarter:

beantworten | zitieren | melden

Danke für eure schnellen Antworten :-)


@Counterfeit: So habe ich bisher auch immer meine Daten formatiert (in VB, C# usw.), dass es extra eine DIN dafür gibt, war mir auch nicht bekannt.

@macmark: Wo genau muss ich diese dann einfügen? Ich habe das Datum in einem Gruppennamen stehen. Wo kommt die Formel hin, wie wird sie aufgerufen? Das ist mein erster CR, habe bisher nur Erfahrung mit Berichten in Access, das dafür ziemlich gut, da CR um einiges bequemer ist, wie ich schon gelesen habe, wollte ich das jetzt mal testen und dies ist mein erstes Problem, wo ich nicht mehr weiter weiß :-) Also, schonmal vielen vielen Dank für deine Mühe.

Edit: den Link habe ich vollkommen übersehen *g*. Denke, dass ich es jetzt hinbekomme. Vielen Dank euch beiden. War etwas voreilig, Wo und wie ich die Funktion platzier und aufrufe steht leider doch nicht drin.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von ..Heinz.. am .
private Nachricht | Beiträge des Benutzers
macmark
myCSharp.de - Member



Dabei seit:
Beiträge: 53
Herkunft: Köln

beantworten | zitieren | melden

Hallo Heinz,
wie du Funktionen erstellst in CR weißt du???
Holst du das Datum aus einem DB Feld??

Das Feld kannst du einfach aus dem Feld-Explorer in deine Funktion holen.
Und deine fertige Funktion kannst du als Gruppenwert auswählen.

Ansonsten gibt es mittlerweile ein ziemliches cooles Buch für CRW Einsteiger: "Crystal Reports für Dummies" -> http://www.amazon.de/Crystal-Reports-f%C3%BCr-Dummies-Kristallkugel/dp/3527704825/ref=sr_1_1?ie=UTF8&s=books&qid=1245145914&sr=8-1 und danach dann http://www.amazon.de/Crystal-Reports-2008-George-Peck/dp/3826659643/ref=pd_cp_eb_1

Kann ich jedem empfehlen und hätte ich damals am besten als Referent jedem in die Hand gedrückt.

Gruss
Markus

PS: Noch was: Eine Funktion muss nicht zwingend im Bericht plaziert sein um diese benutzen zu können. Einfach anlegen und dann kann man Sie "fast" beliebig nutzen. Nur Vorsicht wenn man selbst den Ausführungszeitpunkt bestimmt.
private Nachricht | Beiträge des Benutzers
..Heinz..
myCSharp.de - Member



Dabei seit:
Beiträge: 135

Themenstarter:

beantworten | zitieren | melden

Habs jetzt hinbekommen :-)
Habe das Feld in die Formel gezogen und dabei gabs ne fehlermeldung, dass es kein Datum sei. Haber ein CDate() um den Feldnamen gesetzt und jetzt gehts.

Vielen Dank nochmal. Funktioniert ohen Beanstandungen; Kalendewoche wird korrekt angezeigt. :-)

Das Buch ist schon so gut wie bestellt.

Ein Frage hätte ich noch. Wenn ich die Funktion nicht in den Bericht einfügen will, wie geht das denn sonst? kann ich mir z.b. nen eigenes Modul bauen, in das ich alle CR-Funktionen einbette und so einen zetralen Punkt zur Verwaltung bauen kann?
private Nachricht | Beiträge des Benutzers
macmark
myCSharp.de - Member



Dabei seit:
Beiträge: 53
Herkunft: Köln

beantworten | zitieren | melden

Hallo Heinz,
schön das es geklappt hat.
Mit der Funktion meinte ich das diese nicht zwingend auf das Berichtslayout gezogen werden muss.
Eine Art global anlegbare Funktionen gibt es, hab ich aber noch nie benutzt/ausprobiert das ich die meisten Sachen außerhalb von CRW löse.
Gruss
Markus
private Nachricht | Beiträge des Benutzers