Archiv des Intrexx Live! Forums

Hier sehen Sie die Foreneinträge aus dem Intrexx Live! Forum. Bis November 2016 war es das Forum für alle Fragen rund um die Software Intrexx von United Planet.
Seit November 2016 gibt es ein neues moderiertes Forum, das Intrexx Community Forum. Nutzen Sie bitte unbedingt dieses für aktuelle Fragen, Antworten und Informationen.

Wichtig: Dieses Forum dient als Archiv. Die Einträge beziehen sich oft auf ältere Versionen von Intrexx und entsprechen nicht mehr den aktuellen technischen Gegebenheiten.
Daher sollten alle Inhalte ausschließlich von Experten genutzt werden. Bei unsachgemäßer Anwendung kann es zu zeitaufwändigen Problemen oder Datenverlust kommen.
Übersicht > Intrexx Professional: Programming > Datum und Filter

Datum und Filter

Hallo verehrte Kollegen attention

ich habe mal wieder ein Problem, folgendes Szenario:

von einer DB2 wird ein View als Fremddatengruppe importiert, von dieser Fremddatengruppe läuft dann ein Datapicker auf diverse Eingabefelder.
So weit so gut, funktioniert auch alles - AAABER.

Es gibt auch eine einfache Tabelle mit eben dieser Fremddatengruppe und diese würde ich gerne anhand des Datums filtern.
Aus dem View kommt NUR ein Datum rüber (ohne Uhrzeit) und damit kann Intrexx wohl nicht so einfach umgehen.
Mein Wunsch wäre es alle Datensätze die Datuum = älter als X Tage ausgeblendet werden.

Hat jemand eine Idee für mich?
Der Tabellenfilter wie er in Intrexx vorhanden ist erzeugt hierbei einen Fehler (weil fehlende Uhrzeit)
Den View ändern geht auch nicht da noch andere andwendungen darauf zugreifen.

Was tadellos funktioniert ist die Berechung des Alters in Tagen (innerhalb der Tabelle), jedoch auch hiernach lässt sich nicht filtern oder ich bin einfach zu schusselig dafür. )

Vielen Dank im voraus für die Hilfe
11.02.2016 15:06 von Schweinetoeter
Wenn in einer Fremddatenquelle ein reines Datumsfeld ist, liest Intrexx das als Datum+ 00:00:00 Uhr aus.
Man muss jedoch beachten, dass Intrexx mit Zeitzonen arbeitet. Evtl. muss man die Zeitzone der Fremddatenquelle abändern von UTC auf was anderes, weil Intrexx sonst zB. eine oder zwei Stunden abzieht und sowas wie Datum-1 Tag + 22:00:00 Uhr zurückliefert.
11.02.2016 20:38 von MartinW
Alternativ könnte man der View noch ein weiteres Feld hinzufügen, das eben diese Datumsfeld als TIMESTAMP anbietet.
Wie schon erwähnt, ist die Zeitzone bedeutend. Intrexx arbeitet normalerweise mit TIMESTAMP WITHOUT TIME ZONE-Feldern und interpretiert diese als UTC-Zeit.
Auch wenn ich nicht in DB2 beheimatet bin, könnte folgendes als Felddefinition funktionieren:
CAST(CAST(char(<datumsfeld>, iso) || ' 00:00:00.000 CET' AS TIMESTAMP WITH TIME ZONE) AT TIME ZONE 'UTC' AS TIMESTAMP WITHOUT TIME ZONE) AS date_ts


Damit sollte Intrexx umgehen können. Alle anderen Anwendungen können weiterhin das Datums-Feld benutzen.

Gruß
14.02.2016 11:11 von handw3rker
Schönen guten Morgen,



vielen Dank für die Anregungen, aber gefruchtet hat letztendlich nur den View neu zu erstellen. (mit 'dtime')



Jetzt beschäftigt mich ein anderes Problem.



Der View dient als Datapicker für die Anwendung in Intrexx. (Kundenummer, Name, Telefon, etc...)

Jetzt würde ich gerne zur Überwachung die Ansichtstabelle (Fremddatengruppe/View auf DB2) danach filtern,

welche Kundennummer in der Intrexxdatengruppe noch nicht gespeichert wurde.



Als Referenz lässt mich Intrexx weder von der einen noch von der anderen Richtung aus auf die jeweilige Datengruppe zugreifen.

Ebenso als Filter - wo liegt der Haken?



Ich hoffe Ihr könnt mir helfen.



Grüßle, und vielen Dank attention
22.02.2016 08:48 von Schweinetoeter
Hallo,

das kann man mit einem Subselect im Filter der View erreichen:

<exp op="" type="notin">
<arg content="<GUID_DATENFELD_KUNDENNR>" type="fieldguid"/> <!-- GUID des Feldes mit der Kundennummer (DB2 View) -->
<arg type="statement">
<fieldselect table_content="<GUID_TABLE_INTREXX>" table_type="tableguid" content="<GUID_DATENFELD_KUNDENNR>" dbtype="string" type="fieldguid"/> <!-- Feld Kundennummer in Intrexx-Datengruppe -->
</arg>
</exp>


Gruß,
Thomas
22.02.2016 10:02 von handw3rker
Gewöhnlich funktioniert das mit einem Subselect wie Thomas geschrieben hat.
Allerdings kann ich mir vorstellen, dass das in diesem Fall nicht geht.

Prinzipiell wird das XML im Hintergrund in SQL übersetzt.
Wenn Intrexx und Fremddaten in unterschiedlichen Datenbanken liegen kann das das generierte SQL schlicht nicht.

Mir fällt als Alternative nur eine recht unschöne Lösung ein.

Man müsste eine komplette Liste der IDs in einen String kopieren bspw. beim Laden der Seite per VTL oder RenderingHandler.
Diesen String schreibt man in die Session und kann dann auch statisch danach filtern. Alternativ kann man den String auch in ein Eingabefeld schreiben und dynamisch danach filtern.
22.02.2016 10:35 von MartinW
Hallo Hand3rker und Martin,

die Idee vom Handw3rker wirft eine Fehlermeldung aus. attention

Vermutlich hat der Martin Recht - geht so nicht.



Kann ich denn nirgends mein SQL selber stricken?


select * from DB2.view
where db2.view.kdnr=intrexx.kdnr



Ich meine ich hab mal irgendwo was gelesen dass es möglich ist beim onload ein benutzerdefiniertes SQL auszuführen und Datengruppen und Tabellen damit zu befüllen.

Oder stell ich mir das in meiner kindlichen Fantasie zu einfach vor?

Irgendwie muss das doch machbar sein attention



Grüßle
22.02.2016 12:52 von Schweinetoeter
naja was du willst ist ja nicht select * from db2.view where db2.view.kdnr=intrexx.kdnr
das wäre recht einfach.
was du möchtest ist select * from db2.view where db2.view.kdnr in (select intrexx.kdnr from intrexx)

Evtl. gibt es aber was noch vielo einfacheres.

Wenn ich das recht verstehe gibt es eine Datengruppe "Kunden" in Intrexx und eine in db2.
In Intrexx soll jetzt zu jedem aus db2 genau ein Eintrag gemacht werden, oder?

Das könnte man so lösen, dass man beim speichern ein Flag zurückschreibt welches festlegt ob der Datensatz bereits übernommen wurde.
Also geht natürlich nur wenn man in db2 ein Feld hinzufügen kann.
22.02.2016 13:11 von MartinW
Hallo Martin,
Wenn ich das recht verstehe gibt es eine Datengruppe "Kunden" in Intrexx und eine in db2.
In Intrexx soll jetzt zu jedem aus db2 genau ein Eintrag gemacht werden, oder?


Nicht ganz - ich möchte die Tabelle aus dem View anzeigen und zwar nur die Einträge die in der Intrexx Datenbank NICHT enthalten sind.



DB2.Kunden --> Datapicker (neuen Datensatz anlegen) --> Intrexx.Kunden



Die Verbindung ist die Kundennummer.

Das ganze dient einfach der Kontrolle daß alle Neukunden das Modul ordnungsgemäß durchlaufen und keiner vergessen wird.



Grüßle
22.02.2016 13:29 von Schweinetoeter
Zurück | Alles über Intrexx | Impressum | Datenschutzerklärung

Über United Planet
© 2019 United Planet GmbH
Schnewlinstraße 2
79098 Freiburg