Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Per Makro neue Tabelle Anlegen

Begonnen von dx3, Januar 21, 2015, 12:57:13

⏪ vorheriges - nächstes ⏩

MzKlMu

Hallo,
ich finde, Du solltest erst mal das Datenmodell bereinigen, bevor Du Dich mit weiteren Funktionen beschäftigst. Eine Datenbank erfordert einen normalisierten Aufbau und vernünftig damit arbeiten zu können.
ZitatDie 30 Parameter sind in 30 Feldern, da die Kunden mehr als eine Maschine haben.
das ist der falsche Ansatz. Du benötigst eine Tabelle für die Parameter (30 Datensätze, je Parameter ein DS)  und eine weitere Tabelle um die Parameter der Maschine zuzuordnen. Eventuell auch dem Kunden.

Sind die Parameter in Deiner jetzigen Tabelle Ja/Nein Felder oder werden da Werte eingetragen ?
Sind die Parameter Kunden spezifisch, Maschinen spezifisch oder beides ?
Gruß Klaus

dx3

Hey,

ich bin mir nicht ganz sicher ob ich den Unterschied zwischen Datensatz und Felder richtig verstanden habe.

Mein Verständnis:

                  Feld 1 | Feld 2 | Feld 3 | ....
Datensatz 1
Datensatz 2
Datensatz 3


In den Feldern habe ich die Parameter der jeweiligen Maschine und die Datensätze sind die Maschinen.

Sind die Parameter in Deiner jetzigen Tabelle Ja/Nein Felder oder werden da Werte eingetragen ?

Es sind Ja/nein Felder, numerische Werte und Texteingaben


Sind die Parameter Kunden spezifisch, Maschinen spezifisch oder beides ?

Die Parameter sind Maschinen spezifisch.


Jeder Kunde hat mehrere Maschinen.


Wie gesagt, das Hauptproblem ist einen möglichst einfachen Workaround zu erstellen um die Funktion von Access Daten sammeln via. Email zu nutzen.

Bin für eure Hilfe echt dankbar!

Grüße

MzKlMu

Hallo,
das Datenmodell ist falsch. Bevor Du irgend etwas anderes machst, würde ich das erst mal bereinigen.
Die Parameter gehören in eine extra Tabelle, je Parameter ein Datensatz.
Dann wird eine Tabelle benötigt zur Erfassung der Parameter der Maschine. In dieser Tabelle gibt es ein Feld für den Fremdschlüssel zum Parameter, ein Fremdschlüssel zur Maschine und ein Feld für den Wert.
Dies Tabelle sieht dann so aus:

MaschID  ParamID  Wert
     1             1         20
     1             2         AB
     1             5   


Je Parameter gibt es ein Datensatz, hat die Maschiene 20 Parameter so entsteht in dieser Tabelle 20 Datensätze mit der gleichen MaschinenID. Die Auswahl der Parameter erfolgt mit einem Kombifeld.
Wenn es Ja/Nein ist, wird der Parameter gewählt, aber nichts eingetragen.   
Gruß Klaus

dx3

Hey,

vielen Dank für die Antwort.

Das ist zwar garantiert der bessere Weg aber leider nicht praktikabel für das Tool "Daten sammeln via. Email". Mit deinem Bespiel würde das Tool beim Kunden fragen welche MaschinenID und welche ParameterID dem Wert der eingegeben werden soll zugeordnet werden soll. Wenn ich also 30 Parameter vom Kunden wissen möchte müsste er dann 30 mal die MaschinenID und 30 mal die ParameterID für jeden Wert den er mir mitteilen möchte eingeben, was ein massiver Aufwand für den Kunden bedeuten würde.

Daher der Workaround. Die Daten müssen passend für das Email-Tool angepasst werden, damit das wirklich einen Nutzen für mich darstellt.

Ich probiere mal etwas rum.

Grüße

MzKlMu

Hallo,
Zitatmüsste er dann 30 mal die MaschinenID und 30 mal die ParameterID für jeden Wert den er mir mitteilen möchte eingeben,
nein, eben nicht. Die Maschine stellt man in einem Hauptformular dar und die zugehörenden Parameter in einem über die Schlüsselfelder verknüpften Unterformular. Die MaschinenID wird dann automatisch in einem Parameter Datensatz übergeben. Muss also gar nicht eingegeben werden. Und die Parameter werden per Kombi im Klartext gewählt. Ich bin sehr sicher, dass eine solche Erfassung von dem Kunden sehr gut angenommen wird.

Meiner Meinung nach, wird auch das Datensammeln durch eine normalisierte Struktur vereinfacht.
Gruß Klaus

MaggieMay

Hi,

es wäre hilfreich, wenn du die an dich gestellten Fragen beantworten würdest.

Was genau soll der Kunde in seinen Antwortmails liefern? Wonach wird er gefragt, wenn nicht nach bereits ausgelieferten Maschinen (denn dann hättest du die Verbindung Kunde-Maschine ja bereits)?
Freundliche Grüße
MaggieMay

dx3

Hallo!


Ich beschreibe erstmal was die Datenbank machen soll:
Ein Kunde kauft eine Maschine mit entsprechenden Parametern.
Diese Parameter für die eben verkaufte Maschine trage ich in die Datenbank ein.
Die Parameter der Maschine verändern sich täglich. Daher soll der Kunde eine Email bekommen mit den Parametern in der DB und diese editieren können und anschließend die veränderten Parameter zurück in die DB zu schicken.
Nun gibt es Kunden die nur Wartung etc. bei mir beziehen, daher sollte es die Möglichkeit geben, dass der Kunde neue Maschinen hinzufügt. Daher soll die Datenbank einen leeren Datensatz an den Kunden schicken, dieser wird vom Kunde ausgefüllt und anschließend in die Datenbank eingepflegt.

Nun zu euren Fragen:

Wonach wird er gefragt, wenn nicht nach bereits ausgelieferten Maschinen (denn dann hättest du die Verbindung Kunde-Maschine ja bereits)?

Wie eben beschrieben bekomme ich teilweise Maschinenparameter zugeschickt die vom Kunden ausgefüllt werden. Somit müssen die Maschinenparameter einem Kunden zugeordnet werden. Hier ist das Problem, dass das Email-Tool zwar einen neuen Datensatz anlegt, jedoch die KundenID natürlich leer lässt, da der Kunde diese Information nicht über das Email-Formular angibt.


Und die Parameter werden per Kombi im Klartext gewählt.

Das Problem ist das Kombifelder in dem Email-Tool wie in dem Screenshot dargestellt werden. Wenn der Kunde jetzt den Datensatz sich selbst zu ordnen müsste, würde er alle anderen Kunden sehen, da diese das gleiche Feld ausfüllen müssen. Das darf natürlich nicht sein.

Ich hoffe es ist etwas klarer geworden. Nochmals vielen Dank für eure Geduld!

Grüße



MzKlMu

Hallo,
ZitatWenn der Kunde jetzt den Datensatz sich selbst zu ordnen müsste, würde er alle anderen Kunden sehen, da diese das gleiche Feld ausfüllen müssen. Das darf natürlich nicht sein.
auch das ist ein Irrtum. Du kannst mit meinem Vorschlag auch dafür sorgen, dass der Kunde nur seine Sachen sieht, ich sehe da nicht das geringste Problem.
Gruß Klaus

DF6GL

Hallo,

ich denke, dass erst mal ein durchgängiges Konzept erarbeitet werden sollte...


"Ein Kunde kauft eine Maschine mit entsprechenden Parametern."

Tabellen:
tblKunden  (Kundenstamm)
tblMaschinen  (Maschinenstamm)
tblKundenmaschinen (an einen Kunden verkaufte/zugeordnete Maschinen)

Zwischenfrage: Ist die Parameteranzahl immer gleich oder ändert die sich von Maschine zu Maschine oder auch bei derselben Maschine?

Wenn variabel , dann weitere Tabellen erforderlich:
tblMaschinenBasisParameter (Mindestens erforderliche Parameter als Vorlagetabelle, je Parameter ein Datensatz)
tblKundenMaschinenParameter (aktuelle Parameter an einer  Maschine eines Kunden)

"Diese Parameter für die eben verkaufte Maschine trage ich in die Datenbank ein."

ok, in eine wie eben genannte Tabellenstruktur.


"Die Parameter der Maschine verändern sich täglich. Daher soll der Kunde eine Email bekommen mit den Parametern in der DB und diese editieren können und anschließend die veränderten Parameter zurück in die DB zu schicken."

Der Kunde erhält eine Email mit den Daten aus einer über die nötigen Tabellen verknüpfende  Abfrage, die genau die Parameter dieser Kundenmaschine(n) und die Schlüsselwerte enthält.

Der Kunde schickt die Email nach der Editierung (nur der Parameter) zurück. Sehr vermutlich bleiben die (nicht editierbaren) Schlüsselfelder erhalten und könnten durch das "EMail-Tool"  (Was ist das den überhaupt ?  Die "Datensammelfunktion" von Access?) in eine temporäre Tabelle  übertragen werden.

Nach dieser Zwischenspeicherung können die Daten in die entspr. Tabellen mittels Anfüge und/oder Aktualisierungsabfragen abgespeichert werden.

"Nun gibt es Kunden die nur Wartung etc. bei mir beziehen, daher sollte es die Möglichkeit geben, dass der Kunde neue Maschinen hinzufügt."

Das ist ein anderer Vorgang. Dazu müssen auf geeignetem Weg zunächst die Stammdaten und die Zuordnungen Maschine zu Kunde und Parameter zu Maschine in der Db angelegt werden. Erst dann kann ein leeres Formular zum Kunden für die Erfassung der akt. Parameter versendet werden.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

dx3

Hallo!

Vielen Dank für die ausführliche Antwort.


(Was ist das den überhaupt ?  Die "Datensammelfunktion" von Access?)

Ja ist die Datensammelfunktion von Access.

Ich glaube ich werde das Problem lösen, indem ich die Funktion das Kunden neue Maschinen hinzufügen können streiche bzw. ich einen leeren Datenbankeintrag hinzufüge und den dann verschicke. Das klappt aber alles!

Vielen dank für eure Hilfe!

Grüße

MaggieMay

Hi,
Zitatda der Kunde diese Information nicht über das Email-Formular angibt.
genau das ist aber doch der Fehler, der Datensammel-Datensatz muss natürlich die Kunden-Nr. beinhalten.
Freundliche Grüße
MaggieMay

dx3

Hey,

der Kunde kennt seine Kunden-Nr. nicht. Wenn ich es als Auswahlfeld gestaltet sieht der Kunde wieder alle anderen Kunden so wie im Screenshot.

Die Daten-Sammeln-Tool ist einfach nicht richtig durchdacht. Im Prinzip müsste es die Email-Adresse des Absenders selbstständig in die Tabelle eintragen, dann gäbe es das Problem nicht.

Grüße

DF6GL

Hallo,

Zitatder Kunde kennt seine Kunden-Nr. nicht

dann gib sie ihm doch...

Das Datensammelformular kannst Du doch entspr. gestalten.

Voraussetzung natürlich ist, dass die überhaupt bekannt ist, d. h., der Kunde muss in der DB erfasst worden sein.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

dx3

Hey,


das ist mir zu riskant. Der Kunde vertippt sich einmal und die Maschine "verschwindet für immer".

Ich lege einfach neue Maschinen manuell an, des ist am einfachsten.

Grüße

DF6GL

Hallo,

naja, es muss ja nicht die KundenID sein, die Email-Adresse täte es auch. Aus der kann der Kunde ja bestimmt werden.

Wobei wie gesagt, der vorher erfasste Kunde Voraussetzung ist.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access