Felder aus Formularen übernehmen

Eine knifflige Frage hätte ich noch!

Ich hab also mein Hauptformular mit Unterformular, das mir die jeweiligen Anbote, Rechnungen usw. der einzelnen Kunden anzeigt.
Jetzt würde ich folgendes benötigen:
Ich habe ein Formular, das die Auftragsdetails bearbeiten soll.
Das heißt ich will über eine Schaltfläche ein Formular öffnen, dieses Formular soll mir auf Grund des ausgewählten Anbots das Formular frm Auftragsdaten öffnen. In diesem Formular soll mir dann automatisch in das Feld aufanbIDRef das Feld anbID geladen werden.
Grund dafür ist, das ich sonst immer aus dem KombiFeld das richtige Anbot heraussuchen muss. Was ja am Anfang vielleicht noch nicht schlimm ist, aber bei vielen Anboten sicher nahezu unmöglich ist.

Ich brauche also eine Verknüpfung in der Tabelle frmAuftragsdaten[aufanbIDRef] auf das Unterformular frmAnbote(Unter)[anbID]
Am sinnvollsten wird dieser Code sicher in der Form_Load Prozedur sein nehme ich an, da ich dieses Formular ja nur von dieser Schaltfläche aus öffne.
Das nächste Problem ist, das das Formular einen neuen Datensatz anlegen soll wenn noch keine Auftragsdaten vorhanden sind. Sollten aber schon welche gespeichert sein will ich die Auftragsdaten nur bearbeiten.

Ich hoffe jemand kann helfen.
GLG Andreas

Habs so probiert aber klappt nicht:
DoCmd.OpenForm „frmAuftragsdatenNeu“, acViewNormal, , „aufanbIDRef=“ & Me!anbID

Hallo,

um solche Probleme zu loesen bietet sich zum einen der OpenArgs-Parameter des Formulars an (aufanbIDRef uebergeben). Mittels des Parameter „WhereCondition“ und „Datamode“ laesst der REst einstellen.

Tschau
Peter.

Hallo,

ich vermute mal:
DoCmd.OpenForm „frmAuftragsdatenNeu“, acViewNormal, , „Äpfel=“ & Me!Birnen

Grüße aus Rostock
Wolfgang
(Netwolf)

Hallo Netwolf!

War das ein Witz???
Oder hab ich irgendeine Bezeichnung vergessen?
Vielleicht kann mir jemand einen Befehl schicken den ich probieren kann.
Wäre euch dankbar!

LG Andreas

Hallo,

das war ein ironisch verpackter Hinweis auf die Unzulänglichkeit des DB-Konzeptes…

Ich muß auch sagen, dass hier nur an Symptomen herumgedoktert wird, derweil die Basis der Db (Tabellen- und Datenbeziehungen) und die Bedienungsablauf-Konzeptionierung (sehr vermutlich) nur suboptimal sind…
Aber das ist ja schon öfters angedeutet worden.

(Oder Du widerlegst das und stellst mal den Tabellen-Aufbau im Gesamten hier vor :wink: einschließlich einer Beschriebung über das, was die DB leisten soll und wie.)

Weiterhin gibt es für die Lösung vieler Aufgaben nicht nur „den“ Befehl, sondern erfordert z. T. komplexen VBA-Code, der dann auch nur fragmentarisch, bzw. exemplarisch hier erstellt werden kann…

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Also dann fang ich mal an:

Meine Tabelle soll für ein Busunternehmen sein, welches in der Datenbank seine Kunden, Anbote, Rechnungen und Auftragsdetails speichern kann.

Meine Tabellen:
tblKunden; kndID; kndGruppe:frowning:Hier wird der Verein oder die Gruppe gespeichert welche das Anbot angefordert hat); kndAnrede:frowning:Anrede der Kontaktperson);kndNachname; kndVorname; kndStrasse; kndHausNr; kndPLZ; kndOrt, kndFax; kndFestnetz; kndMobil; kndEmail

tblAnbote: anbID; anbNummer(Fortlaufende Nummer des Anbots); anbDatum(Datum an dem das Anbot verfasst wurde); anbDatumBeginn + anbDatumEnde(Hier wird Beginndatum und Enddatum der Fahrt angegeben); anbProgramm; anbLeistungen; anbKosten; anbBestätigt(Hier kann man mittels einer Checkbox Anbote anhaken die bestätigt wurden)

tblAuftragsdaten: aufID; aufanbIDRef(Fremdschlüssel zur Tabelle tblAnbote); aufBusIDRef(Fremdschlüssel Tabelle tblBusse); auffahIDRef(Fremdschlüssel Tabelle tblFahrer); aufDetails(Hier werden die verschiedenen Details zur Fahrt angegeben. Sie werden dem Fahrer vor der Fahrt übergeben, damit dieser weiß wann er z.B. wo sein muss); aufBusUm(Wann der Bus gestellt sein muss)

tblBusse: busID; busName; busPlätze

tblFahrer: fahID; fahNachname; fahVorname; fahMobil; fahFestnetz

tblRechnungen: reID; reNummer; rekndIDRef(Fremdschlüssel tblKunden); reDatum; reBusIDRef(Fremdschlüssel tblBusse); reDatumFahrtVon + reDatumFahrtBis(Datum der Fahrt Von-Bis); reStrecke; reParkgebühr(Kosten für Parkgebühr); reHotel(Kosten für das Hotel); reZusatzText(Hier kann der Text für zusätzliche Kosten angegeben werden); reZusatzKosten(Kosten der Zusatzleistung); reKmInlandBrutto + reKmAuslandBrutto(Kosten für Inlands- und Auslandskilometer); reUstAusland(Umsatzsteuer des jeweiligen Landes); reBezahlt(Checkbox für bezahlte Rechnungen)

So. Das sind meine Tabellen. Nun zum Ablauf. Ich habe ein Hauptformular(frmHaupt) in diesem Formular habe ich eine Listenbox aus dem ich den Kunden wählen kann. Daneben werden die Kundendetails angezeigt. Darunter habe ich ein Register mit den Unterformularen (frmRechnungen(Unter),frmAnbote(Unter),frmAuftragsdaten(Unter)). Diese Formulare sind alles Endlosformulare im Tabellendesign.
Wenn ich also in der Listenbox den Kunden anklicke werden mir rechts die Kundendetails angezeigt und darunter im Register die jeweiligen Anbote, Rechnungen usw. je nachdem welches Register ich wähle. Das funktioniert alles wunderbar. Außerdem habe ich in jedem Unterformular eine Schaltfläche mit dem ich z.B. das Anbot das ich vorher anklicke ausdrucken kann. Funktioniert auch.
Jetzt zu den anderen Formularen:
Ich hab ein Formular frmKundeNeu(Mit dem man klarerweise neue Kunden anlegt). Dann habe ich ein Formular frmAnbotNeu mit dem ich ein neues Anbot anlegen kann. Das danach dann im Unterformular angezeigt wird. Wenn ich die Checkbox von anbBestätigt anhake, kommt eine Meldung das das Anbot bestätigt wurde und ob man nun die Auftragsbestätigung ausdrucken will. Funktioniert auch.
Aber jetzt!!!
Jetzt hätte ich gern eine Schaltfläche die z.B. das Formular frmRechnungNeu öffnet. Was hier aber wichtig wäre, das automatisch beim öffnen des Formulars frmRechnungNeu das im Unterformular gewählte Anbot direkt in reanbIDRef übernommen wird, da ich sonst immer die ganze Liste mit den Anboten durchsuchen müsste. Wer jetzt aufgepasst hat, sieht das ich noch einen Fehler in der Tabelle tblRechnungen gemacht habe.(Was mir selber jetzt erst aufgefallen ist(UPPS)). Ich brauche ja nur eine einen Fremdschlüssel von anID, weil da die Kunden ja eh gespeichert sind.
Das gleiche gilt für das Formular frmAuftragsdatenNeu. Auch hier soll das Feld aufanbIDRef automatisch übernommen werden.

Mein zweites großes Anliegen wäre ein Code mit dem Ich direkt E-Mails an den Kunden senden kann.
Ich stell mir das so vor: Ich wähle wie gehabt das Anbot aus der Liste. Wenn ich dann auf die Schaltfläche E-Mail senden gehe, soll automatisch der Bericht rptAnbote an den Kunden über kndEmail (von tblKunden) gesendet werden.

Übrigens meine Berichte:
rptAnbot (Für Anbote an den Kunden)
rptRechnung (Für Rechnungen an den Kunden)
rptAuftragsbestätigung (Für Auftragsbestätigung an den Kunden)
rptAuftragsdaten (Eine Info für den Fahrer des Busses)

Mir fällt jetzt nichts mehr ein. Wäre wirklich toll wenn ihr mir helfen könntet. Wenn ihr weitere Fragen habt bitte stellen!!!

Ich dank schon mal allen die mir helfen.

GLG Andreas

Hallo,

Programmierer an Programmiererin:

ich vermute mal:
DoCmd.OpenForm „frmAuftragsdatenNeu“, acViewNormal, , „Äpfel=“
& Me!Birnen

von Mensch zu Mensch: Ich vermute, du vergleichst in deinem Code die falschen Werte.

Vermutung deswegen, weil ich deine Feldbezeichnungen nicht kenne. Referenzfelder sollten immer den gleichen Namen haben wie das Originalfeld.

Grüße aus Rostock
Wolfgang
(Netwolf)

Hallo Andy,

Meine Tabelle soll für ein Busunternehmen sein, welches in der
Datenbank seine Kunden, Anbote, Rechnungen und Auftragsdetails
speichern kann.

also eine „einfache“ Auftragsverwaltung :wink:

Warum speicherst du Angebot, Auftragsdaten, und Rechnung in separaten Tabellen?

Es sind doch eigentlich immer die selben Daten!? Es ändert sich doch nur der „Status“ und das entsprechende Datum.

Jetzt hätte ich gern eine Schaltfläche die z.B. das Formular
frmRechnungNeu öffnet.

keine Ahnung welches Access du hast, aber erstelle einen Button im UFO (Ansicht umstellen auf Endlosformular). Ich nehme mal dein Beispiel:

DoCmd.OpenForm „frmAuftragsdatenNeu“, acViewNormal, , "[aufanbIDRef] = " & Me.anbID , acFormAdd

am Ende das acForm sorgt dafür, dass nur neue Datensätze erzeugt werden.

Was hier aber wichtig wäre, das
automatisch beim öffnen des Formulars frmRechnungNeu das im
Unterformular gewählte Anbot direkt in reanbIDRef übernommen
wird,

im Formular frmRechnungNeu hast du ein Feld reanbIDRef. Das kann auch unsichtbar formatiert werden.

nun fügst du einfach den Code hinzu:
Formulare![frmRechnungNeu].[reanbIDRef] = Formulare![frmHaupt]![frmRechnung].Form![anID]

siehe auch die FAQ:3034 hier im Forum

brauche ja nur eine einen Fremdschlüssel von anID, weil da die
Kunden ja eh gespeichert sind.

nunja, eigentlich brauchst du einige Tabellen gar nicht :smile:

Das gleiche gilt für das Formular frmAuftragsdatenNeu. Auch
hier soll das Feld aufanbIDRef automatisch übernommen werden.

siehe oben

Mein zweites großes Anliegen wäre ein Code mit dem Ich direkt
E-Mails an den Kunden senden kann.

da führen viele Wege nach Rom. Das Thema hatten wir weiter unten ja schon mal. Nun gut:
http://www.google.de/search?hl=de&lr=&safe=off&num=1…
Das dürfte reichlich Stoff für Code sein.

Ich stell mir das so vor: Ich wähle wie gehabt das Anbot aus
der Liste. Wenn ich dann auf die Schaltfläche E-Mail senden
gehe, soll automatisch der Bericht rptAnbote an den Kunden
über kndEmail (von tblKunden) gesendet werden.

mit Access 2007 leichter zu lösen :smile:

Übrigens meine Berichte:
rptAnbot (Für Anbote an den Kunden)
rptRechnung (Für Rechnungen an den Kunden)
rptAuftragsbestätigung (Für Auftragsbestätigung an den Kunden)

wenn du da immer das selbe nehmen würdest, und nur anzeigen würdest: Angebot/Bestätigung/Rechnung …

Mir fällt jetzt nichts mehr ein. Wäre wirklich toll wenn ihr
mir helfen könntet.

schau dir mal die Nordwind - Beispieldatenbank an, die bei Access mitgeliefert wird. Da sind solche Dinge (Auftragsverwaltung) schon fertig drin :smile:

Grüße aus Rostock
Wolfgang
(Netwolf)

Hallo Netwolf,

Meine Tabelle soll für ein Busunternehmen sein.

also eine „einfache“ Auftragsverwaltung :wink:

Warum speicherst du Angebot, Auftragsdaten, und Rechnung in
separaten Tabellen?
Es sind doch eigentlich immer die selben Daten!? Es ändert
sich doch nur der „Status“ und das entsprechende Datum.

Wie genau meinst du das mit allen Daten in einer Tabelle speichern? Wird es dann für mich als Einsteiger nicht erheblich schwerer? Wie komme ich dann z.B. immer an meine fortlaufende Nummer? Vielleicht kannst du mir mal schildern wie du die Tabelle aufbauen würdest!

Jetzt hätte ich gern eine Schaltfläche die z.B. das Formular
frmRechnungNeu öffnet.

keine Ahnung welches Access du hast, aber erstelle einen
Button im UFO (Ansicht umstellen auf Endlosformular). Ich
nehme mal dein Beispiel:

DoCmd.OpenForm „frmAuftragsdatenNeu“, acViewNormal, ,
"[aufanbIDRef] = " & Me.anbID , acFormAdd

am Ende das acForm sorgt dafür, dass nur neue
Datensätze erzeugt werden.

Was hier aber wichtig wäre, das
automatisch beim öffnen des Formulars frmRechnungNeu das im
Unterformular gewählte Anbot direkt in reanbIDRef übernommen
wird,

im Formular frmRechnungNeu hast du ein Feld reanbIDRef. Das
kann auch unsichtbar formatiert werden.

nun fügst du einfach den Code hinzu:
Formulare![frmRechnungNeu].[reanbIDRef] =
Formulare![frmHaupt]![frmRechnung].Form![anID]

Also der Code oben ist für das öffnen des Formulars. Das kann man aber auch in den Eigenschaften einstellen, das nur neue Daten hinzugefügt werden können oder???
Und den Unten-stehenden Code füge ich dann einfach unten dran oder wie?(BISSCHEN VERWIRRT).

brauche ja nur eine einen Fremdschlüssel von anID, weil da die
Kunden ja eh gespeichert sind.

nunja, eigentlich brauchst du einige Tabellen gar nicht :smile:

Bitte schlag mir eine Tabellenaufstellung für meine Auftragsverwaltung vor.

Mein zweites großes Anliegen wäre ein Code mit dem Ich direkt
E-Mails an den Kunden senden kann.

da führen viele Wege nach Rom. Das Thema hatten wir weiter
unten ja schon mal. Nun gut:
http://www.google.de/search?hl=de&lr=&safe=off&num=1…
Das dürfte reichlich Stoff für Code sein.

Werd ich mal schauen. Danke

Ich stell mir das so vor: Ich wähle wie gehabt das Anbot aus
der Liste. Wenn ich dann auf die Schaltfläche E-Mail senden
gehe, soll automatisch der Bericht rptAnbote an den Kunden
über kndEmail (von tblKunden) gesendet werden.

mit Access 2007 leichter zu lösen :smile:

Wie???

Übrigens meine Berichte:
rptAnbot (Für Anbote an den Kunden)
rptRechnung (Für Rechnungen an den Kunden)
rptAuftragsbestätigung (Für Auftragsbestätigung an den Kunden)

wenn du da immer das selbe nehmen würdest, und nur anzeigen
würdest: Angebot/Bestätigung/Rechnung …

Das ist nicht so einfach! Die Berichte haben unterschiedliche Daten und sehen auch nicht gleich aus! Das ist aber nicht das große Problem.

schau dir mal die Nordwind - Beispieldatenbank an, die bei
Access mitgeliefert wird. Da sind solche Dinge
(Auftragsverwaltung) schon fertig drin :smile:

Werd ich auch mal schauen.

Also ich dank dir auf jeden Fall schon mal für deine Hilfe. Vielleicht kannst du mir mal einen Vorschlag schicken, wie du das lösen würdest. Mit einer Tabelle bzw. welche Untertabellen ich brauchen würde. Wie du das mit der laufenden Nummer der einzelnen Anbote, Rechnungen usw. lösen würdest oder wie ich dann z.B. die Möglichkeit habe in den verschiedenen Unterformularen die Rechnungen, Anbote usw. des jeweiligen Kunden anzeigen kann.

Vielen vielen Dank.
GLG Andreas