![]() |
Datenbank: SQL • Version: 3 • Zugriff über: sqlite3.dll
Mehre Dateien in einer Zeile
Hallo,
ich befasse mich im moment mit SQL Datenbaken und habe das noch nie gemacht... im momment habe ich so eine datenbank: ID,Name ich möchte aber ID,Name,Datei1,Datei2,Datei3 wobei ab name natürlich variabel ist anzahl und dateinamen.... die fragen sind nur: Wie kann ich am besten mehre dateien eine ID zuordnen ??? muss ich eine extra tabbele erstellen ? Wie wird sowas üblicherweise gemacht ??? !!! Vielen dank im vorraus !!! |
Re: Mehre Dateien in einer Zeile
Mach es doch über 2 Tabellen:
1. Tabelle: Primärschlüssel, Name 2. Tabelle: Fremdschlüssel, Datei und dann muss der Fremdschlüssel n zu 1 auf den Primärschlüssel zeigen. --- Hört sich vielleicht etwas kompliziert an, aber ist es eigentlich nicht.. also noch mal etwas einfacher... Der Primärschlüssel muss Eindeutig sein, damitt später klar ist, welche Datei zu welchem Namen gehört, also am besten den Primärschlussel auf Autowert setzen. Wenn Du jetzt einen Datensatz in Tabelle 1 hast, kannst Du x belibige Datensätze (also x beliebig viele Dateien) zur Tabelle 2 hinzufügen und von denen jeweils den Fremdschlüssel auf den Wert setzen, den der dazugehörige Primärschlüssel in Tabelle 1 hat. mit "select Datei from Tabelle2 where Fremdschlüssel = 1" bekommst Du z.B. dann alle Dateien die zum ersten Datenstz der ersten Tabelle gehören, also andersherum alle Dateien, die zum ersten Namen gehören. Alles Klar?! :) gruß Evian |
Re: Mehre Dateien in einer Zeile
achso, du meinst also ich sollte alle dateien in eine extra tabbele vervrachten und den entsprechenden prim schlüssel geben und dann mit whre alle dateien die dieen schlüssel haben rausfilter... sowas habe ich mir schon überlegt... aber was ist wenn ich recht viele dateien habe ???
Mein Vater sagte gestern noch, ich könnte die erste tabbele mit einer zweiten verküpften sprich also jeden eintrag mit einer weitern verküpfen würde das eigetnlich gehen? (weißt du wie ich meine ?) z.b.: Tabbele Namen 1 Test Tabbele Datei1, Datei2, Datei3 und jetzt muss ich nur Tabbele auslesen und habe alle die zur Tabbele Namen gehören problem ist nur ich müste tabbelen dymaisch anlegen und miteinander verküpfen... würde das gehen ??? |
Re: Mehre Dateien in einer Zeile
Hallo Michael,
sobald du mit SQL-Datenbanken arbeitest, lauetet eine Regel: In jede Spalte einer Tabelle gehört genau ein Wert - Wiederholungen sind tabu. Immer wenn dir etwas nach folgendem Muster über den Weg läuft:
Code:
Dann machst du prinzipiell das daraus:
team: daniel, sakura, luckie, sharky, ...
Code:
Aus wiederholten Spaltenwerten müssen Zeilen werden.
team: daniel
team: sakura team: luckie team: sharky ... Grüße vom marabu |
Re: Mehre Dateien in einer Zeile
Zitat:
ich werde mal die erste lösung versuchen einzubauen mal schauen wie weit ich komme *G* vielen dank für die antworten... ich fange erst gerade an mit SQL zu arbeiten und zwar ohne komponenten !!!(weil die laufen bei mir leider nicht weil ich habe nur delphi 2005 PE, delphi 7 PE, Turbo Delphi 2006) |
Re: Mehre Dateien in einer Zeile
Zitat:
Zitat:
Du musst Dich von dem Ansatz lösen, bei variablem Informationsvorkommen während der Laufzeit neue Tabellen erzäugen zu wollen. Bevor Du Deine Datenbankapplikation schreibst, sollte eigendlich die Struktur der Datenbank fest sein und eben so aufgebaut, dass sie allen möglichen eventualitäten gerecht wird. Schau Dir in diesem Zusammenhang am Besten mal follgende Themenbereiche an: ![]() ![]() ![]() Wenn Du das einigermaßen gerafft hast, wird es Dir auch nicht mehr schwer fallen fast jede mögliche Form von Informationen und ihr Zusammenhang in einer SQL-Datenbank-Struktur abzubilden. |
Re: Mehre Dateien in einer Zeile
Delphi-Quellcode:
warum bekomme ich so nur den ersten index und nicht alle einträge die mit listbox1.itemindex übereinstimmen ?
procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem);
var str:String; id:Integer; begin if sldb.TableExists('Files') = True then begin sltb := sldb.GetTable('SELECT ID,Name FROM Files where ID= '+IntTostr(ListBox1.ItemIndex)); str:=sltb.FieldAsString(sltb.FieldIndex['Name']); Item.Caption:=ExtractFileName(str); item.SubItems.add(ExtractFilePath((str))); end; end; |
Re: Mehre Dateien in einer Zeile
Hallo Michael,
wenn du eine Ergebnismenge mit eventuell mehreren Einträgen in sltb anforderst, dann musst du die Ergebnisse auch in einer Schleife Zeile für Zeile abholen. Das Bereitstellen der Eregbnismenge solltest du aber besser an das Ereignis OnClick() der ListBox knüpfen. marabu |
Re: Mehre Dateien in einer Zeile
ich habs jetzt geschaft zwar nicht so wie ich es haben wollte aber es geht.
Ich wollte gerne eine Virtuale ListView haben und habe es deshalb im ereignis onData geschrieben weil ich dachte das würde gehen, geht leider nicht !!! Muss ich jede weitere liste wirklich als extra tabbele machen ??? Ich dachte ich könnte evtl. sowas machen: Eintrag 1 Dateiliste 1 Linkliste 1 RichtEditlist1 Eintrag 2 Dateiliste 2 Linkliste 2 RichtEditlist2 so ungefähr soll das aussehen. wobei jeder liste extra eine tabbele ist die erzeugt wird wenn es notwendig ist.. also wenn der user z.b. eine link liste hinzufügen möchte. Das problem beim ersten ansatzt ist: wenn ich viele dateien hinzufügen köntne das ab eine besteimmten menge zu lange dauern.. nagut das wird in meinem fall wohl nicht zutreffen aber trozdem würde ich gerne eine lösung finden die das berücksichtig und optimieren kann... und daher wollte ich halt jede liste DYNAMISCH zu einem Eintrag zuordnen der eintrag besteht z.b. aus den fehlerd die möglich sind: Eintrag ID, FileListID, LinkListID, RichEditListID wobei die FileListID, LinkListID, RichEditListID wird/soll aus der ersten id zusammen gesetzt werden wie oben im beispiel was haltet ihr davon ??? |
Re: Mehre Dateien in einer Zeile
also ehrlich gesagt versteh ich nicht ganz, wie Du das meinst. Worauf sollen denn FileListID, LinkListID, RichEditListID zeigen?!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz