collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 62
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 1
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 13974
  • stats Beiträge insgesamt: 66583
  • stats Themen insgesamt: 8974
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Wie: Endlosormular verifizieren vor dem Speichern?  (Gelesen 6940 mal)

Offline StephanC

  • Newbie
  • Beiträge: 6
Wie: Endlosormular verifizieren vor dem Speichern?
« am: Mai 09, 2010, 14:05:56 »
Hallo Forum,

ich stehe vor folgendem Problem: Ich soll eine Art Fahrtenbuch erstellen.
Hier sollen zunächst die "Hauptdaten" eingegeben werden, also welcher Fahrer, mit welchem Fahrzeug.
Km Stand beim Start und beim Ende, sowie die gesamt eingenommenen Beträge und die Anzahl der Einzelfahrten.
Danach sollen die Einzelfahrten eingegeben werden - folglich müsste ich ja hier "nur" ein Unterformular generieren.
Die Schwierigkeit liegt aber darin, das die Daten vor dem Speichern erst verifiziert werden müssen, also
stimmen die KM der Einzelfahrten mit denen der Gesamtübersicht überein. Ist dies nicht der Fall, so soll
ein entsprechender Hinweis erscheinen und die Daten nicht gespeichert werden (sondern es geht wieder zurück zur EIngabemaske).

Wenn ich nun ein Formular baue mit einem UFO (Endlos) habe ich das Problem, das die Daten sofort in die Tabellen
geschrieben werden - die Verifizierung könnte also erst beim Speichern des Formulares geschehen und ich müsse zur Not die
Einträge wieder aus der Tabelle löschen. Wenn ich ein Formular erstelle, was nicht an eine Tabelle gebunden ist, kann ich es
"komischerweise" nicht im Endlos-Modus betreiben, was für mich am einfachsten wäre, da ich dann per Recordset die Daten
nach erfolgreicher Prüfung schreiben könnte.

Wie würdet Ihr in diesem Falle vorgehen ? Eine temporäre Tabelle nehmen für das Endlosformular ? Oder gibt es hier noch
einfachere Sachen ? Beispieldatenbanken sind herzlich Willkommen - Source Code ist kein Problem!

Ich hoffe, ich habe mich verständlich genug ausgedrückt und

danke Euch schon einmal im Voruas
Stephan
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23349
Re: Wie: Endlosormular verifizieren vor dem Speichern?
« Antwort #1 am: Mai 09, 2010, 16:11:23 »
Hallo,

Dein Konzept stimmt nicht.

"die "Hauptdaten" eingegeben werden"   , d. h. eine Unterscheidung in "Hauptfahrten" und "Einzelfahrten" ,  ist überflüssig/falsch.  (falls es dazu keinen überzeugenden/stichhaltigen Grund gibt)


Gib in eine Tabelle  ("tblFahrten") gleich die Daten (über ein gebundenes normales oder Endlosform) der Einzelfahrten ein.


Die Auswahl vorhandener "Stammdaten" (Fahrer, Fahrzeug, ...) für einen o. g. Eintrag erfolgt über gebundene Kombifelder und damit die Speicherung der entspr. Schlüsselfelder (ID-Felder) in Tabelle "tblFahrten".

Auswertungen passieren dann mit Hilfe geeignet aufgebauter Abfragen, bzw. in Kombination mit Berichten.

Weiterhin verweise ich auf u. st. Links bzgl. "Normalisierung".


Offline StephanC

  • Newbie
  • Beiträge: 6
Re: Wie: Endlosormular verifizieren vor dem Speichern?
« Antwort #2 am: Mai 09, 2010, 18:14:04 »
Hallo Franz,

verstehe ich Dich richtig, das Du alle Daten in ein und die selbe Tabelle packen würdest ?
D.h. in einer Adressverwaltung, in der es eine 1:n Beziehung gibt (Adressen -> Anschpartner) würdest Du die Ansprechpartner auch mit in die tblAdressen rein packen ? D.h. die Tabelle wäre doch unnötig aufgebläht!

Ich würde doch aufgrund der Übersichtlichkeit lieber zwei Tabellen nehmen: tblFahrten und tblFahrtenEinzeln (o.ä.), oder sehe ich da irgend etwas falsch ?

Gruß
Stephan
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23349
Re: Wie: Endlosormular verifizieren vor dem Speichern?
« Antwort #3 am: Mai 09, 2010, 18:28:14 »
Hallo,


nein, Du verstehst mich nicht richtig.    ;)

"in einer Adressverwaltung, in der es eine 1:n Beziehung gibt "   bleibt es diesbezüglich natürlich bei zwei Tabellen. Das soll ja auch gerade so sein.

"Ich würde doch aufgrund der Übersichtlichkeit lieber zwei Tabellen nehmen: tblFahrten und tblFahrtenEinzeln (o.ä.), oder sehe ich da irgend etwas falsch ?"

Nun, das fördert nicht die Übersichtlichkeit, eher führt das zu einem Datenchaos..

Es kommt halt auf die Datensituation an. Ich kann mir nur nicht ohne weitere Kenntnisse dieser Datenverhältnisse zwei Tabellen jetzt vorstellen.  Was soll denn Inhalt dieser zwei Tabellen jeweils sein?
Allein eine "Übersichtlichkeit" ist kein stichhaltiger Grund für zwei Tabellen.

Mit "Die Auswahl vorhandener "Stammdaten" (Fahrer, Fahrzeug, ...) "  hab ich ja Stammdaten-Tabellen für die Fahrerdaten ("tblFahrer", enthält alle DAten, die einen Fahrer beschreiben ) und für die Fahrzeugdaten ("tblFahrzeuge", enthält alle Daten, die ein Fahrzeug beschreiben) gemeint.



Beziehungen:
tblFahrer --1:n--  tblFahrten  --n:1--  tblFahrzeuge

Zitat
Weiterhin verweise ich auf u. st. Links bzgl. "Normalisierung".




Poste mal (nur) Deinen (gesamten) Tabellenaufbau mit Angabe der Felder und Beziehungen.

Offline StephanC

  • Newbie
  • Beiträge: 6
Re: Wie: Endlosormular verifizieren vor dem Speichern?
« Antwort #4 am: Mai 09, 2010, 21:21:49 »
Hallo,

also ich habe mir derzeit folgende Daten- bzw. Tabellenstruktur überlegt:

tblFahrer:
FahrerID
Fahrername

tblFahrzeug:
Fahrzeugname (Taxi1, Taxi2 etc.)
Anschaffungsjahr
Kennzeichen

tblFahrten:
ID (hierrüber möchte ich die 1:n Verbindung zu tblFahrtenEinzelpositionen schaffen)
Fahrername (per Lookup auf tblFahrer)
Fahrzeugname (per Lookup auf tblFahrzeug)
KMStandStart
KMStandEnde
KMBesetztStart
KMBesetztEnde
AnzahlFahrten
EingenommenerBetragGesamt

tblFahrtenEinzelpositionen:
ID
IDFahrten (hierrüber möchte ich die 1:n Verbindung zu tblFahrten schaffen)
AufnahmeOrt
ZielOrt
KM (der Fahrt - die Summe muss später mit der Differenz aus KMBesetztEnde - KMBesetztStart stimmen)
EingenommenerBetragFahrt (die Summe muss hinterher mit dem tblFahrten_EingenommenerBetragGesamt stimmen)

Hm, eigentlich wollte ich doch nur ein Endlosformular haben ;)

Gruß,
Stephan
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23349
Re: Wie: Endlosormular verifizieren vor dem Speichern?
« Antwort #5 am: Mai 09, 2010, 22:35:05 »
Hallo,


Empfehlung  (ohne Vorschlag einer besseren Benennung der Feldnamen):


tblFahrer:
FahrerID  (Autowert, PK)
Fahrername

tblFahrzeug:
FahrzeugID (Autowert, PK)
Fahrzeugname (Taxi1, Taxi2 etc.)
Anschaffungsjahr
Kennzeichen


tblFahrten:
FahrtID (Autowert, PK))
FahrerID (Long, Fremdschlüssel aus tblFahrer  --> Beziehung, im Formular(!)  "frmFahrten" auswählbar per Kombi)
FahrzeugID  (Long, Fremdschlüssel aus tblFahrzeug ---> Beziehung,im Formular(!)  "frmFahrten" auswählbar per Kombi)
AufnahmeOrt  (Text)
ZielOrt (Text)
KM (der Fahrt - die Summe muss später mit der Differenz aus KMBesetztEnde - KMBesetztStart stimmen)
KMFahrtStart (Long)
KMFahrtEnde (Long)
KMBesetztStart (Long)
KMBesetztEnde (Long)
AnzahlFahrten    (sinnlos, wenn gebraucht, dann per Abfrage berechnen)
Betrag (Währung)
EingenommenerBetragGesamt  (Summen/Ergebnisse werden nicht gespeichert. Ermittlung per Abfrage)

tblFahrtenEinzelpositionen:
ID
IDFahrten (hierrüber möchte ich die 1:n Verbindung zu tblFahrten schaffen)
AufnahmeOrt
ZielOrt
KM (der Fahrt - die Summe muss später mit der Differenz aus KMBesetztEnde - KMBesetztStart stimmen)
EingenommenerBetragFahrt (die Summe muss hinterher mit dem tblFahrten_EingenommenerBetragGesamt stimmen)



"Hm, eigentlich wollte ich doch nur ein Endlosformular haben"

ok, aber ZUERST passenden/richtigen Tabellenaufbau.


Offline database

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 4178
Re: Wie: Endlosormular verifizieren vor dem Speichern?
« Antwort #6 am: Mai 09, 2010, 22:35:15 »
Hallo,

tblFahrer:
Fahrer_ID
Fahrername
FVorname
FNachname

tblFahrzeug:
FZ_ID
Fahrzeugname (Taxi1, Taxi2 etc.)
Anschaffungsjahr
Kennzeichen

tblFahrten:
Fahrten_ID (hierrüber möchte ich die 1:n Verbindung zu tblFahrtenEinzelpositionen schaffen)
FK_Fahrer_ID  (1:n zu tblFahrer)
Fahrername (per Lookup auf tblFahrer)
FK_FZ_ID   (1:n zu tblFahrzeug)
Fahrzeugname (per Lookup auf tblFahrzeug)
AufnahmeOrt
ZielOrt
KMStandStart
KMStandEnde
KMBesetztStart
KMBesetztEnde
AnzahlFahrten
EingenommenerBetragFahrt
EingenommenerBetragGesamt

JEDE Fahrt ergibt in der Tabelle 'tblFahrten' eine Zeile also einen Datensatz!
Infomationen über Fahrer und Fahrzeug werden durch speichern der entsprechenden IDs der Herkunftstabellen erreicht. Durch eine Abfrage kannst du ALLE Informationen zu Fahrzeug und Fahrer darstellen!
Das Gewürge über eine Einzelfahrt-Tabelle kannst du dir getrost ersparen, das ist nicht nur kontraproduktiv sondern falsch!
Alle Daten, die das Ergebnis einer Berechnung darstellen, werden in einer entsprechenden Abfrage erzeugt, in Formularen oder Berichten angezeigt und NICHT gespeichert!

Diverse leicht verständliche Infos zum Datenbankentwurf findest du hier:  http://www.dbwiki.de

Grüße

Peter
Viele Grüße
Peter

Tipps und Links:
---------------------------------------------------------
1. http://www.donkarl.com
2. http://www.access-entwicklerbuch.de/2007/index.php?page=buch
3. http://www.xlam.ch/pos/rules.htm
3.a Reservierte Worte
4. http://www.functionx.com/vbaccess/index.htm
5. http://www.dbwiki.net

Nicht vergessen: Jede(r) hat mal klein angefangen!
Bitte keine Fragen per PN senden - Fragen gehören ins Forum!
 

Offline database

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 4178
Re: Wie: Endlosormular verifizieren vor dem Speichern?
« Antwort #7 am: Mai 09, 2010, 22:36:21 »
aha

hallo Franz ... diesmal war der Cowboy um ein paar Sekunden zu lax
:)
Viele Grüße
Peter

Tipps und Links:
---------------------------------------------------------
1. http://www.donkarl.com
2. http://www.access-entwicklerbuch.de/2007/index.php?page=buch
3. http://www.xlam.ch/pos/rules.htm
3.a Reservierte Worte
4. http://www.functionx.com/vbaccess/index.htm
5. http://www.dbwiki.net

Nicht vergessen: Jede(r) hat mal klein angefangen!
Bitte keine Fragen per PN senden - Fragen gehören ins Forum!
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23349
Re: Wie: Endlosormular verifizieren vor dem Speichern?
« Antwort #8 am: Mai 09, 2010, 22:47:40 »
ja, das nennt man ausgleichende Gerechtigkeit..    8)   :D ;D

Offline StephanC

  • Newbie
  • Beiträge: 6
Re: Wie: Endlosormular verifizieren vor dem Speichern?
« Antwort #9 am: Mai 09, 2010, 23:10:41 »
Ähem, wäre vielleicht mal jemand in der Lage meine Frage zu beantworten, die ich im ersten Posting gestellt habe ?

Um es Euch ein wenig zu verdeutlichen: Der Taxifahrer hat eine Uhr, die automatisch mitschreibt (also die Kilometer,  Kilometer, die das Taxi besetzt ist, daraus ermittelter Betrag - ich denke jeder von uns kennt die TaxiUhr). Nun müssen die Fahrer am Ende des Tages den Stand der Uhr eingeben und dann auch die einzelnen Fahrten - und genau dafür bräuchte ich das Endlosformular .... mir wäre ein kleines Manual hilfreich anstelle darüber zu diskutieren, ob die Uhren in den Taxen schwarz sein müssen!

Danke
 

Offline database

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 4178
Re: Wie: Endlosormular verifizieren vor dem Speichern?
« Antwort #10 am: Mai 09, 2010, 23:42:31 »
Naja,

wenn du die Güte hättest unsere Empfehlungen wahr zu nehmen, dann hättest du ja eigentlich schon einen Großteil deiner Aufgabenstellung gelöst.
In diesen Postingst ist klar und deutlich zu lesen, dass dein Datenmodell nicht stimmig ist und so keine effiziente und vor Allem RICHTIGE Datenhaltung möglich ist.

Aber ich werde es - wenn du erlaubst - noch mal versuchen:

Baue ein Formular auf die Tabelle 'tblFahrten',  erzeuge auf die Felder FK_Fahrer_ID und FK_FZ_ID Nachschlagefelder, damit du die Namen bzw Bezeichnungen der Fahrzeuge bei der Dateneingabe sehen kannst.
Wenn du die berechneten Felder zum Zeitpunkt der Dateneingabe benötigst, kannst du diese mit einer entsprechenden Formel versehenen (ungebundenen!) Textfelder ohne Probleme ins Formular einbauen.
Eine Datenspeicherung der Berechnungswerte erfolgt NICHT! Mit den errechneten Werten kann sehr wohl entweder mit 'normalen' Access-Bordmitteln oder VBA ausgewertet oder verifiziert werden.

Tja und dann - darf ich dir eine Kleinigkeit verdeutlichen:
Zitat
mir wäre ein kleines Manual hilfreich anstelle darüber zu diskutieren, ob die Uhren in den Taxen schwarz sein müssen!
Mir scheint es nicht angebracht in dieser Art und Weise zu argumentieren.

Wir sind hier OHNE Bezahlung freiwillig auch am späten Aben tätig um Fragestellern so gut es geht Hilfe zu leisten.
Entsprechende Erklärungen hat dir DF6GL bereits in #2 geliefert, das geänderte Datenmodell und weitere Empfehlungen haben wir dir dann in #5 bzw. #6 geliefert
Eine fertige Lösung - habe ICH zumindest keine, aber ich kann dir NOCHMALS empfehlen dich mit dem Datenbankentwurf näher auseinander zu setzen - auch wenn dein Vorhaben keinen besonderen Umfang aufweist, ist es wichtig die Datenmodellierung RICHTIG zu bewerkstelligen, da sonst GAR NICHTS funktionieren wird, egal welche Farben die Taxameter haben >:(

Greets
Viele Grüße
Peter

Tipps und Links:
---------------------------------------------------------
1. http://www.donkarl.com
2. http://www.access-entwicklerbuch.de/2007/index.php?page=buch
3. http://www.xlam.ch/pos/rules.htm
3.a Reservierte Worte
4. http://www.functionx.com/vbaccess/index.htm
5. http://www.dbwiki.net

Nicht vergessen: Jede(r) hat mal klein angefangen!
Bitte keine Fragen per PN senden - Fragen gehören ins Forum!