Autor Beitrag
Mean Ingredient
Hält's aus hier
Beiträge: 7



BeitragVerfasst: So 16.01.05 23:25 
hallo!
ich habe ein großes problem, undzwar haben wir im informatik-unterricht die aufgabe bekommen ein musik-verwaltungsprogramm zu schreiben, mit delphi, paradox 7 und sql. das macht natürlich besonders großen spaß, wenn man lediglich gelernt hat, sich mit SELECT datensätze anzeigen zu lassen. sonst gar nix.
ich hab keine ahnung, wie ich neue datensätze einfügen und löschen kann, das sollte das programm aber können glaube ich. mit den dbedit feldern und dem dbnavigator komm ich irgendwie nich klar, und auch die hilfe datei hilft nich wirklich.

wär echt cool, wenn ihr mir helfen könntet bevor ich wahnsinnig werde.

mfg
Mean Ingredient


Zuletzt bearbeitet von Mean Ingredient am Mo 17.01.05 07:14, insgesamt 1-mal bearbeitet
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: So 16.01.05 23:57 
Bitte ändere deinen Titel in etwas, was aussagekräftiger ist ...

TDataset.Insert;
Werte für die Felder setzen ...
TDataset.Post;

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: So 16.01.05 23:59 
hallo mean ingredient!

zunächst mal willkommen im forum! :)

also, du willst (sollst) ein musikverwaltungsprogramm mit delphi erstellen, als dbEngine soll paradox dienen und der zugriff auf die tabellen soll mittels sql erfolgen. gut, gut...

begeh jetzt bloss nicht den fehler, irgendwelche komponeten auf ein formular zu ziehen, sie irgendwie miteinander zu verbinden und danach irgendwas zu programmieren. so begehst du schiffbruch, bevor du überhaupt noch richtig begonnen hast.

fahr den pc lieber runter, nimm ein blatt papier zur hand und schreib dir auf, welche informationen du verwalten willst und welche ergebnisse dein programm liefern können soll.

danach machst du dich ans designen der datentabelle. ganz wichtig: dein erstes feld heisst immer zb ID, ist vom type integer und wird als primary key definiert.
mit seiner hilfe kannst du jeden datensatz ansprechen, da es eindeutig sein muss.

wenn du währenddessen draufkommst, dass in deiner tabelle doppelte informationen gespeichert sind, zb interpret - dann legst du für die interpreten eine zweite tabelle an und änderst in deiner stammtabelle das stringfeld 'Interpret' in ein feld mit der bezeichnung zb Interpret_ID vor.

die tabelle interpret, welche du tblInterpret taufen könntest, bekommt ebenfalls ein ID-feld und ein stringfeld für den namen des interpreten und ggf zusätzliche informationen.
die verknüpfung von tblStammdaten <-> tblInterpret erfolgt danach über diese beiden felder.
auf einem blatt papier sind solche tabellenänderungen viel einfacher zu durchschauen und durchzuführen, als in der DBO.

wenn du nun alle tabellen angelegt und 'normalisiert' sind, kontrollierst du nochmals, ob jetzt wirklich alle informationen vorhanden sind und die tabellen miteinander verbunden werden können, sodass bei abfragen auch alle gewünschten ergebnisse erzielt werden können.

danach machst du dich ans erstellend der eingabe- & anzeigeformulare und der menüauswahl.
überleg dir, ob die reihenfolge der datenerfassung logisch und ohne viel herumzuspringen auf dem formular möglich ist.

und erst dann, wenn dir dein papierentwurf gefällt und deine anforderungen abdeckt, dann bootest du den pc wieder und überträgst deine skizzen in formulare & tabellen.
bei meinen projekten befinden sich die tabellen in einem eigenen ordner mit dem namen 'daten' im programmverzeichnis. somit ist schon mal sichergestellt, dass die 'richtigen' tabellen bei der programmversion dabei sind

dann wünsch ich dir schon mal frohes schaffen & gutes gelingen ;)

mfg, stefan
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 17.01.05 00:23 
Hallo!

Bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Delphi-Forum.de Richtlinien:

Richtlinien:
1.2 Beiträge
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...]

Einfach oben bei Deinem ersten Beitrag auf "Edit" klicken und den Titel ändern. Dank Dir!

Grüße
Christian :-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Mean Ingredient Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mo 17.01.05 12:37 
hi!
erstmal vielen dank für die schnelle antwort, und sorry, dass ich den betreff falsch gewählt hab. bin wohl gestern abend etwas zu emotional an die sache rangegangen ;)

das mit der ID-Spalte klingt schonmal gut, so wie du das beschreibts scheint es eine art standard bei sql zu sein!? da frag ich mich doch wieso unser lehrer uns sowas nich sagt...

ich werd mich jetzt nochmal an die tabellen machen, wenn ich nich weiterkomme (was ich befürchte :wink: ) werd ich mich wieder melden!

mfg
Mean Ingredient
Mean Ingredient Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mo 17.01.05 14:03 
soooo, ich hab meine tabelle jetzt folgendermaßen bearbeitet:
einträge: Song_id, Interpret_id, Album_id, Interpret_Name, Album_Name, Song_Name, Song_Länge, Song_Genre, Filename, Filesize.

daraus hab ich vier tabellen gemacht:

1) song_id(ps), interpret_id(fs), Album_id(fs)
2) interpret_id(ps), interpret_name
3) album_id(ps), album_name
4) song_id(ps), song_name, song_länge, song_genre, filename, filesize

sieht vernünftig und redundanzfrei aus, wenn ihr mich fragt ;)
bitte sagt mir wenn ich irgendwas falsch gemacht hab!

mfg
Mean Ingredient
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Mo 17.01.05 14:34 
hallo mean ingredient!

Zitat:

das mit der ID-Spalte klingt schonmal gut, so wie du das beschreibts scheint es eine art standard bei sql zu sein


ID's haben nichts mit SQL zu tun, sie dienen rein zum kennzeichnen von datensätzen bzw stellen als fremdschlüssel die beziehung zu anderen tabellen dar.

deine struktur sieht ja schon ganz brauchbar aus, nur würde ich sie so definieren

tblSong
- ID, LongInt, Pk, eindeutig
- Titel, String(40), indiziert (zum schnelleren Suchen)
- Laenge, zb Time
- Genre_ID, LongInt, FK, eindeutig
- Filename, String(40)
- Filesize, LongInt

tblInterpret
- ID, LongInt, Pk, eindeutig
- Name, String(40), indiziert (zum schnelleren Suchen)

der 'Hauptindex' bei meinen tabellen heisst immer 'ID' und fremdindizen vergebe ich den namen der tabelle,
auf welche sie verweisen mit der endung '_ID'. somit erkenne ich bei abfragen sofort, was ich da eigentlich
mit wem verknüpfe ;)

und hüte dich vor umlauten und sonderzeichen in feldnamen (außer dem unterstrich)!
eine dbEngine akzeptiert sie und die nächste verweigert sie hartnäckig - so erspart man sich gleich von anfang an krämpfe...

mfg, stefan
Mean Ingredient Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mo 17.01.05 15:59 
hi grayfox :)
soooo, ich glaub langsam komme ich dem ziel einen schritt näher...

also der weitere plan: auf dem formular sollen 3 tabellen zu sehen sein.
in der ersten werden lediglich die interpreten zur auswahl stehen. wählt man einen interpreten an, so erscheinen in der darunter liegenden tabelle alle alben+infos dieses interpreten. und wenn man dann ein album ausgewählt hat, erscheinen in der dritten und größten tabelle alle songs+infos.

hab meine tabellen mal so eingegeben wie oben beschrieben, miteinander verknüpft und mit ein paar daten gefüllt. das funktioniert auch alles soweit: in den tabellen stehen jetzt die daten in ihren abhängigkeiten.

mein formular besteht also momentan aus je 3 mal tbgrid, datasource und tquery. und jetzt wirds interessant :D

1. wenn ein interpret ausgewählt wurde sollen NUR die jeweils zugehörigen alben in der 2. tabelle zu sehen sein. entsprechend mit alben->songs.
2. dann muss man noch die möglichkeit haben die daten irgendwie zu manipulieren, hinzufügen und löschen würde schon völlig ausreichen.


der sinn der aktion ist es nicht ein raffiniertes programm für den gebrauch zu schreiben, sondern eins, was nächste woche abgegeben werden kann damit es keine 0 Punkte gibt! es muss nur einigermaßen vernünftig laufen. normalerweise hab ich selbst ziemlich viel plan vom programmieren, aber ich hab bisher weder viel in delphi gemacht, noch jemals zuvor sql benutzt, also eine tödliche kombination;) der einzige trost wird sein, dass die anderen auch nix vernünftiges haben werden, weil es uns halt niemand wirklich erklärt hat...

dankö!
Mean ingredient
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Mo 17.01.05 16:17 
du bist schon wieder viel zu schnell unterwegs...

bis hierher kann ich dir folgen, nur würde ich keine DBGrids zum erfassen/editieren verwenden, sondern DBEditfelder

Zitat:

1. wenn ein interpret ausgewählt wurde sollen NUR die jeweils zugehörigen alben in der 2. tabelle zu sehen sein. entsprechend mit alben->songs.


im hauptmenü der IDE findest du [Datenbank] - [Formularexperte].
probier ihn mit deinen tabellen aus und sieh dir an, welche SQL-strings er erstellt

an deiner stelle würde ich eine eigene eingabemaske zum erfassen neuer einträge erstellen,
in welcher du 'normale' TEdit'-felder bzw TComboboxen zum auswählen der vorgegebenen werte verwendest. sichern/verwerfen würde ich mit speed- oder bitbuttons realisieren, welche die SQL-statements starten. in deinem BDE-ordner befindet sich das file 'localsql.hlp' - dort findest du erklärungen zu den benötigten SQL-statements (INSERT, UPDATE, etc...)

zum anzeigen/editieren verwendest du gebundene komponenten, wie TDBEdit, TDBComboBox bzw zum auswählen der suchkriterien DBComboLookupBoxen. beispiele dazu findest du im forum schon jede menge.

mfg, stefan
Mean Ingredient Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mo 17.01.05 16:53 
falls ich dir mit meinem unverständniss auf die nerven gehe möcht ich mich entschuldigen, aber irgendwie komm ich so nich weiter. hast du nicht vielleicht icq, msm oder aim, wo ich mich mal mit dir unterhalten könnte? wenn du demnächst mal zeit hast kannst du mir ja bescheid sagen, per pm oder so. würd mich sehr freuen!

mfg
Mean Ingredient
Mean Ingredient Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mi 19.01.05 16:15 
kann mir denn keiner helfen? :cry:
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Mi 19.01.05 23:59 
Mean Ingredient hat folgendes geschrieben:
falls ich dir mit meinem unverständniss auf die nerven gehe möcht ich mich entschuldigen, aber irgendwie komm ich so nich weiter....


und wobei kommst du nicht weiter?
zeig mal, was du bis jetzt hast, dann können wir weitermachen

nein, ich nutze weder icq, noch aim oder msm...

mfg, stefan
Mean Ingredient Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: So 30.01.05 22:42 
sooooooooo :D

letztendlich is das prog doch fertig geworden, relativ stümperhaft programmiert, aber es kann:

- datensätze in ihren abhängigkeiten anzeigen
- datensätze hinzufügen
- songs abspielen (wenn im .wav format)

vielen dank nochmal an grayfox für zeit und mühe!

mfg
Mean Ingredient