PDA

Vollständige Version anzeigen : 1:1 verknüpftes feld in form lässt sich nicht neu anlegen ... ?


Andre.Heisig
04.07.2006, 11:09
hallo zusammen,

ich hab in einem formular mit verschiedenen kunden-stammdaten auch ein 1:1 am kundendatzensatz hängendes bemerkungsfeld eingebunden.

in dieses feld kann ich nichts eintragen, solange nicht bereits ein datensatz exisitiert, ändern ist möglich. meine versuche, dem auf die spur zu kommen, haben nix gebracht, vielleicht hat jemand eine idee, bevor ich wirklich anfange, per VBA dummy datensätze anzulegen ... ?

hier gelesen und geprüft:
- das form erlaubt datensatz-änderungen,
- das betroffene feld auch,
- die abfrage hinter dem form

SELECT SO_KundenElektro.contact_id, SO_KundenElektro.name, SO_KundenAdressenElektro.zipcode, SO_KundenAdressenElektro.city, SO_KundenAdressenElektro.address1, SO_KundenElektro.KdProvVermerk, tbl_KUNDEN_KundenZusatzdaten.KK_Bemerkung

FROM (SO_KundenElektro LEFT JOIN SO_KundenAdressenElektro ON SO_KundenElektro.contact_id = SO_KundenAdressenElektro.owner_id)

LEFT JOIN tbl_KUNDEN_KundenZusatzdaten ON SO_KundenElektro.contact_id = tbl_KUNDEN_KundenZusatzdaten.KK_ContactID;


enthält meiner hier gewonnenen info nach nichts, was in richtung "Nicht aktualisierbar" geht ... oder gibt diesbezüglich bei datensatz ANLEGEN andere kriterien als bei datensatz ÄNDERN (was ja geht)?

gruß
andre.

CptChaos
04.07.2006, 12:15
Wenn Du eine 1:1 Beziehung hast, muss es natürlich in der Mastertabelle (linke Seite) einen Datensatz geben um einen zugehörigen Datensatz in der Detailtabelle (rechte Seite) anlegen zu können.

Wo willst Du die Daten erfassen?

Andre.Heisig
04.07.2006, 12:50
hi,

der master-datensatz (in dem fall kunde) ist zwingend da, weil über ein kombifeld ausgewählt. der detail-datensatz (hier bemerkung), der in einem textfeld erfasst werden soll, kann nicht ERFASST, sondern nur GEÄNDERT werden. also anlegen des detail-datensatzes geht nicht ...

CptChaos
04.07.2006, 13:12
Dann ist der Masterdatensatz noch nicht gespeichert.

Andre.Heisig
04.07.2006, 13:58
doch ^^ ganz sicher. der master-datensatz ist per ODBC aus einer SQL datenbank geholt, ich bin mir ganz sicher, dass unsere kundendaten da sind. ;-))

an dem masterdaten-satz wird auch ncihts geändert, der wird nur gelesen, in meinem fall per combibox ausgewählt und ein paar subforms darüber mit daten bestückt.

das problem ist der detail-datensatz, nicht der master. wenn ich per VBA beim auswählen des kunden (master) ein dummy-datenfeld für die bemerkung (detail) anlegen lasse, kann ich diesen dummy-satz im dazugehörigen textfeld im anschluss ganz normal bearbeiten, sprich ändern.

nur das anlegen eines neuen bemerkungs-feldes (detail) zum ausgewählten kunden (master) geht nicht, das formular-TEXTfeld reagiert auf keine eingabe, wenn es das DATENFELD darunter nicht schon gibt ...

Roland04
04.07.2006, 14:21
dann schreib doch den wert einfach mit insert into in die tabelle wenn noch kein record vorhanden ist

CptChaos
04.07.2006, 14:22
Dann muss was mit dem JOIN nicht passen.
Wobei mich sehr wundert, dass dann eine Änderung an den Daten möglich ist.

Du arbeitst mit Haupt- und Unterformularen? Sind hier die "Verknüpfungen" korrekt gesetzt?
Aktualisierungs- und Löschweítergabe an den Detaildatensatz aktiviert?

Andre.Heisig
04.07.2006, 14:30
>> Dann muss was mit dem JOIN nicht passen.
ich bin nicht der SQL spezi; aber da das problem ja nicht beim zuordnen an sich besteht (öffnen des masterdatensatzes öffnet immer den richtigen detailssatz, so es den denn schon gibt), würde das ja bedeuten, "mein" join erlaubt kein daten anfügen, lesen aber schon... gibbet sowas?

>> Wobei mich sehr wundert, dass dann eine Änderung an den Daten möglich >> ist.
eben.

>> Du arbeitst mit Haupt- und Unterformularen?
jein. die combibox, die den mastersatz auswählt und das textfeld mit dem detailsatz sind im hauptformular, es gibt aber ein unterformular in dem form. das zieht aber datensätze an, die mit dem problematischen bemerkungsfeld (und der tabelle dazu) nix zu tun haben.

>> Sind hier die "Verknüpfungen" korrekt gesetzt?
1:1 mit aktualisierungen ...

>> Aktualisierungs- und Löschweítergabe an den Detaildatensatz aktiviert?
jopp. löschen kann ich nicht testen, weil ich keine kundendaten löschen kann (ODBC read only), aktualisieren geht ja aber ...

Andre.Heisig
04.07.2006, 14:32
@roland: der gedanke kam mir auch schon, wenn's gar nciht anders geht, wirds das wohl werden, aber "normalerweise" wird doch das datenfeld per formular einfach angefügt ... ich wollt das ganz schlicht nicht unnötig verkomplizieren, auch im hinblick auf spätere erweiterungen und wartbarkeit ...

Roland04
04.07.2006, 14:53
> ... aber da das problem ja nicht beim zuordnen an sich besteht (öffnen des masterdatensatzes öffnet immer den richtigen detailssatz, so es den denn schon gibt ... <

und was hast du dann geöffnet wenn es noch keinen gibt??? - keinen record ;)
die alternative wird wohl nur darin zu finden sein, dass du beim schreiben des masterrecords auch immer zwangsweise einen slaverecord schreibst - dann hast du auch immer was zum öffnen :)

Andre.Heisig
04.07.2006, 15:08
>> und was hast du dann geöffnet wenn es noch keinen gibt??? - keinen
>> record
korrekt. aber in einem UFO mit ner 1:n zugeordneten tabelle drunter ist genau das ja auch kein ding, dann wird dieser record beim klick in "neue zeile" angelegt, ohne großen programmier-aufwand.

ich bin davon ausgegangen, dass das bei 1:1 analog funktioniert, und ich nur was falsch mache ... wenn das systembedingt tatsächlich nicht geht, muss ich halt etwas weiter ausholen und mir ne lösung stricken ...

mist :grins: :grins: