filemaker id kopieren

H

hgef

Aktives Mitglied
Thread Starter
Dabei seit
22.07.2006
Beiträge
190
Reaktionspunkte
0
ich habe ein problem, das ich selbst irgendwie als anfängerproblem einschätze, aber trotzdem ein brett vorm kopf habe.

folgendes:

ich habe eine tabelle 1 und eine tabelle 2
felder sind

tb1
ID
Name
Text

tb2
ID
Name
TExt

die tabellen sollen über die ID miteinander in beziehung stehen. ID wird in tabelle 1 automatisch lfd Nummer vergeben

nun habe ich in tabelle 2 im namensfeld eine werteliste, die die namen aus tabelle 1 anzeigt.
wenn man hier einen wählt, soll aber auch gleich die ID aus tab 1 in tab 2 übertragen werden, so dass die beziehung zwischen den beiden zustande kommt.

momentan habe ich die beziehung über den namen gemacht, also Name Tb1 = Name Tb2, aber das ist ja viel zu instabil, wgen rechtschreibung etc.

wie kann man das bewerkstelligen, am besten ohne scripttrigger...

für eine antwort bin ich dankbar...

achso, mit ausschnitten wird nicht gearbeitet, da würde die ID ja automatisch kopiert...
 
Du solltest überlegen, ob Du nicht doch die Beziehung über Namen belässt. Allerdings solltest Du dann nur ein Stelle haben, aus der die Namen abgerufen werden. Dann sollte es keine Probleme mit der Rechtschreibung geben.
Ansonsten kannst Du Deine beiden Tabellen auch auf ID umstellen. Dazu füllst Du das neue ID Feld in Tabelle 2 bei noch bestehender Beziehung über Namen mit den richtigen ID. Prüfe anschließend, ob für alle Datensätze die neuen ID vorhanden sind. Dann kannst Du die alte Beziehung entfernen und mit einer neuen ID Beziehung arbeiten.
 
ja, für die schon bestehenden datensätze ist das ok. aber wie bewerkstellige ich neue datensätze in tabelle 2? wie kommt die ID aus tabelle 1 in tabelle 2 bei der erstellung, wenn ich aus der werteliste einen namen wähle?

meine eigentliche datenbank hat an die 20 tabellen, von denen ca. die hälfte über den namen verbunden ist. das hat mich von anfang an gestört, aber es musste schnell gehen.
wenn ich jetzt beispielweise bemerke, dass in der ursprungstabelle der name falsch geschrieben wurde oder sich geändert hat, kann ich die beziehungen zu den anderen 10 tabellen vergessen (außer zu denen, die ich - wie gesagt - über ausschnitte fülle, da funktioniert die ID-übertragung ja problemlos.
 
nun habe ich in tabelle 2 im namensfeld eine werteliste, die die namen aus tabelle 1 anzeigt.
wenn man hier einen wählt, soll aber auch gleich die ID aus tab 1 in tab 2 übertragen werden, so dass die beziehung zwischen den beiden zustande kommt.
Lass Dir eine Werteliste im ID Feld anzeigen, die als ersten Wert die ID und als zweiten Wert den Namen aus der ersten Tabelle anzeigt. Bei Bedarf kann die Werteliste acuh nach dem zweiten Feld (Name) sortiert werden, das erleichtert dann sicher die Auswahl.

Gruß
Thomas
 
Wenn es wirklich eine 1:1-Beziehung der Daten zwischen den Tabellen gibt, dann ist eine der beiden Tabellen überflüssig,
 
Lass Dir eine Werteliste im ID Feld anzeigen, die als ersten Wert die ID und als zweiten Wert den Namen aus der ersten Tabelle anzeigt. Bei Bedarf kann die Werteliste acuh nach dem zweiten Feld (Name) sortiert werden, das erleichtert dann sicher die Auswahl.

das ist eine gute idee. danke.
allerdings hat sich das handling bei denjenigen, die die datenbank benutzen ziemlich eingefahren. so dass ich vielleicht doch nach einer anderen lösung suchen muss.

gibt es denn keine möglichkeit, einen anderen wert (ID) an eine werteliste (namen) dranzuhängen oder ein script (wenn nameX gewählt wird, feldwert ID setzen, oder so)?
 
Es ist in meinen Augen aber ein doofes Beispiel und irgendwie sehe ich persönlich das auch als Pfusch an.

Jede Tabelle hat eine UID (Unique ID), gerne auch als AutoInc-Feld definiert. Das hat den alleinigen Zweck jeden Datensatz einmalig zu gestalten.

Tab1.ID
Tab2.ID


Alles andere macht man - anders. Spätestens beim Export/Import einer solchen Datenbank oder dem Neunumerieren der ID-Fehler wirst Du ansonsten Deine wahre Freude haben.
 
Es ist in meinen Augen aber ein doofes Beispiel und irgendwie sehe ich persönlich das auch als Pfusch an.

Jede Tabelle hat eine UID (Unique ID), gerne auch als AutoInc-Feld definiert. Das hat den alleinigen Zweck jeden Datensatz einmalig zu gestalten.

Tab1.ID
Tab2.ID


Alles andere macht man - anders. Spätestens beim Export/Import einer solchen Datenbank oder dem Neunumerieren der ID-Fehler wirst Du ansonsten Deine wahre Freude haben.

naja. dann gebe ich dir mal ein besseres beispiel:

tab 1 projekte

projektname
projektID
Mitarbeiter
Klienten

tab2 einkauf

projektname
projektID
posten
menge
preis

tab3 garantieleistung
projektname
projektID
schaden
verursacher

tab4 material
projektname
projektID
materialNR
posten
zulieferer

so, alle daten sollen einem projekt (tab1) zugeordnet werde, so dass man weiß, wer in welchem projekt involviert ist, was verbraucht wird, welcher schaden entstanden ist etc.
derjenige, der das material einkauft weiß natürlich nicht die projektID der projekt-tabelle.
deshalb die beziehung über den namen. sollte aber irgendjemand in der kette mal den namen nicht über die werteliste ausfüllen, wenn ein neuer datensatz angelegt wird, kann man aus der projektdatenbank nicht mehr auf die bezugsdatensätze zugreifen.
mit der ID wäre das kein problem. die ändert man nicht.
 
das ist eine gute idee. danke.
allerdings hat sich das handling bei denjenigen, die die datenbank benutzen ziemlich eingefahren. so dass ich vielleicht doch nach einer anderen lösung suchen muss.

gibt es denn keine möglichkeit, einen anderen wert (ID) an eine werteliste (namen) dranzuhängen oder ein script (wenn nameX gewählt wird, feldwert ID setzen, oder so)?

Das ID Feld kann man z.B. auch versteckt hinter dem Namensfeld platzieren und dann dafür sorgen, das ein Mausklick im richtigen Feld landet. Dann müssen sich die Anwender evtl. nicht umgewöhnen.

Ansonsten kann man natürlich auch die Werte eines Formelfeldes (Tabelle1::Name & " #" & Tabelle1::ID) in einer Werteliste übergeben, allerdings muss dann per Script der Wert hinter der Raute ausgelesen und in das ID Feld geschrieben werden. Ob das bequemere Handling ein zusätzliches Formelfeld und ein extra Script Wert sind, musst Du selber entscheiden.

Gruß
Thomas
 
  • Gefällt mir
Reaktionen: hgef
Ansonsten kann man natürlich auch die Werte eines Formelfeldes (Tabelle1::Name & " #" & Tabelle1::ID) in einer Werteliste übergeben, allerdings muss dann per Script der Wert hinter der Raute ausgelesen und in das ID Feld geschrieben werden. Ob das bequemere Handling ein zusätzliches Formelfeld und ein extra Script Wert sind, musst Du selber entscheiden.

sind sie. DANKE!
 
:nono:
Den Namen in alle Tabellen aufnehmen geht ja mal gar nicht... außerdem fehlen da die ganzen anderen ID er Tabellen 2-4
Schau Dir das mal an:
http://de.wikipedia.org/wiki/Relationale_Datenbank

immer wieder toll, einen wikipedia-artikel als antwort zu bekommen.
die drei minuten, dir ein besseres beispiel zu geben, hätte ich mir sparen können.
offensichtlich hast du es nicht bemerkt, dass ich nicht danach gefragt habe, wie man eine datenbank erstellt, sondern mit einem bestimmten problem gekommen bin.
 
Wie bist Du denn drauf?
Ich habe Dein Beispiel gelesen, ich habe erkannt dass es recht deutlich aufzeigt dass Du die Basics der relationalen Datenbanken nicht verstanden hast und habe einen Link gepostet, der Dir helfen kann, das Thema zu verstehen.

Deine Einstellung anders abstrahiert:

"Ich habe das Problem, dass die Weinflasche immer kaputtgeht wenn ich damit Nägel einschlage".
"Du solltest einen Hammer nehmen".
"Ich will nichts von Hämmern hören, ich habe ja nur ein Problem mit kaputtgehenden Weinfalschen".


OK.. ich bin raus. :)
Wenn Du meine abschließende Meinung hören wollen solltest: wenn Du mit der Denkweise anfängst, dann wirst Du rund im die Programmierung / Datenbankdesign niemals einen Fuß auf die Erde bekommen.
 
Das ID Feld kann man z.B. auch versteckt hinter dem Namensfeld platzieren und dann dafür sorgen, das ein Mausklick im richtigen Feld landet. Dann müssen sich die Anwender evtl. nicht umgewöhnen.

Ansonsten kann man natürlich auch die Werte eines Formelfeldes (Tabelle1::Name & " #" & Tabelle1::ID) in einer Werteliste übergeben, allerdings muss dann per Script der Wert hinter der Raute ausgelesen und in das ID Feld geschrieben werden. Ob das bequemere Handling ein zusätzliches Formelfeld und ein extra Script Wert sind, musst Du selber entscheiden.

nachtrag: habs jetzt übrigens wirklich mit dem versteckten ID-feld gelöst. liegt hinterm namensfeld, bei dem ich die bearbeitung im blättermodus aus- und beim ID-feld angeschaltet habe, mit der bearbeitung im suchenmodus genau umgekehrt gehandhabt, also id-feld aus, namensfeld an. so kann man trotzdem nach namen suchen.
dann werteliste aufs ID-feld mit ID und namen, wobei nur der name (feld 2) angezeigt wird und die ID eingetragen. und schließlich das namensfeld als formel umgewandelt, die die werte aus der ursprungstabelle zeigt.
klappt wunderbar. danke nochmal, thomas.
 
nachtrag: habs jetzt übrigens wirklich mit dem versteckten ID-feld gelöst.
Das wäre auch meine bevorzugte Lösung gewesen. Damit spart man sich ein unnötiges Formelfeld...

und schließlich das namensfeld als formel umgewandelt, die die werte aus der ursprungstabelle zeigt.
Auf das Formelfeld könntest Du eigentlich auch noch verzichten, an der Stelle kann ja auch direkt das Namensfeld aus der Bezugstabelle angezeigt werden. Macht inhaltlich und von der Handhabung her keinen Unterschied, spart aber wieder ein Formelfeld ein....

Gruß
Thomas
 
Zurück
Oben Unten