Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DB-User-Verwaltung (https://www.delphipraxis.net/16985-db-user-verwaltung.html)

PhöniX 26. Feb 2004 16:10


DB-User-Verwaltung
 
Hier nochmal zwei Fragen zur DB-User-verwaltung:

ACHTUNG: Thread schließt an folgenden an:klick

Zitat:

Zitat von PhöniX
Hmm... Ich glaub das hat mich überzeugt den Vokabeltrainer nochmal komplett neu zu programmieren..
Aber zwei Fragen von Anfang an:

1. Der User soll Vokabeln SELBST editieren und hinzufügen. Aber wie sollte man das am besten verwalten? Nimmt man da ein DBGrid oder was anderes?

2. Ich hab irgendwo sch0n nenThread zu Select...From...Where gemacht. Ich will das jetzt auch so machen, aber ich bin etwas schwer von "kapisch" und versteh leider garnicht was man mit welcher komponente wo und wie und warum macht. Kann mir das netterweise auch noch jemand erklären?


grayfox 26. Feb 2004 17:08

Re: DB-User-Verwaltung
 
hallo phönix!

startest ein remake? :mrgreen:
'back to the roots' ist oft gar nicht so verkehrt, wenn man sich im dschungel der bites & bytes verfranzt hat ;)

1) vokabelverwaltung

das hauptmenü könnte zb so aussehen:
[Programm] [Vokabel abfragen] [Vokabelverwaltung] [System] [Benutzer] [Hilfe]
- [About ...] - [starten - [erfassen] - [sprachen] - [anlegen] - [info]
- [Beenden] - [auswertungen] - [bearbeiten] - [themen] - [bearbeiten] - [handbuch]
- [suchen]
-[liste]

programmieren beginnt mit zettel und bleistift und nicht komponenten wahllos auf die form klatschen :P
in der planungsphase strukturierst du deine ideen (bzw die vorgaben) und ordnest sie logisch an

2) vokabel erfassen

was braucht man dazu?
- sprache, falls das programm multilinguial fungieren soll
- themenkreis zb, freizeit, schule, wirtschaft, allgemeines, usw... um bei den abfragen gezielt nach ausdrücken suchen zu können, welche zu diesen themen gehören

deshalb gibts im menüpunkt [system] die möglichkeit, diese kriterien erfassen zu können
--> muss vor dem vokabeleingeben ein formular erscheinen, in welchem man diese einträge einstellen kann (zb mittels comboboxen)

und natürlich eine eingabemaske ....
ein DBGrid ist eine gute idee zum anzeigen der bereits erfassten vokabel, aber zum editieren ist sie nicht so praktisch
dafür eignen sich DBEditfelder besser

--> doppelte einträge: wenn sowohl das deutsch- als auch das fremdsprachige wort gleich sind, dann soll der neue datensatz nicht aufgenommen werden.

--> was geschieht mit bereits abgefragten vokabel, die richtig beantwortet wurden? bzw mit nicht richtig beantworteten? sollen diese nochmals gewählt werden, so lange, bis die antwort stimmt?

--> gibts bei der beantwortung ein zeitlimit oder darf man sich unbegrenzt dafür zeit lassen

wie du siehst, kommen die ideen immer erst bei der arbeit :)

-----------------
die obenstehenden ideen & vorschläge solltest dir durch den kopf gehen lassen und überlegen, welche features dein programm noch umbedingt bieten soll
danach machst dich an die erstellung einer eingabemaske, die dem 'normalen' arbeitsablauf beim datenerfassen entspricht
d.h. oben zb das DBGrid und darunter die eingabefelder in der reihenfolge, wie sie zu befüllen sind
ganz unten setzt 3 buttons zb [übernehmen] [verwerfen] [zum menü]
ein suchbutton wär noch ganz praktisch, mit dem man die vokabelsuche aufrufen kann ... den setzt an den rechten rand der form.

wenn dir dein formular gefällt und du dich ohne viel tab-hopserei vom anfang bis zum ende durchhanteln kannst, machst dich an die erstellung der tabelle(n). welche felder wirst denn benötigen?

-------------------------------------------------------------------------------------------------------------------

2) select (feldname1, feldname2) from tabellenname where (feldname3 = 'guck_guck') order by feldname4

.... nennt man SQL (structured query language) und dient dazu, um zb tabelleninhalte abzufragen, berechnungen durchzuführen, usw
mit der BDE kannst du solche kontruktionen mittels einer TQuery abarbeiten lassen. du findest sie auf dem register
'datenzugriff' gleich neben der tabelle.

der obeige SQLString macht nichts anders, als die felder feldname1 und feldname2 aus der tabelle tabellenname auszuwählen und sie anzuzeigen. aber nicht alle, sondern nur jene, bei denen im feld feldname3 'guck_guck' eingetragen ist.
damit die anzeige etwas gleichschaut, wird das ergebnis sortiert nach dem inhalt des feldes feldname4 angezeigt - das könnte zb ein datumsfeld sein

Zitat:

Ich will das jetzt auch so machen
warum auch nicht? für manche dinge sind tables praktischer, für andere wiederum queries.

----------------------------------------------------------------------------------------

fang aber jetzt bitte nicht an eine query aufs formular zu klatschen, das hat noch jede menge zeit

mfg, stefan

PhöniX 27. Feb 2004 13:10

Re: DB-User-Verwaltung
 
Zitat:

Zitat von grayfox
1) vokabelverwaltung

das hauptmenü könnte zb so aussehen:
[Programm] [Vokabel abfragen] [Vokabelverwaltung] [System] [Benutzer] [Hilfe]
- [About ...] - [starten - [erfassen] - [sprachen] - [anlegen] - [info]
- [Beenden] - [auswertungen] - [bearbeiten] - [themen] - [bearbeiten] - [handbuch]
- [suchen]
-[liste]

:wiejetzt: kein plan..........

Zitat:

Zitat von grayfox
...wenn dir dein formular gefällt und du dich ohne viel tab-hopserei vom anfang bis zum ende durchhanteln kannst, machst dich an die erstellung der tabelle(n)...

hmm... Also soll ich nachdem ich alles aufm Papier usw. hab die Forms machen und alle Komponenten drauf machen (aber noch keine proceduren) und dann NUR die proceduren für das öffnen andrer forms und wenn man dann überall gut hinkommt (Navigation erledigt...) dann soll man erst mit den andren proceduren anfangen?? Oder wie soll man das jetzt verstehen :gruebel:

Zitat:

Zitat von grayfox
Delphi-Quellcode:
select (feldname1, feldname2) from tabellenname where (feldname3 = 'guck_guck') order by feldname4

Ja ok..so weit so gut...
Aber WO kommt denn nun der Code hin und WIE und WANN greift amn auf ihn zu??
Soweit ich weiß ist das ja kein Delphi-Code...

grayfox 27. Feb 2004 14:38

Re: DB-User-Verwaltung
 
sorry, mir ist die formatierung abhanden gekommen
das ganze ist nämlich lustig...
beim ersten mal auf vorschau klicken waren die zwischenräume noch da, erst beim zweiten mal wurden sie eleminiert :gruebel:

ich hoffe, jetzt ist es klarer verständlich

Code:
mainmenü:
[Programm]    [Vokabel abfragen]  [Vokabelverwaltung]  [System]     [Benutzer]    [Hilfe]
- [About ...] - [starten]         - [erfassen]         - [Sprachen] - [anlegen]   - [Info]
- [Beenden]   - [auswertungen]    - [bearbeiten]       - [Themen]   - [bearbeiten] - [Handbuch]
               - [suchen]          -[liste]
Zitat:

die Forms machen und alle Komponenten drauf machen (aber noch keine proceduren) und dann NUR die proceduren für das öffnen andrer forms
richtig. zuerst erstellt man das gerüst und danach bewurzelt man die details. wenn du ein haus baust, dann beginnst auch mit dem rohbau und nicht mit dem vorhängeaufhängen ;)
der vorteil dabei ist, dass man gleich alle benötigten komponenten hinstellt und so schon von vornherein ihren platzbedarf erkennt. hinterher noch irgendwo schnell was einfügen artet meist in ein geduldsspiel aus

es hat sich als praktisch erwiesen, alle formulare mit ausnahme des hauptformulars (zb MainDlg) und des datenmoduls (DM) erst zur laufzeit erstellen zu lassen. es werden ohnehin nicht immer alle aufgerufen und daher belegen sie nur unnötig speicherplatz. man sollte auch den forms sprechende namen geben (VokabelAnlegenDlg sagt mehr als als Form97 - stimmts? )

wozu brauchst denn jetzt schon proceduren? willst schon deinen zufallsgenerator irgendwo einbauen? *gg*

jetzt gehts mal ans erstellen der tabellen. am schnellsten & einfachsten mit der DBO. das erste feld jeder tabelle taufst immer 'ID', definierst es, wegen meiner, als autoinc und setzt den primärschlüssel drauf.
beginn einmal mit der zentralen vokabeltabelle. damit man sieht, dass es sich im eine tabelle handelt, stelle ich 'tbl' vor dem namen, als zb 'tblVokabel'
folgende felder wirst umbedingt brauchen:
ID, Deutsch, Fremdsprache, Thema, richtig, beantwortet

so weit alles klar? na dann mal frisch ans werk! :mrgreen:

Zitat:

Aber WO kommt denn nun der Code hin und WIE und WANN greift man auf ihn zu??
wenn du ein TQuery auf die form ziehst, findest du in seinem OI die eigenschaft 'SQL'
ein doppelklick auf (TStrings) öffnet den SQL-Editor und dort schreibst du das SQL-Statement rein.
abgearbeitet wird das SQL-Statement jedesmal, wenn du Query.SQL.Open aufrufst, vorausgesetzt, du willst eine datenmenge zurückgeliefert haben. willst du aber einträge dazufügen, ändern oder löschen, dann rufst du seine methode 'ExecSql' auf.

mfg, stefan

PhöniX 27. Feb 2004 20:33

Re: DB-User-Verwaltung
 
OK...Das ist wirklich nett von dir.. :angle:
Ich fang nun an...
Wenn noch Fragen auftauchen (und das passiert ganz bestimmt :wink: ) poste ich wieder...

THX

PhöniX 27. Feb 2004 20:51

Re: DB-User-Verwaltung
 
hätte da noch ne kleine organisatorische frage.. :?

wie baust du immer so eine "zeichnung" mit bleistift und papier auf??
und was soll das mit den bildschirmmasken sein??

grayfox 27. Feb 2004 21:25

Re: DB-User-Verwaltung
 
Zitat:

Ich fang nun an
:gruebel:
ich dachte, du bist schon am arbeiten? :mrgreen:
dann mach das beste draus. wennst nicht weiter weisst, meld dich ruhig

papier & bleistift:
ich habs mir angewöhnt, die bildschirmmasken zuerst mal zu skizzieren. das ist gar nicht so unpraktisch, vor allem, wenn eine ganze menge dialogkomponenten auf der form platz finden sollen.
auf diese art erstell ich einge entwürfe, bis mir endlich die maske gefällt und die felder, knöpfe, listboxen, datengitter usw in einer für mich logischen anordnung und reihenfolge platziert sind. danach übernehm ich den entwurf auf die form.

bleib bei deiner formgrösse auf max 800 x 600 (770 x 580), damit auch 15"-monitor user die ganze maske in einem stück betrachten können und übertreibs mit den farben, skins, hintergrundbildern nicht. deine augen werden es dir danken *g*

dann wünsch ich dir viel spass & gutes gelingen

mfg, stefan

PhöniX 2. Mär 2004 17:50

Re: DB-User-Verwaltung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich will jetzt die Seite für die Vokabelverwaltung (List,Suchen;Verändern) alles in EINER form haben....
Habt ihr da vorscläge für die platzanordnung?
Ich hab mal ein in POaint skizziert (im anhang)

PhöniX 26. Mär 2004 20:33

Re: DB-User-Verwaltung
 
Zitat:

Zitat von grayfox
der obeige SQLString macht nichts anders, als die felder feldname1 und feldname2 aus der tabelle tabellenname auszuwählen und sie anzuzeigen.

Wo denn anzeigen??

Und wie sortiert? Alphabetisch??

grayfox 26. Mär 2004 22:35

Re: DB-User-Verwaltung
 
hallo julian!

bist schon fest am coden? ;)

@sortieren: ohne zusatz ist die suchrichtung aufsteigend, mit 'DESC' ist es dann umgekehrt.

@anzeigen: eine query stellt dir grundsätzlich eine datenmenge bereit. wenn diese query nun an einer datasource hängt und an dieser wiederum 'gebundene DB-komponenten', dann wird in diesen die datenmenge angezeigt.
du kannst allerdings auch mit
Delphi-Quellcode:
 Query1.FieldByName('feldname').asIrgendwas
auf den dateninhalt zugreifen und ihn in einem 'gewöhnlichen' editfeld anzeigen lassen.

im verzeichnis 'Gemeinsame Dateien\Borland Shared\BDE' findest du das file 'localsql.hlp'. darin gibts jede menge infos zum umgang mit queries

aber für ein vokabelprogramm würde ja auch TTable & Locate ausreichen - denn die antwort wird in den meisten fällen ja nur ein datensatz sein, oder?

mfg, stefan


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:26 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