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
Seite 3 von 4     123 4      
-=ZGD=-

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

AW: Dynamische zuweisung von Spalten

  Alt 11. Sep 2014, 09: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 09: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
 
#22

AW: Dynamische zuweisung von Spalten

  Alt 11. Sep 2014, 11: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
 
#23

AW: Dynamische zuweisung von Spalten

  Alt 11. Sep 2014, 11: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
 
#24

AW: Dynamische zuweisung von Spalten

  Alt 11. Sep 2014, 11: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
 
#25

AW: Dynamische zuweisung von Spalten

  Alt 11. Sep 2014, 11: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.
Miniaturansicht angehängter Grafiken
mockup.png  
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 13:10 Uhr)
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
533 Beiträge
 
Delphi 11 Alexandria
 
#26

AW: Dynamische zuweisung von Spalten

  Alt 11. Sep 2014, 14:04
Ich hab jetzt nicht alles durchgelesen - aber der MSSqlServer (auch die kostenlose Express Version) eigene (eigentlich eher das Managementstudio) Import kann das schon. Erzeugt die Felder nach Namen wenn nicht vorhanden, wahlweise können Spaltennamen in Excel auf Spaltennamen in der Tabelle gemappt werden. Daten können angehängt oder vorher alte gelöscht werden usw. Wenn die Tabelle (Excel Sheetname) nicht existiert wird sogar die Tabelle angelegt.
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  Mit Zitat antworten Zitat
-=ZGD=-

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

AW: Dynamische zuweisung von Spalten

  Alt 11. Sep 2014, 14:05
Ich hab jetzt nicht alles durchgelesen - aber der MSSqlServer (auch die kostenlose Express Version) eigene (eigentlich eher das Managementstudio) Import kann das schon. Erzeugt die Felder nach Namen wenn nicht vorhanden, wahlweise können Spaltennamen in Excel auf Spaltennamen in der Tabelle gemappt werden. Daten können angehängt oder vorher alte gelöscht werden usw. Wenn die Tabelle (Excel Sheetname) nicht existiert wird sogar die Tabelle angelegt.

Joa, wobei Chris meinte: SQLite oder MySQL
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
Dejan Vu
(Gast)

n/a Beiträge
 
#28

AW: Dynamische zuweisung von Spalten

  Alt 11. Sep 2014, 14:20
Ja. Nur kann man beim Import-Wizard Quelle *und* Ziel frei wählen. D.h. wäre es eine Anforderung vom Vorgesetzten, wäre man ziemlich schnell fertig. Hier soll das aber ein Hobbyprojekt -idealerweise mit Lerneffekt- werden, also werden wir das hier mal hübsch alles selbst spezifizifizieren.
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

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

AW: Dynamische zuweisung von Spalten

  Alt 11. Sep 2014, 14:34
@-=ZGD=-: Der Wizard sieht gut aus. Diese Schritt für Schritt Idee gefällt mir.

... der MSSqlServer ...
Muss man dafür was bezahlen, wenn man das zu einem Projekt beifügt?

Joa, wobei Chris meinte: SQLite oder MySQL
Das ist nicht in Stein gemeißelt. SQL ist SQL.

Hier soll das aber ein Hobbyprojekt -idealerweise mit Lerneffekt- werden, also werden wir das hier mal hübsch alles selbst spezifizifizieren.
MSSQL nutzen hat auch einen Lerneffekt. Ich schau mir das mal an, wie das Funktioniert.
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#30

AW: Dynamische zuweisung von Spalten

  Alt 11. Sep 2014, 15:23
MSSQL Express kosten zwar nichts, aber Ich glaube nicht, das Du das in einem gewerblich vertrieben Projekt als kostenpflichtigen Punkt mit verkaufen kannst. Aber die üblichen Tricks greifen da immer, also z.B. selber installieren lassen, oder im Rahmen der Gesamtinstallation mit installieren und darauf hinweisen, das dieser Punkt vom MS-SSMS Express erschlagen wird. Genaueres wirst Du in den Lizenzbestimmungen von Microsoft lesen.

In jedem Fall hast Du da alles, was Du brauchst, sogar Skripting, um dein Mapping noch besser zu machen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 09:41 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