AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Mehre Dateien in einer Zeile
Thema durchsuchen
Ansicht
Themen-Optionen

Mehre Dateien in einer Zeile

Ein Thema von mimi · begonnen am 21. Sep 2006 · letzter Beitrag vom 22. Sep 2006
Antwort Antwort
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#1

Mehre Dateien in einer Zeile

  Alt 21. Sep 2006, 22:00
Datenbank: SQL • Version: 3 • Zugriff über: sqlite3.dll
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 !!!
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von Evian
Evian

Registriert seit: 10. Apr 2003
Ort: Berlin
485 Beiträge
 
Delphi 6 Professional
 
#2

Re: Mehre Dateien in einer Zeile

  Alt 21. Sep 2006, 22:34
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
-> www.Phillsoft.de

Ich bin nun Mathematiker, aber meine Freundin bleibt trotzdem unberechenbar!
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Mehre Dateien in einer Zeile

  Alt 22. Sep 2006, 09:20
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 ???
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Mehre Dateien in einer Zeile

  Alt 22. Sep 2006, 09:58
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:
team: daniel, sakura, luckie, sharky, ...
Dann machst du prinzipiell das daraus:

Code:
team: daniel
team: sakura
team: luckie
team: sharky
...
Aus wiederholten Spaltenwerten müssen Zeilen werden.

Grüße vom marabu
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Mehre Dateien in einer Zeile

  Alt 22. Sep 2006, 10:50
Zitat:
Aus wiederholten Spaltenwerten müssen Zeilen werden.
du meinst also tabbelen ???
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)
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von Evian
Evian

Registriert seit: 10. Apr 2003
Ort: Berlin
485 Beiträge
 
Delphi 6 Professional
 
#6

Re: Mehre Dateien in einer Zeile

  Alt 22. Sep 2006, 12:26
Zitat von mimi:
aber was ist wenn ich recht viele dateien habe ???
Das spielt keine (bzw. eine untergeordnette) Rolle. Der SQL-Server ist darauf optimiert, derartige Informations-Verknüpfungen möglichst effizient zu verarbeiten.

Zitat von mimi:
Zitat:
Aus wiederholten Spaltenwerten müssen Zeilen werden.
du meinst also tabbelen ???
öhm nö!

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:

Bei Google suchenRelationale Datenbanken, Bei Google suchenEntity Relation Modelle und Bei Google suchenNormalisierung

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.
-> www.Phillsoft.de

Ich bin nun Mathematiker, aber meine Freundin bleibt trotzdem unberechenbar!
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Mehre Dateien in einer Zeile

  Alt 22. Sep 2006, 13:24
Delphi-Quellcode:
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;
warum bekomme ich so nur den ersten index und nicht alle einträge die mit listbox1.itemindex übereinstimmen ?
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Mehre Dateien in einer Zeile

  Alt 22. Sep 2006, 13:53
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
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Mehre Dateien in einer Zeile

  Alt 22. Sep 2006, 17:17
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 ???
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von Evian
Evian

Registriert seit: 10. Apr 2003
Ort: Berlin
485 Beiträge
 
Delphi 6 Professional
 
#10

Re: Mehre Dateien in einer Zeile

  Alt 22. Sep 2006, 18:49
also ehrlich gesagt versteh ich nicht ganz, wie Du das meinst. Worauf sollen denn FileListID, LinkListID, RichEditListID zeigen?!
-> www.Phillsoft.de

Ich bin nun Mathematiker, aber meine Freundin bleibt trotzdem unberechenbar!
  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 11:54 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