Home › Forum › Nuclos Konfiguration › Vorgänge und Objekte › Externe Daten
- Dieses Thema hat 13 Antworten und 4 Teilnehmer, und wurde zuletzt aktualisiert vor 7 Jahren, 6 Monaten von
Michael Henckes.
-
AutorBeiträge
-
13 Mai 2016 um 14:10 Uhr #8818
Michael Henckes
TeilnehmerHallo,
ich habe folgenden Anwendungsfall und würde diesen gerne über Nuclos abdecken.
Ich habe eine vorhandene Datenbank und möchte von Nuclos auf diese sowohl lesende als auch schreiben zugreifen. Ich habe gesehen das man über Dynmische Entitäten/Businessobjekte externe Daten einbinden kann.
In den Videos sind mir folgende Einschränkungen aufgefallen:
Dynmische Entitäten/Businessobjekte können nur als Subformular verwendet werden.
Dynmische Entitäten/Businessobjekte sind nur lesend eingebunden.Gibt es noch einen anderen Weg, ein Import der Daten kommt leider nicht in Frage, da die bestehenden Datenstrukturen nicht geändert werden können.
Vielen Dank für Ihre Antwort.
Gruß.14 Mai 2016 um 00:14 Uhr #8819Frank Pavlic
TeilnehmerHallo,
dynamische Businessobjekte sind nicht ganz die richtige Wahl,besser sind virtuelle Businessobjekte, siehe hier http://wiki.nuclos.de/display/Konfiguration/Virtuelle+BusinessobjekteGruß
Frank17 Mai 2016 um 14:55 Uhr #8820Michael Henckes
TeilnehmerDanke, ich werde das Morgen mal testen und mich dann noch einmal melden.
18 Mai 2016 um 18:39 Uhr #8821Michael Henckes
TeilnehmerHallo,
danke noch ein mal für die Hilfe. Ich bin jetzt schon etwas weiter gekommen. Leider stehe ich nun vor dem nächsten Problem.
Nach der Definition des Virtuellen Businessobjekts(Name und dann View) wie in der Anleitung beschrieben funktioniert auch das Anlegen des Businessobkekts.
Dann habe ich als Test ein minimales Layout erstellt.Bis hier hat alles geklapt wie ich mir das vorgestellt habe.
Rufe ich nun die Liste meines Businessobjekts auf bekomme ich aktuell nur „Geändert von“ angezeigt, vorhin habe ich nur „Erstellt von“ oder „Erstellt am“ angezeigt bekommen.
Die Anzahl der Einträge stimmt überein.Nach einem Doppelklick wird der Eintrag wie gewünscht angezeigt.
Was mich nun verwundert, ich kann keine neuen Datensätze erfassen, löschen oder bearbeiten. Habe ich hier etwas falsch verstanden, ich dachte das es möglich seien sollte?19 Mai 2016 um 16:33 Uhr #8822Frank Pavlic
TeilnehmerHallo,
kannst Du mal deine SQL posten ? Es ist etwas schwierig, nur mit einer Glaskugel zu helfen 😉 .Wenn Du Daten über die virtuelle Entität erfassen/ändern willst, dann musst Du noch eine ID-Factory angeben. Das wird benötigt, um eine eindeutige ID für den neuen Datensatz zu generieren. Wenn Du die ID-Factory im Businessobjekt-Wizard angegeben hast, kannst Du Daten anlegen bzw. Bestehende ändern.
Gruß
Frank20 Mai 2016 um 16:49 Uhr #8829Michael Henckes
TeilnehmerDanke noch mal bin heute wieder etwas weiter gekommen.
Ich habe zum testen einen Tabelle in der nuclos-DB angelegt und diese mit Testdaten befüllt.Ich nutze die Standard PostgreSQL Installation. Musste mich auch schon mit den Eigenheiten rumschlagen.
So macht es für PostgreSQL einen Unterschied ob am in der View
"NAME" as NAME,
oder
"NAME" as "NAME",
schreibt. Bzw. nuclos generiert am Ende das falsche SQL Statement und verwendet NAME anstatt „NAME“.Hier die Details zu meinem Problem, welche sich nach dem letzten Update schon wieder geändert haben, da ich dann doch ein Paar Probleme lösen konnte. Hier die Tabelle:
CREATE TABLE "AREAS"
(
"ID" integer NOT NULL,
"NAME" text,
"IN_USE" character(1) DEFAULT 'N'::bpchar,
"USER_MODIFIED" text DEFAULT "current_user"(),
"USER_CREATED" text DEFAULT "current_user"(),
"DATE_MODIFIED" date DEFAULT now(),
"DATE_CREATED" date DEFAULT now(),
"KZ" text,
"NOTE" text,
"TEST_ID" integer,
"INTVERSION" integer,
CONSTRAINT "ID" PRIMARY KEY ("ID")
)
WITH (
OIDS=FALSE
);
ALTER TABLE "AREAS"
OWNER TO nuclos;
Dann habe ich in Nuclos die View definiert und dann folgenden Quelltext hinterlegt.
CREATE OR REPLACE VIEW DEF_AREAS AS
SELECT
"ID" as INTID,
"INTVERSION" as INTVERSION,
"DATE_CREATED" as datcreated,
"DATE_MODIFIED" as datchanged,
"USER_CREATED" as strcreated,
"USER_MODIFIED" as strchanged,
"NAME" as NAME,
"IN_USE" as IN_USE,
"KZ" as KZ,
"NOTE" as NOTE,
"TEST_ID" as TEST_ID
from "AREAS"
Daraus habe ich dann das Business Objekt erstellt.
Hier der dann das erste „Problem“ TEST_ID wird nicht als Integer erkannt.
Ich bekomme auch keine Sinnvolle Auswahl.
Gut dann lege ich einen neuen Datentypen an.
Gut am Ende lasse ich mir noch das Standardformular generieren.
Nun öffne ich die Listen Ansicht. Mittlerweile habe ich auch herausgefunden wo ich die Spalten ein und aus blenden kann. Leider bekomme ich aber nicht alle Spalten angezeigt und dann auch noch welche mit falschem Namen (Inhalt ist aber richtig).
Ein weiterer Punkt ist das in der Suche nur das Feld IN_USE und TEST_ID wirklich auswählbar sind.
21 Mai 2016 um 04:30 Uhr #8830Frank Pavlic
TeilnehmerHallo,
lege doch die Tabelle AREAS über nuclos an, dann hast Du gleich 3 Fehler auf einmal gelöst.Denn es ist so, dass nuclos z.B. den Datentyp integer nicht verwendet. Ganzzahlen in nuclos sind vom Typ numeric(9,0). Ebenso sind die Felder datcreated und datchanged vom Typ timestamp. Das wird der Grund sein, wieso die Eigenschaften der Felder nicht richtig erkannt werdenSchau Dir die die Definition eines Business-Objekts in postgres an, da siehst Du die Datentypen der Felder, welche nuclos verwendet. Und so sollten sie in der CREATE VIEW dann auch vorkommen. D.h. wenn Du eine Tabelle verwendet willst, welche nicht über nuclos angelegt wurde, dann wirst Du in der CREATE VIEW-Anweisung casts einsetzen müssen.
Alle weiteren Probleme müssten Folgefehler aus der VIEW-Definition sein, mit der nuclos nicht viel anfangen kann.
Gruß
Frank27 Mai 2016 um 14:50 Uhr #8834Michael Henckes
TeilnehmerHallo Frank,
danke für deine weitere Hilfe. Es geht aktuell darum zu testen ob nuclos die Anforderungen erfüllt, welche wir uns vorstellen, darum kann ich die Tabelle nicht in Nuclos direkt erstellen auch wenn es naheliegend wäre.
Danke noch einmal für die weitere Hilfe. Ich habe die Änderungen mit dem Cast wie von dir vorgeschlagen durchgeführt. Leider hat es nur Teile der Probleme behoben.
Pro:
- Die Datentypen werden nun erkannt.
- Die Suche funktioniert auch wie vorgestellt.
Negativ:
- Bearbeiten der Daten nicht mehr möglich. (Nur über Datenbank-Trigger)
- Spaltennamen werden immer noch nicht richtig angezeigt.
Spaltennamen:
In der Javaoberfläche werden die Spalten immer noch nicht richtig angezeigt.Beim Spalten bearbeiten werden nur die internen Ids von Nuclos angezeigt.
In der Weboberfläche werden die Spalten dagegen angezeigt.
Eine sinnvolle Erklärung konnte ich dafür bisher noch nicht finden.
Bearbeiten der Daten:
Ein Bearbeiten ist natürlich nicht mehr möglich, da die View nicht mehr aktualisierbar ist. Gibt es noch eine anderen Möglichkeit Nuclos zu den richtigen Datentypen zu verhelfen, außer per Cast. Weil eine richtige Auswahl der Datentypen war für die 1 zu 1 View ja auch nicht möglich.Danke und ein schönes Wochenende.
27 Mai 2016 um 15:23 Uhr #8836Michael Henckes
TeilnehmerSo die Spalten habe ich gerade noch lösen können.
Hierfür ware es „nur“ notwenig. Bei jeder Spalte einmal den Dialog für die Erfassung durch zu klicken. Hierbei wurden dann die Übersetzung erstellt und nun kann ich mir die Liste auch ordentlich ansehen. B)Attachments:28 Mai 2016 um 15:23 Uhr #8837Thomas Hempel
TeilnehmerDas Fehlen der Spaltennamen ist ein altbekannter Bug von nuclos.
Gruß
Thomas1 Juni 2016 um 12:12 Uhr #8845Michael Henckes
TeilnehmerIst aber ein schöner Fehler 😉 .
Gibt es bezüglich des anderen Problems vielleicht noch Vorschläge.
Von der Logik würde ich sagen das es noch möglich wäre, die Typen der Spalten direkt in der Datenbank zu ändern, so das Nuclos denkt die Typen wären andere. Ich wollte aber eigentlich nicht zu solchen Mitteln greifen müssen.
Danke.
2 Juni 2016 um 05:15 Uhr #8846Frank Pavlic
TeilnehmerHallo,
was passiert denn, wenn Du Daten editierst? Ist der Speichern-Button aktiv, so dass Du speichern kannst?Gruß
Frank2 Juni 2016 um 12:10 Uhr #8847Ramin Goettlich
TeilnehmerIst denn sicher festgestellt, dass der CAST die Updatefähigkeit der View kaputtmacht? Wenn es wirklich daran liegt, wäre es wohl das beste, Nuclos ein wenig toleranter im Umgang mit fremden Datentypen zu machen.
Oder, wie schon vorgeschlagen, den Datentyp in der Quelltabelle anzupassen.
3 Juni 2016 um 12:26 Uhr #8850Michael Henckes
Teilnehmer[quote=“f.pavlic“ post=8633]Hallo,
was passiert denn, wenn Du Daten editierst? Ist der Speichern-Button aktiv, so dass Du speichern kannst?Gruß
Frank[/quote]Der Speichern Button ist aktiv, die Fehlermeldung kommt von der Datenbank. Wie ich schon schrieb kann man das natürlich mit entsprechenden Triggern umgehen. Bedeutet aber natürlich einen nicht zu unterschätzenden Aufwand.
[quote=“nuclosian“ post=8634]Ist denn sicher festgestellt, dass der CAST die Updatefähigkeit der View kaputtmacht? Wenn es wirklich daran liegt, wäre es wohl das beste, Nuclos ein wenig toleranter im Umgang mit fremden Datentypen zu machen.
Oder, wie schon vorgeschlagen, den Datentyp in der Quelltabelle anzupassen.[/quote]
Es liegt definitiv am Cast, ohne Cast ist das Speichern möglich. Die implezite Umwandlung der Datentypen funktioniert ohne Probleme. Wie geschrieben funktionieren dann halt andere Dinge nicht.
Wenn das Cast nicht vorgenommen wird, funktioniert die Suche unteranderem nicht. Als Standard wird die Spalte als Text (Large Object) definiert, möchte man den Typen nun ändern ist nur Individuell als alternative Auswahl möglich.
Gerade noch ein paar Probleme gefunden, da muss ich aber noch einmal genau prüfen wie ich diese hervorrufen kann.
Attachments: -
AutorBeiträge