| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | | Auf dem Weg zur digitalen Auftragsmappe. (Phoenix/PDM,SOLIDWORKS,PDM System,PLM,PLM System), ein Anwenderbericht
|
Autor
|
Thema: Berechnung eines Datums (791 mal gelesen)
|
axeld Mitglied Projektingenieur/CAD-Administrator
Beiträge: 267 Registriert: 18.11.2002 WIN7, ACAD M2013 , PSP2011, PLANT3D 2013, DBQ-, Lisp- und VBA-Programmierungen
|
erstellt am: 04. Nov. 2004 11:36 <-- editieren / zitieren --> Unities abgeben:
|
WolfgangE Mitglied
Beiträge: 1006 Registriert: 29.01.2003
|
erstellt am: 05. Nov. 2004 08:22 <-- editieren / zitieren --> Unities abgeben: Nur für axeld
Hallo Axel, Rechnungen in Compass sind zwar möglich, aber speziell beim Datum wird's dann etwas schwierig. Würde dir empfehlen, eine gespeicherte Prozedur stattdessen aufzurufen und dort mit der SQL-Anweisung Dateadd(dd, -7, GetDate()) zu arbeiten. Falls dich doch die Compass-Funktion interessiert, hier ein Beispiel, hier wird die Dauer eines Projekts aufgrund von Start- und Enddatum berechnet: ___Environment ( tmpStarted=@(STARTED:t) ); ___Environment ( tmpEnded=@(ENDED:t) ); ___Shell(___Environment tmpPERIOD=##(=(#(=TIME("$tmpEnded"))-#(=TIME("$tmpStarted")))/86400) ); Ciao, Wolfgang ------------------ An Optimist Is A Person Who Has Not Been Shown All The Facts Yet!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
axeld Mitglied Projektingenieur/CAD-Administrator
Beiträge: 267 Registriert: 18.11.2002 WIN7, ACAD M2013 , PSP2011, PLANT3D 2013, DBQ-, Lisp- und VBA-Programmierungen
|
erstellt am: 05. Nov. 2004 12:21 <-- editieren / zitieren --> Unities abgeben:
Mit den gespeicherten Prozeduren kenne ich mich nicht aus. Dann muß ich wohl die COMPASS-Funktion verwenden. Was bedeutet der Wert #(=TIME("#SYSDATE"))=109960900? Wie kann ich dann 7 Tage abziehen und wie mache ich daraus wieder ein Datumswert? ------------------ Axel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WolfgangE Mitglied
Beiträge: 1006 Registriert: 29.01.2003
|
erstellt am: 05. Nov. 2004 14:30 <-- editieren / zitieren --> Unities abgeben: Nur für axeld
Ich zweifle mittlerweile, ob diese Rechnung über Compass so überhaupt machbar ist. Mach's per Prozedur, geht wie folgt: Der folgende Text ist eine SQL-Anweisung. Kopieren diese in den QueryAnalyzer, wähle die Compass-Datenbank aus und führe das Skript aus: /*********************************************************/ CREATE PROCEDURE wec_AddDaysToDate(@NewDate varchar(100) OUTPUT, @AddDays int) AS SET NOCOUNT ON -- Das Datum muss für Compass im Format yyyymmdd zurückgegeben werden. -- Wird hier als Textteile zusammengeschnitten. Declare @TempDate datetime Set @TempDate = DateAdd(dd, @AddDays, GetDate()) Set @NewDate = Cast(Year(@TempDate) as varchar(10)) + Case When Len(Month(@TempDate))=1 Then Cast(0 as varchar(1)) + Cast(Month(@TempDate) as varchar(10)) Else Cast(Month(@TempDate) as varchar(10)) End + Case When Len(Day(@TempDate)) = 1 Then Cast(0 as varchar(1)) + Cast(Day(@TempDate) as varchar(10)) Else Cast(Day(@TempDate) as varchar(10)) End Go /******************************************************/ Das ist eine Funktion, die zum aktuellen Datum die angegebene Anzahl von Tagen dazu zählt. Zum weg zählen also einfach eine negative Zahl verwenden. Der Aufruf: hier wird die Variable "NewDate" mit dem Datum von vor 7 Tagen belegt: ___Environment(NewDate=#(XDWSFKT:wec_AddDaysToDate(,-7))) Das "-7" kannst du jetzt durch eine beliebige Anzahl von Tagen ersetzen. Ciao und schönes Wochenende, WolfgangE ------------------ An Optimist Is A Person Who Has Not Been Shown All The Facts Yet!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
axeld Mitglied Projektingenieur/CAD-Administrator
Beiträge: 267 Registriert: 18.11.2002 WIN7, ACAD M2013 , PSP2011, PLANT3D 2013, DBQ-, Lisp- und VBA-Programmierungen
|
erstellt am: 05. Nov. 2004 15:40 <-- editieren / zitieren --> Unities abgeben:
@Wolfgang: Super, das hat gleich funktioniert. Ich habe es in die Routine eingebaut, die meine Anzeige steuert, ähnlich des Filterbefehles. Vielleicht hast Du da noch eine Idee: Wie kann ich zeigen, daß da ein Filter aktiv ist, der über mein Programm gesteuert wird? COMPASS macht es ja so, daß die Kopfzeile rot markiert ist. Kann man so etwas ähnliches auch erreichen? ------------------ Axel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WolfgangE Mitglied
Beiträge: 1006 Registriert: 29.01.2003
|
erstellt am: 08. Nov. 2004 07:45 <-- editieren / zitieren --> Unities abgeben: Nur für axeld
Du steuerst also die DBWhere-Bedingung damit? Wenn du mit DBP arbeitest, könntest du eine Variable oder einen Konfigurationseintrag belegen. In einern eigenen Spalten der Liste könnte man dort dann auf diesen Eintrag abfragen und ein Symbol einbauen. Oder in einem der Menüs (z.B. Ansicht) einen neuen Eintrag hinzufügen und mit entsprechenden Symbol versehen bzw. je nach Status des Filters aktivieren oder deaktivieren. Könnten dann auch 2 Befehle sein, die heißen z.b. "Filter aktivieren" und "Filter deaktivieren" und nur jeweils 1 ist aktiv. Wenn du das ganze in einem eigenen Dialog machst und dieser z.B. aus VisualBasic stammt, müsste es noch wesentlich mehrere Möglichkeiten zur Visualisierung geben. Ciao, WolfgangE ------------------ An Optimist Is A Person Who Has Not Been Shown All The Facts Yet!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
axeld Mitglied Projektingenieur/CAD-Administrator
Beiträge: 267 Registriert: 18.11.2002 WIN7, ACAD M2013 , PSP2011, PLANT3D 2013, DBQ-, Lisp- und VBA-Programmierungen
|
erstellt am: 08. Nov. 2004 09:13 <-- editieren / zitieren --> Unities abgeben:
Ja, die DBWhere-Bedingung ändere ich. Ein Symbol in eine neue Spalte einfügen ist hier nicht sinnvoll, da der Filter für die ganze Liste funktionieren soll. Irgend eine Farbänderung hätte ich gerne. Einen eigenen Dialog habe ich nicht erzeugt, ich ändere nur in der Listendarstellung. ------------------ Axel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WolfgangE Mitglied
Beiträge: 1006 Registriert: 29.01.2003
|
erstellt am: 08. Nov. 2004 09:36 <-- editieren / zitieren --> Unities abgeben: Nur für axeld
Geht so nicht, glaube ich. Wenn die entsprechende Schriftfarbe in der Konfiguration hinterlegt wäre, gäb's eine Möglichkeit, dem ist aber meines Wissens nicht so (lasse mich aber gern eines besseren belehren). Würde dann am ehesten den Weg über's Menü gehen, mit 2 Einträgen. Könnte dann in etwa so aussehen wie im Screenshot anbei, hier wurde das Menü "Ansicht" erweitert. Auch hier wird per Menü die Anzeige-Bedingung gesteuert. Ciao, WolfgangE ------------------ An Optimist Is A Person Who Has Not Been Shown All The Facts Yet!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|