| |
| Was bringt der 3D-Druck in der Elektronik?, eine Pressemitteilung
|
Autor
|
Thema: Virtuelles Feld in Datensatz (1942 mal gelesen)
|
LarsB Mitglied
Beiträge: 448 Registriert: 13.05.2003
|
erstellt am: 27. Nov. 2013 13:49 <-- editieren / zitieren --> Unities abgeben:
Hallo, besteht die Möglichkeit, ein virtuelles Feld an einer bestehenden Tabelle anzufügen? Folgendes Problem: Ich habe eine Tabelle: Gemarkung | Flur | Zaehler | Nenner | --------------------------------------------------- 1 | 22 | 3 | 148 | 2 | 5 | 33 | 14 | Kann ich jetzt im fünften Feld einen Wert erzeugen, der mir aus den ersten vier Feldern einen neuen Wert generiert? Gemarkung | Flur | Zaehler | Nenner | FLST_ID | ------------------------------------------------------------------------ 1 | 22 | 3 | 148 | 1-022-00003/0148 | 2 | 5 | 33 | 14 | 2-005-00033/0014 | Besteht diese Möglichkeit? Wir haben Oracle 11g Gruß Lars [Diese Nachricht wurde von LarsB am 30. Jun. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ThomasZwatz Ehrenmitglied V.I.P. h.c. cadadmin
Beiträge: 5433 Registriert: 19.05.2000 (12-2023) --------------------------------------------- [stable] NX2007(2027.5020) + SE2023 U6 + TC13.3.0.3, RAC +AWC6.2.2 SingleSite 4Tier, DocMgt, Client4Office, MRO, ReqMgt, SchedMgt, T4S, TcVis Mockup, TcSSO, SEEC, Multi-CAD BCT-Inspector Neutral v22R2 --------------------------------------------- [testing] NX2007(2027.5020) + SE2023 U6 + TC13.3.0.3, RAC +AWC6.2.2 BCT-Inspector Neutral v22R2 @M7720 Win10 (21H2)
|
erstellt am: 27. Nov. 2013 19:48 <-- editieren / zitieren --> Unities abgeben: Nur für LarsB
|
LarsB Mitglied
Beiträge: 448 Registriert: 13.05.2003
|
erstellt am: 27. Nov. 2013 23:34 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas, das sollte ein String sein, da die Nutzer über FLST_ID in dem Datenbestand suchen. Jedes mal jeweils die Gemarkung, Flur, Zähler und Nenner einzutippen, ist sehr mühsam. Daher sollte diese Info in der FLST_ID zusammengeführt werden um darüber schnell den passenden Datensatz zu finden. Das ganze läuft dann in AutoCad MAP 3D über die entsprechenden Formulare. Zudem nachher in MapEdit. Gruß Lars Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2012, Rasterdesign MapGuide 6.5 - 2012 Oracle Autodesk Topobase 2-2012 VS6, VS.net
|
erstellt am: 11. Dez. 2013 19:52 <-- editieren / zitieren --> Unities abgeben: Nur für LarsB
Hallo Lars, das kannst du wie folgt einbinden:
Code: select fid, trim(to_char( NR_GEMARKUNG ,'0000' ) ) | | '-' | | trim(to_char( NR_Flur ,'000' ) ) | | '-' | | trim(to_char( NR_FLST_HAUPT ,'00000' ) ) | | '/' | | trim(to_char( NR_FLST_UNTER ,'000' ) ) as Flurstuecks_Kennzeicenfrom EDB_FLST_ATT
Bei den EDBS Daten gibt es auch ein Feld FLST_Kennzeichen_OF, bei ALKIS was ähnliches. Wilfried Stelberg ------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LarsB Mitglied
Beiträge: 448 Registriert: 13.05.2003
|
erstellt am: 13. Dez. 2013 09:22 <-- editieren / zitieren --> Unities abgeben:
Hallo Wilfried, die Formatierung kenne ich. Ich wüsste auch, wie man das ganze in einer View erstellt. Nur wie schaffe ich es, an einer bestehenden Tabelle, ein neues Feld anzuhängen, in dem dann diese Select-Anweisung durchgeführt wird. Ich muss ja an irgend einer Stelle (Administrator, SQL-Sheet) zu der bestehenden Tabelle, dieses Feld hinzufügen können, in dem dann diese Berechnung gemacht wird. Gruß Lars Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2012, Rasterdesign MapGuide 6.5 - 2012 Oracle Autodesk Topobase 2-2012 VS6, VS.net
|
erstellt am: 13. Dez. 2013 10:15 <-- editieren / zitieren --> Unities abgeben: Nur für LarsB
Hallo Lars, Es gibt eine Menge Möglichkeiten da "was" zu machen, jedoch ist mir deine Aufgabenstellung nicht ganz verständlich. Du kannst einen View machen (siehe Select von oben), du kannst aber auch ein Feld in eine bestehende Tabelle einfügen. Dann wird dieses Feld aber nicht standardmäßig gefüllt. Das müsstest du oder ein Oracle Trigger auf dem laufenden halten. Grundsätzlich bin ich kein Freund von solchen "Zusatzfeldern", da die Daten dann redundant in deiner Datenbank zu finden sind. Aber manchmal muss man halt Kompromisse machen. Um beurteilen zu können was die geschickte Methode ist, solltest du sagen im welchen Zusammenhang du dieses Feld benötigst. Hat die Tabelle/View dann eine Geometrie für den Bildaufbau? Hast du eine Maske dazu? Brauchst die Angabe nur für ein "ZoomGoto"? Wilfried Stelberg
------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LarsB Mitglied
Beiträge: 448 Registriert: 13.05.2003
|
erstellt am: 13. Dez. 2013 10:37 <-- editieren / zitieren --> Unities abgeben:
Hallo Wilfried, > du kannst aber auch ein Feld in eine bestehende Tabelle einfügen. > Dann wird dieses Feld aber nicht standardmäßig gefüllt. Das müsstest > du oder ein Oracle Trigger auf dem laufenden halten. Ja, so etwas meinte ich. Siehe mein erstes Posting. Dort habe ich ein Beispiel genannt. Es geht speziell um Flächen, die anhand der darunter liegenden Flurstücke identifiziert werden. Diese sind aber nicht datenbanktechnisch mit den Flurstücken verbunden. Wenn jetzt in dem Formular (Autocad Map, MapEdit) nach einem Datensatz gesucht werden soll, dann müssten die Kollegen beim Filtern immer, Gemarkung, Flur, Zähler und Nenner eintippen, um den richtigen Datensatz zu finden. Daher habe ich die FLST_ID entwickelt. Dort reicht es dann z.B. 1-022-00003/0148 auszuwählen und der Datensatz wird gefiltert. Ich habe es inzwischen schon über Views und andere Umwege geschafft. Ist von der Datenstruktur etwas komplizierter, ist dann vielleicht aber doch der bessere Weg. Gruß Lars Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2012, Rasterdesign MapGuide 6.5 - 2012 Oracle Autodesk Topobase 2-2012 VS6, VS.net
|
erstellt am: 13. Dez. 2013 11:10 <-- editieren / zitieren --> Unities abgeben: Nur für LarsB
Zitat: Original erstellt von LarsB: ... Ja, so etwas meinte ich. ..
hast du aber nicht geschrieben. Ein "virtuelles" Feld in einer Tabelle gibt es nicht. Wenn die Tabelle kaum geändert wird kannst du doch einfach mit dem Administrator ein Feld hinzufügen. Danach mit dem SQL Sheet ein Update auf das Feld. Wilfried Stelberg ------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LarsB Mitglied
Beiträge: 448 Registriert: 13.05.2003
|
erstellt am: 13. Dez. 2013 11:23 <-- editieren / zitieren --> Unities abgeben:
|
Stelli1 Moderator Verm.-Ing.
Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2012, Rasterdesign MapGuide 6.5 - 2012 Oracle Autodesk Topobase 2-2012 VS6, VS.net
|
erstellt am: 13. Dez. 2013 14:41 <-- editieren / zitieren --> Unities abgeben: Nur für LarsB
Hallo Lars, in der Tat. Das kannte ich noch nicht, habe es mal gleich probiert.
Code: alter table EDB_FLST_ATT add flst_kennz GENERATED ALWAYS AS ( trim(to_char( NR_GEMARKUNG ,'0000' ) ) | | '-' | | trim(to_char( NR_Flur ,'000' ) ) | | '-' | | trim(to_char( NR_FLST_HAUPT ,'00000' ) ) | | '/' | | trim(to_char( NR_FLST_UNTER ,'000' ) ) );
Geht einwandfrei. Wilfried Stelberg ------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LarsB Mitglied
Beiträge: 448 Registriert: 13.05.2003
|
erstellt am: 16. Dez. 2013 08:55 <-- editieren / zitieren --> Unities abgeben:
|
fred_tomke Mitglied Applikationsingenieur
Beiträge: 156 Registriert: 14.06.2004 Map 2015 x64 Win7 x64 12 GB RAM ADN OpenDCL
|
erstellt am: 03. Feb. 2014 20:13 <-- editieren / zitieren --> Unities abgeben: Nur für LarsB
Hi, kleiner Hinweis, da grad drauf reingefallen: . . Export der Tabelle STRM_MANGEL_ART EXP-00107: Feature (VIRTUAL COLUMN) von Spalte BEZ_TYP in Tabelle KW_STRM.STRM_MANGEL_ART wird nicht unterstützt. Tabelle wird nicht exportiert. . . Export der Tabelle STRM_MASSNAHME EXP-00107: Feature (VIRTUAL COLUMN) von Spalte BEZ_TYP in Tabelle KW_STRM.STRM_MASSNAHME wird nicht unterstützt. Tabelle wird nicht exportiert. VG, Fred ------------------ Fred Tomke Dipl.-Ing. (FH) Landespflege Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ThomasZwatz Ehrenmitglied V.I.P. h.c. cadadmin
Beiträge: 5433 Registriert: 19.05.2000
|
erstellt am: 03. Feb. 2014 20:40 <-- editieren / zitieren --> Unities abgeben: Nur für LarsB
|
fred_tomke Mitglied Applikationsingenieur
Beiträge: 156 Registriert: 14.06.2004 Map 2015 x64 Win7 x64 12 GB RAM ADN OpenDCL
|
erstellt am: 04. Feb. 2014 07:48 <-- editieren / zitieren --> Unities abgeben: Nur für LarsB
Hi, vornehmlich mit EXP. Habe dann expdp verwendet, da habe ich nach einer Stunde nicht mehr hingeschaut. Für den 8 MB EXDP-Dump hatte er dann tatsächliche 2 Stunden gebraucht. Die meisten Kunden tauschen aber via EXP/IMP aus. Deswegen habe ich mich dazu entschlossen, die schönen virtuellen Spalten wieder zu hässlichen Objektregeln zu wandeln (schnief). Die Gefahr, dass der Kunde seine Sicherung oder mal nen fixen Export über EXP macht, war mir zu groß... Alternative wäre vor dem EXP die virtuellen Spalten nicht mit dem TB-Admin, sondern via SQL zu löschen und nach dem IMP vor der 1-Klick-Wartung wieder hinzuzufügen. VG, Fred EDIT: Ich frach da mal nach... ------------------ Fred Tomke Dipl.-Ing. (FH) Landespflege [Diese Nachricht wurde von fred_tomke am 04. Feb. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ThomasZwatz Ehrenmitglied V.I.P. h.c. cadadmin
Beiträge: 5433 Registriert: 19.05.2000
|
erstellt am: 04. Feb. 2014 09:58 <-- editieren / zitieren --> Unities abgeben: Nur für LarsB
Zitat: Original erstellt von fred_tomke: Hi, vornehmlich mit EXP. Habe dann expdp verwendet, da habe ich nach einer Stunde nicht mehr hingeschaut. Für den 8 MB EXDP-Dump hatte er dann tatsächliche 2 Stunden gebraucht.....
Ich glaub da hakts auch noch woanders. Bei mir ist das expdp beim Exportieren geringfügig schneller als exp. ( Ein 12GB exp Dump braucht 16 min, mit expdp sind es 12 min ). Der wesentliche Vorteil liegt beim Importieren, da ist der Dump vom expdp so schnell drin dass ichs gar nicht gemessen hab ... Sind die virtuellen Spalten beim expdp mit drin ? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2012, Rasterdesign MapGuide 6.5 - 2012 Oracle Autodesk Topobase 2-2012 VS6, VS.net
|
erstellt am: 04. Feb. 2014 14:32 <-- editieren / zitieren --> Unities abgeben: Nur für LarsB
Hallo Fred, mal von allen Oracle Sachen abgesehen. Im Map wirst du ein Problem haben. Dort wird ein Update auf alle Spalten gemacht, ob im Formular gesperrt oder nicht. Das haut dann nicht hin. Mach mal schön einen "traditionellen" Trigger der dein Feld befüllt. Dann klappt es auch mit dem Nachbarn/Export Hier mal ein Beispiel zur Bildung eines Objektnamens aus Strasse (Kennungsliste) und Hausnummer.
Code: CREATE OR REPLACE TRIGGER TRIG_OBJEKTNAME BEFORE UPDATE OF Dummy, Hausnummer, id_Strasse ON KW_VERSIEGELUNG FOR EACH ROW DECLARE strStrasse varchar(50); CURSOR cur_StrName is select f.value from strasse_tbd f where f.id= :new.id_Strasse; BEGIN IF :new.id_strasse IS NULL THEN :new.Objektname := :new.Hausnummer; ELSE OPEN cur_StrName; FETCH cur_StrName into strStrasse; CLOSE cur_StrName; :new.objektname := strStrasse | | ' - ' | | :new.Hausnummer; END IF; END;
Wenn du die virtuelle Spalte nachstellen willst dann ohne Cursor Code: :new.zusammen := :new.Feld1 | | ' - ' | | :new.Feld2;
Wilfried Stelberg ------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Senior Specialist Application Engineering Management (m/w/d) | - Entwicklung von (Teil-) Konzepten für PDM / CAD / IT Lösungen sowie die Integration in das Unternehmen
- Unterstützung bei der Konzeption, Umsetzung und Betrieb komplexer PDM / CAD / IT-Projekte
- Betriebsoptimierung und Automatisierung von Interfaces von und zu PDM Systemen
- Erweiterung und Überarbeitung von technischen Informationen und ...
| Anzeige ansehen | Prozessmanagement |
|
fred_tomke Mitglied Applikationsingenieur
Beiträge: 156 Registriert: 14.06.2004
|
erstellt am: 04. Feb. 2014 22:09 <-- editieren / zitieren --> Unities abgeben: Nur für LarsB
Hallo, komme erst jetz zum Antworten, weil ich den dpdump erst wieder woanders importieren musste. Zitat: Original erstellt von ThomasZwatz: Sind die virtuellen Spalten beim expdp mit drin ?
Nein, die kompletten Tabellen sind zwar Bestandteil des DPDumps, wurden jedoch nicht importiert. Ich weiß zwar, dass ich die virtuellen Spalten hätte excluden können. Aber wie gesagt, der Dump geht zum Kunden und ich will nicht, dass wenn er mal ausdumpt u.dgl. im die Tabellen flöten gehen. Schade eigentlich, weil die virtuellen Spalten viele Nachteile von Objektregeln ersparen würden. Zitat: Original erstellt von Stelli1: [...]Im Map wirst du ein Problem haben.Dort wird ein Update auf alle Spalten gemacht[...]
Wilfried, genau das hatte ich von Map auch erwartet. Wo wir doch bei den MovE-Geschichten mit Views mit virtuellen Spalten immer mit instead-of-Triggern arbeiten müssen. Aber denkste wohl: die virtuellen Spalten hat er beim Insert und Update doch tatsächlich ignoriert. Ich konnts nicht glauben, war aber so. Deshalb hatte ich es zunächst gelassen. Aber das mit dem Dump ist natürlich das K.O.-Kriterium! Hatte gestern abend schon alles auf Trigger umgestellt und musste feststellen, dass durch die verzweigte Struktur der Fachschale Ortsteile -> Straßennamen -> Straßenabschnitte -> Teilflächen (um mal bei dem KW-Beispiel zu bleiben) selbst durch After-Statement-Trigger nicht zulässige Trigger in der zu ändernden Tabelle ausgelöst werden (Fullname des Abschnitts setzt sich aus Ortsteilname, Straßenname mit Hausnummernbereich und Abschnittsnummer zusammen, die über joins oder inner selects gesucht werden und während eine Tabelle geändert wird, kann sie ja bekanntlich nicht abgefragt werden). Das alles aufzulösen hätte ich mir lieber mit virtuellen Feldern gespart. Grrr! Trotzdem behalte ich das mit den virtuellen Spalten gern im Hinterkopf. VG, Fred ------------------ Fred Tomke Dipl.-Ing. (FH) Landespflege Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |