Hallo,
ich hätte da mal gerne ein Problem.
Wenn ich in meinen Formular eine neue Beanstandung bzw. Lösung eingebe, dann wird diese nicht in der Tabelle Complaint bzw. Solution übernommen. Ich bekomme dann immer angezeigt, dass der Datensatz nicht gespeichert werden kann, weil dies nicht in Complaint bzw. Solution hinterlegt ist.
Ich habe alle Tabellen mit meiner Haupttabelle (Daten) verbunden.
Auch habe ich eingestellt, dass nicht nur Werte aus den Tabellen (Complaint bzw. Solution) verwendet werden können.
Ich habe mal meine Datenbank angehangen. Vielleicht hat ja jemand eine zündende Idee
Hi,
die Chancen auf Hilfe steigen enorm, wenn Du die Datei nicht als accdb sondern im access2003-Format als mdB zur Verfügung stellst.
Harald
Hallo,
Wenn ich in meinen Formular eine neue Beanstandung bzw. Lösung eingebe, dann wird diese nicht in der Tabelle Complaint bzw. Solution übernommen. Warum sollte das passieren? Das Form ("Connectivity Report") ist an Tabelle "Data" gebunden. Dorthin würde, wenn überhaupt, zunächst die neue Eingabe abgespeichert.
ZitatIch bekomme dann immer angezeigt, dass der Datensatz nicht gespeichert werden kann, weil dies nicht in Complaint bzw. Solution hinterlegt ist.
Access lügt hier nicht, das stimmt. Trotz "Nur Listeneinträge" auf "Nein" sorgt die gesetzte referentielle Integrität der Beziehungen dafür, dass kein "unbekannter" Text in das Feld geschrieben werden kann.
Insofern sollte "Nur Listeneintrage" auf ja gesetzt werden und das Ereignis "Bei nicht in Liste" dazu verwendet werden, um den neuen Text zunächst in die entspr. Nachschlagetabelle abzulegen, um ihn danach in Tabelle Data abspeichern zu können. Damit ist dann die ref. Integrität weiterhin gewahrt.
BTW: Die Beziehungen sollten über die Primärschlüsselfelder (ID) definiert werden und nicht über irgendwelche Attribut-Felder...
Hallo bahasu,
ich hätte gerne die Datenbank als MDB reingestellt. Beim konvertieren bekomme ich eine Fehlermeldung (siehe Anhang)
Ich habe schon alle Makros und Abfragen gelöscht, aber leider immer noch die gleiche Meldung.
Hallo DF6GL,
vielen Dank für Deine Antwort.
Ich werde wohl den Tipp von Don Karl befolgen:
Zitat
Wenn du ohne Nachfrage den eingegebenen Wert in die Datenherkunft des Kombis übernehmen willst, dann
- sortiere das Kombi nach dem Feld, dessen Wert eingegeben wird,
- setze die Eigenschaft Nur Listeneinträge auf Ja und
- verwende im Ereignis Bei nicht in Liste des Kombis Code wie diesen:
'************** CODE START **************
Response = acDataErrAdded
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("Tabellenname", dbOpenDynaset)
rs.AddNew
rs!Feldname = NewData
rs.Update
rs.Close : Set rs = Nothing
Set db = Nothing
'************** CODE ENDE **************
Bei "Tabellenname" muss ich dann entsprechend meiner Tabelle (Complaint bzw. Solution) eingeben. Bei Feldname (rs!Feldname = NewData) muss ich dann auch den Feldnamen Complaint bzw. Solution eingeben.
Ist dies so richtig?
Vielen Dank für die Antwort!
Hallo,
ja, das wäre so richtig....
Mir ist aber noch schleierhaft, warum Du den jeweiligen Text sowohl in "Data" als auch in den "Nachschlagtabellen" abspeichern willst... Das verstößt gegen Normalisierungsregeln, ergibt Redundanzen und ist an sich überflüssig...
Hallo DF6GL,
ich möchte eine Auswahlmöglichkeit haben. So das ich eine wiederkehrende Beanstandung bzw. Lösung einfach anklicken kann und diese dann übernommen wird.
Wie ich das ohne die Tabelle Complaint bzw. Solution bewerkstelligen kann ist mir nicht bekannt.
Evtl. hast Du ja dafür auch einen Lösungsansatz. Dann würde ich mir natürlich die beiden Tabellen sparen.
Mit freundlichen Grüßen aus Hessen
Hallo,
Erstell für die Kombifelder je eine Abfrage , die Werte aus der Tabelle "Data" , also derselben Tabelle, in der die Texte gespeichert werden sollen, ausliest und im Kombilistenfeld anzeigt:
Für Kombifeld "Solution":
Datensatzherkunft: Select Solution from Data order by Solution
Spaltenanzahl: 1
Gebundene Spalte: 1
Spaltenbreiten: 15cm
Nur Listeneinträge: Nein
Hallo DF6GL,
danke für den Lösungsansatz.
Werde mich heute Abend hinsetzen und ein wenig herum experimentieren.
Schönen Abend noch.