AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dynamische zuweisung von Spalten

Ein Thema von freak4fun · begonnen am 10. Sep 2014 · letzter Beitrag vom 12. Sep 2014
Antwort Antwort
Dejan Vu
(Gast)

n/a Beiträge
 
#1

AW: Dynamische zuweisung von Spalten

  Alt 11. Sep 2014, 07:38
Du meinst, wenn man z.B. in MSSQL eine Tabellenstruktur ändert, funktionieren u.U. Views etc. nicht? Das ist richtig, wenn man den Fehler macht, in einer View ein 'Select * ' zu verwenden, was eh ein Anti-pattern ist.

Und wenn man Spaltennamen ändert, geht das natürlich dann nicht. Außer, man würde die Views mit ändern, was irgendwie zwingen wäre. Würde Oracle denn ein Refactoring der Views und SP durchführen, wenn man einen Spaltennamen ändert?
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#2

AW: Dynamische zuweisung von Spalten

  Alt 11. Sep 2014, 08:23
wenn man mit * Antipattern arbeitet, macht oracel das
Gruß, Jo
  Mit Zitat antworten Zitat
-=ZGD=-

Registriert seit: 25. Apr 2006
Ort: Bad Aibling
105 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

AW: Dynamische zuweisung von Spalten

  Alt 11. Sep 2014, 08:44
Hi Chris,

ich entnehme mal dem ersten Post, dass die CSV jeweils einen Header hat, in welchem die Spalten stehen?

Die Reihenfolge ist in der Regel fest?
Es gibt zu keinem Zeitpunkt eine wirklich mustergültige Datei, die das Programm intern kennt?

Man könnte hier natürlich das Ganze etwas auf die Spitze treiben und für jede Spalte das Mapping speichern in einer Zuordnungstabelle.
Somit könntest du später einfach schauen: Wurde irgendwann die Spalte "Zuname" schon mal zugeordnet?

CSV-Datei
Code:
Vorname|Zuname|Anrede
Spaltenmapping
Code:
Vorname=firstname
Zuname=surname
Anrede=title
Neue CSV-Datei nach Monaten
Code:
Zuname|Anrede|Rufname
Ergibt dann ein neues Mapping
Code:
Zuname=surname
Anrede=title
Für Rufname gibt es noch kein Mapping, muss zugeordnet werden und ist somit beim nächsten Mal bekannt..
Das ist so die grobe Idee, die ich im Kopf hab.
Hierbei spielt die Struktur der CSV keine Rolle, einzig das Mapping ist entscheidend und du musst nur die Spalten anzeigen/zuordnen lassen, die unklar sind.

Edit: Grad gesehen, dass Dejan-vu so etwas Ähnliches vorgeschlagen hat. Need some coffee

Anmerkung
Ich würde das Hinzufügen/Entfernen der Spalten in der Datenbank nicht umsetzen.

Warum?
Weil das Programm damit dann auch umgehen müsste, sprich sich der Dynamik der Datenbank anpassen. Bei jedem Import könnte man theoretisch Felder entfernen lassen, die für die Funktionsweise der Anwendung relevant sind.
Stefan Michalk
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.

Geändert von -=ZGD=- (11. Sep 2014 um 08:52 Uhr) Grund: Tante Edit.
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

AW: Dynamische zuweisung von Spalten

  Alt 11. Sep 2014, 10:10
CSV-Datei
Code:
Vorname|Zuname|Anrede
Spaltenmapping
Code:
Vorname=firstname
Zuname=surname
Anrede=title
Neue CSV-Datei nach Monaten
Code:
Zuname|Anrede|Rufname
Ergibt dann ein neues Mapping
Code:
Zuname=surname
Anrede=title
Richtig. Interessant wird es wenn ich meine beiden Beispiel CSV-Dateien aus der PDF nehme:

export_partial
Code:
alter = Alter
nam1 = Vorname
summe = Kontostand
name2 = Nachname
ort = Wohnort
Export (Neu)
Code:
alter = Alter
vor_name = Vorname
Anrede = Anrede
nach_name = Nachname
Beruf = Beruf
Neue Spalten mit gleicher Zuweisung. Was wenn "nach_name" nicht zugewiesen wird? Was wenn es später zugewiesen wird?
Wenn Anrede nicht angezeigt werden soll, aber der Benutzer sich entscheidet das erst später anzeigen zu lassen? Es dürfen keine Daten verloren gehen.

Anmerkung
Ich würde das Hinzufügen/Entfernen der Spalten in der Datenbank nicht umsetzen.

Warum?
Weil das Programm damit dann auch umgehen müsste, sprich sich der Dynamik der Datenbank anpassen. Bei jedem Import könnte man theoretisch Felder entfernen lassen, die für die Funktionsweise der Anwendung relevant sind.
Hinzufügen automatisch, Formatabhängig. Löschen ist nicht erlaubt, weder Programm noch Benutzer.

Ich bin nach wie vor offen für Vorschläge:
  1. Dynamisch Spaltenerstellung aus CSV
  2. Keine Daten löschen
  3. Immer alle Daten erfassen
  4. Möglichst einfach für den Benutzer
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
-=ZGD=-

Registriert seit: 25. Apr 2006
Ort: Bad Aibling
105 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

AW: Dynamische zuweisung von Spalten

  Alt 11. Sep 2014, 10:19
Nunja, importieren tust du alles.

In deinen Beispielen ist links die Überschrift aus der CSV und rechts die Spalte in der Datenbank?

Beim Import gibt es kein "später".

Du prüfst vor dem Import ab, ob es für die CSV-Spalte eine Zuordnung zur DB gibt.
Ja: Super, nimm die
Nein: Dann entweder a) vorhanden Spalte entspricht dieser oder b) neue Spalte hinzufügen (evlt. den User fragen, welcher Inhalt dahinter steht [numerisch, Zeichenkette]).

Auf diese Weise bekommst du immer alle Daten mit, allerdings kann es natürlich sein, dass der Benutzer sagt: neue Spalte anlegen, obwohl es für diese Information bereits eine Spalte gibt..

Es wird keinen Weg geben, der zu 100 % sicher und sauber ist...
Stefan Michalk
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

AW: Dynamische zuweisung von Spalten

  Alt 11. Sep 2014, 10:28
Wer Interesse an der Anzeige hat:

Seite Balsamiq, Import im Anhang.

Nunja, importieren tust du alles.

Du prüfst vor dem Import ab, ob es für die CSV-Spalte eine Zuordnung zur DB gibt.
Ja: Super, nimm die
Nein: Dann entweder a) vorhanden Spalte entspricht dieser oder b) neue Spalte hinzufügen (evlt. den User fragen, welcher Inhalt dahinter steht [numerisch, Zeichenkette]).

Auf diese Weise bekommst du immer alle Daten mit, allerdings kann es natürlich sein, dass der Benutzer sagt: neue Spalte anlegen, obwohl es für diese Information bereits eine Spalte gibt..

Es wird keinen Weg geben, der zu 100 % sicher und sauber ist...
Richtig.
Angehängte Dateien
Dateityp: txt GUI Planung.txt (15,2 KB, 9x aufgerufen)
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
-=ZGD=-

Registriert seit: 25. Apr 2006
Ort: Bad Aibling
105 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7

AW: Dynamische zuweisung von Spalten

  Alt 11. Sep 2014, 10:34
Ja, genau, im Prinzip kann man das so aufbauen.
Vielleicht würde ich es einfach kürzer machen und wie eine Art Wizard aufbauen.

Du zeigst pro Schritt immer nur eine CSV-Spalte an, die konfiguriert werden muss, sprich
  1. zugeordnet oder
  2. angelegt.
.

Was an der Sache blöd ist: Inkonsistenz der Daten, wie ich aus deinem Mockup erkenne, aber das wird schon so seine Richtigkeit haben.
Angehängte Grafiken
Dateityp: png mockup.png (33,6 KB, 14x aufgerufen)
Stefan Michalk
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.

Geändert von -=ZGD=- (11. Sep 2014 um 12:10 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz