Ansicht von 14 Beiträgen - 1 bis 14 (von insgesamt 14)
  • Autor
    Beiträge
  • #8818
    Michael Henckes
    Teilnehmer

    Hallo,

    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ß.

    #8819
    Frank Pavlic
    Teilnehmer

    Hallo,
    dynamische Businessobjekte sind nicht ganz die richtige Wahl,besser sind virtuelle Businessobjekte, siehe hier http://wiki.nuclos.de/display/Konfiguration/Virtuelle+Businessobjekte

    Gruß
    Frank

    #8820
    Michael Henckes
    Teilnehmer

    Danke, ich werde das Morgen mal testen und mich dann noch einmal melden.

    #8821
    Michael Henckes
    Teilnehmer

    Hallo,
    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?

    #8822
    Frank Pavlic
    Teilnehmer

    Hallo,
    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ß
    Frank

    #8829
    Michael Henckes
    Teilnehmer

    Danke 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.

    #8830
    Frank Pavlic
    Teilnehmer

    Hallo,
    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 werden

    Schau 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ß
    Frank

    #8834
    Michael Henckes
    Teilnehmer

    Hallo 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.

    #8836
    Michael Henckes
    Teilnehmer

    So 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)

    #8837
    Thomas Hempel
    Teilnehmer

    Das Fehlen der Spaltennamen ist ein altbekannter Bug von nuclos.

    Gruß
    Thomas

    #8845
    Michael Henckes
    Teilnehmer

    Ist 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.

    #8846
    Frank Pavlic
    Teilnehmer

    Hallo,
    was passiert denn, wenn Du Daten editierst? Ist der Speichern-Button aktiv, so dass Du speichern kannst?

    Gruß
    Frank

    #8847
    Ramin Goettlich
    Teilnehmer

    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.

    #8850
    Michael 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.

Ansicht von 14 Beiträgen - 1 bis 14 (von insgesamt 14)