PDA

Vollständige Version anzeigen : Standardwert aus gleichen Datensatz übernehmen?


mike020174
25.03.2006, 21:25
Hallo,

ich habe ein Formular dort gibt geht es um Kundenadressen. Oben stehen die KD - Daten und steht im Prinzip noch mal das gleiche nur das diese Felder für die Lieferanschrift gedacht sind.

Damit nicht jedes mal wenn die Allgemeinen Daten und die Lieferanschrift identisch ist, die Daten bei der Lieferanschrift doppelt eigegeben werden müssen, wollte ich das gerne so lösen, das die daten von oben sofort unten bei der Lieferanschrift autom übernommen werden.

Nur das geht nicht. Habe bei Standartwert =[kd_name] eingegeben aber irgendwas geht da nicht. hat jemand einen Tipp?

Mike

hilfsente
25.03.2006, 21:36
Hallo,

ich würde es so lösen, dass ich eine Schaltfläche einrichte, und an diese das Übertragen der Werte hänge:

zB.

sub Befehl1_click()

Me!Liefername = Me!Kundenname
Me!Lieferort = Me!Kundenort
usw...

end sub

Gruss Hilfsente

Nouba
25.03.2006, 21:47
Wenn die richtigen Daten vor dem Anfügen eines Datensatzes greifbar sind, kann man auch Standardwerte vergeben. Ergeben sich die Daten erst beim Eingeben anderer Felder des selben Datensatzes, ist Hilfsentes Prinzip anwendbar.

mike020174
25.03.2006, 21:51
Danke für den Tipp, aber da gibt es ein Problem! Ich muss dann erst immer in die lieferfelder klicken und dann auf meinen cmd. er übernimmt dann immer nur den einen wert es soll aber alles auf einemal gehen!

danke

Leseratte
25.03.2006, 22:16
also wenn ich das richtig interpretiere, kann ein Kunde, gewisse Kundendaten haben, nun soll es ja vorkommen, das ein Kunde, mit seiner Kundenadresse nicht gleich der Lieferadresse ist, soweit richtig?

Wenn Ja, dann empfehle ich dringend, Kundenadresse und Lieferadresse in getrennten Tabellen zu speichern. Weil a.) könnte es sein, mehrere Kunden haben die gleiche Lieferadresse (Messen) und b.) könnte es sein, die Lieferadresse liegt in einem anderen Land, wo noch andere Kunden sind. (Zollpapiere und andere Dinge könnten dort abgelegt werden)

Wenn es getrennte Tabellen sind, dann kann ich einfach im Formular fragen, ist Kundenadresse = Lieferadresse? wenn ja, dann schreibe die Daten in die Lieferanschrift Tabelle, wenn nein, werden Felder eingeblendet, welche die Lieferanschrift abfragen und dann erst speichern.

mike020174
25.03.2006, 22:26
das mit der zweiten tabelle für lieferanschrift ist recht gut! Obwohl 99% immer eine andere andresse habe. das was du da beschreibst ist doch ein trigger oder? ich muss ehrlich zugeben das mich diese lösung überforfert! die lösung mit der CMD gefällt mi besser aber das Prob. ist einfach der fokuserhalt. das muss doch auch anders gehen, es kann ja nicht sein das ich für jeden wert übernahme erst einmal ins feld (liefer) und dann cmd klicken muss damit er den wert übernimmt!

Leseratte
25.03.2006, 22:46
es geht sicher in einem Rutsch, hilfsente hat ja den richtigen Ansatz geliefert, nur macht es keinen Sinn, denk mal an Normalisierung, warum soll ich eine mir bekannte Adresse 2,3,4 oder n mal aufnehmen?
Als Beispiel soll mal die Telekom dienen:
Die hat ca. 70 Mio Kunden, was würde denn passieren, die würden jeden Kunden aufnehnen, mit allen Daten [Name],[Vorname],[Geburtsdatum],[KundenNummer],[Strasse],[Nr],[Ort],[PLZ],[Objekt],[Etage]
damit hätten wir 70 Mio Datensätze, mit fast identischen Informationen, aber wozu?
eine Tabelle KundenDaten, eine Tabelle KundenNummern, eine Tabelle Orte, eine Tabelle Objekte und eine Tabelle Etage, bringen mir mit den richtigen Verknüpfungen ja auch alle Infos, und ich spare mir das speichern von Infos, welche ich ja eh schon habe, ich denke das sollte sogar die 3 NF sein.


ich berichtige und füge hinzu, bevor böse ( :grins: Antworten kommen)
es bleiben immer 70 Mio Datensätze in der KundenTabelle, was sich verringert, sind die Daten der anderen Tabellen, was Abfragen und anderes schneller und somit efektiver macht

mike020174
26.03.2006, 08:39
ja ich weiss was die 3F ist (transitive abhängigikeit) ;-)
Das Prob ist ich weiss halt nicht wie ich, das machen soll, dass die Daten wenn Liefera. = KD. - Adresse sind automatisch in die Tabelle Liefera. geschrieben werden?

(Wenn es getrennte Tabellen sind, dann kann ich einfach im Formular fragen, ist Kundenadresse = Lieferadresse? wenn ja, dann schreibe die Daten in die Lieferanschrift Tabelle, wenn nein, werden Felder eingeblendet, welche die Lieferanschrift abfragen und dann erst speichern.)

Ich dachte halt nun ja bei 500 Kunden kann ich die kleine redundaz ruhig zulassen (kompromiss).


Mike

rapunzel
26.03.2006, 09:43
Hallo Mike,
wahrscheinlich bin ich noch unausgeschlafen, aber so ganz kann ich Deinen Ausführungen nicht folgen.
Gibt es jetzt eine 2.Tabelle Lieferadressen oder nicht?

es kann ja nicht sein das ich für jeden wert übernahme erst einmal ins feld (liefer) und dann cmd klicken muss damit er den wert übernimmt! :confused: ?
Ich habe Dir auf die Schnelle was gebastelt, was die Anregung von Hilfsente aufgreift.

mike020174
26.03.2006, 10:16
hi,

danke für das beispiel. Ja es gibt jetzt eine 2 Tab. die heisst leiferanschrift. in deinem beispiel hast du das die cmd für ein Formular geschrieben. wie geht das den dann das copy von einer tabelle (Kundenadressen) nach tabelle (lieferadresse) und was ich immer schon wissen wollte, was oder wofür steht ME ? Heisst das feld befindet sich im gleichen objekt (Formular) ?

danke Mike

rapunzel
26.03.2006, 10:31
Hallo Mike,
ja, das mit dem Me hast Du richtig erfaßt.

Ich gehe davon aus, daß die Tabelle Lieferadressen 1:n mit der Tabelle Adressen verknüpft ist und als Unterformular eingebunden wurde?

Button liegt im Hauptformular, die Syntax (für zbsp. ein Feld) würde dann so aussehen (Namen anpassen):
Forms!FrmAdressen!ufrmLieferadressen!Lieferadresse = Me!HauptAdresse

mike020174
26.03.2006, 11:12
also jetzt dreh ich hier gleich durch :-( das habe ich geschrieben:

Private Sub cmd_copy_adress_to_liefera_Click()

Forms!Lieferadressen!KDL_Name = Me!KD_Name

End Sub

und als fehlermeldung gibt der mir Formular Lieferanschrift nicht gefunden!!!

Mike

ps: cmd befindet sich im Hauptformular!

rapunzel
26.03.2006, 11:30
Hallo Mike,
beachte bitte die korrekte Syntax! Wenn Du auf ein Unterformular Bezug nimmst, muß Du zuerst das Hauptform anführen, dann auf das Ufrm "zugreifen" (Unterformularsteuerelementname im HF) und dann erst auf das Textfeld im Ufrm.

also:

Forms!Hauptformularname!UFSteuerelementname-im-HF!UF-Textfeld = Me!HF-Textfeld


wenn Dein HF "KD" heißt, das Ufrm "Lieferadressen" und Textfeld im HF KD_Name sowie das im Ufrm KDL_Name heißt, so siehts wie folgt aus:


Forms!KD!Lieferadressen!KDL_Name = Me!KD_Name


versuche, aussagekräftigere Bezeichnungen zu wählen, also für Formulare setze frm davor und für Tabellen tbl - so wie in meinem hochgeladenen Beispiel.

mike020174
26.03.2006, 11:56
ja hatte ich auch gemerkt und hatte das auch schon ausprobiert:

Forms!Kunden!Lieferadressen!KDL_Name = Me!KD_Name

Er gibt mir aber folgende Fehlermeldung: ...kann ihren Ausdruck angesprochene Feld "lieferadressen" nicht finden!

Fazit er erwartet hinter kunden!"einen feldnamen" oder sehe ich das falsch?

mike

rapunzel
26.03.2006, 12:16
Heißt der Unterformularsteuerelementname im Hauptformular tatsächlich Lieferadressen?
Siehe zur Erklärung hier: http://home.arcor.de/ar/arne.d/datenbanken/grundlagen/formulare/index.html#SEC2

Und nein, hinter Kunden! wird der Steuerelementnamedes UF im HF erwartet !

mike020174
26.03.2006, 12:33
ich denke ich habe alles richtig gemacht! Aber es geht trozdem nicht, ich lade die DB mal hoch als Rar sei bitte mal so lieb und schau dir das an!

danke mike

rapunzel
26.03.2006, 12:37
Sorry, ich kann RAR nicht öffnen, und dann lade bitte in Acc97 hoch.

Arne Dieckmann
26.03.2006, 12:40
Das UFo-Steuerelement heisst tatsächlich Lieferandressen. Also versuch's so:
Forms!Kunden!Lieferandressen!KDL_Name = Me!KD_Name

mike020174
26.03.2006, 12:54
Alles klar so geht es danke euch!

mike020174
26.03.2006, 12:59
Aber ich schick noch ne Frage hinterher :-) ich habe in dem Formular Kunden ein Feld email. ich möchte gerne eine cmd haben, wo der wert aus dem feld email übernommen wird und automatisch outlook - express gestartet wird. o-e starten ist ja nicht das prob aber die mail adresse direkt einfügen habe ich probleme!