Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: cyberchris am Januar 26, 2021, 14:26:57

Titel: Datensatzänderungen (gebunden) speichern + zusätzlich mit SQL-Update
Beitrag von: cyberchris am Januar 26, 2021, 14:26:57
Hallo,

ich habe eine kleine Herausforderung bzgl. einer Accessanwendung.

Ein Formular enthält gebundene Datenfelder aus einer SQL-Datenbank.
Änderungen werden unmittelbar beim Schließen des Formulars gespeichert.
So weit so gut.

Jetzt habe ich ein zusätzliches Listenfeld mit Mehrfachauswahl eingebaut. Das Listenfeld enthält eine Liste aus einer separaten Tabelle als Auswahlmöglichkeit.

Da ich keine Möglichkeit gefunden habe, das Listenfeld direkt / gebunden einzubauen, habe ich dies als Ungebunden deklariert und lese die selektierten Inhalte aus und möchte diese per Update Anweisung separat speichern - (in Anlehnung: http://docplayer.org/21415990-Listenfeldauswahl-speichern-und-wiederherstellen.html.

Dies funktioniert auch. Jedoch bekomme ich dann zurecht beim Schließen des Formular diese Fehlermeldung:
"Der Datensatz wurde seit Beginn der Bearbeitung von einem anderen Benutzer geändert...Speichern nicht möglich.
Da ich ja einmal per Update Anweisung + die gebundenen Felder speichern möchte.

Gibt es eine einfach Lösung dieses Problem zu lösen?
Ich möchte ungern die Inhalte auf Ungebunden umstellen und alles per VBA-Code zu speichern.

Besten Dank
Christoph
Titel: Re: Datensatzänderungen (gebunden) speichern + zusätzlich mit SQL-Update
Beitrag von: MzKlMu am Januar 26, 2021, 15:02:54
Hallo,
der Sinn des Listenfeldes erschließt sich mir nicht.
Ein Feld speichert einen Wert, wo speicherst du die Mehrfachauswahl?

Zeige mal ein Bild des Beziehungsfensters.
Titel: Re: Datensatzänderungen (gebunden) speichern + zusätzlich mit SQL-Update
Beitrag von: cyberchris am Januar 26, 2021, 20:06:45
Guten Abend,

das Listenfeld erhält die Auswahlmöglichkeiten aus einer Tabelle - hier ein Auszug aus der Tabelle:
Number   Name_DE
10   Funk-Bluetooth
20   Funk-Wi-Fi
30   Funk-USB

Im Listenfeld kann ich dann eine oder mehrere Einträge selektieren (die Zahlen blende ich aus).
Danach lasse ich diesen Code laufen, der mir dann alle selektierten Einträge zurückgibt (Zahlen):

Dim intListCount As Integer, strInterface As String
For intListCount = 0 To txtInterface.ListCount
If txtInterface.Selected(intListCount) Then
strInterface = strInterface & ";" & txtInterface.Column(0, intListCount)
End If

Das Ergebnis möchte ich dann im Datensatz mit einer Update-Anweisung speichern.
Das Anzeigen eines gespeicherten Datensatzes erfolgt dann in umgekehrter Reihenfolge.
Anders habe ich das nicht hinbekommen.

Viele Grüße
Christoph
Titel: Re: Datensatzänderungen (gebunden) speichern + zusätzlich mit SQL-Update
Beitrag von: MzKlMu am Januar 26, 2021, 20:18:35
Hallo,
wie speichern, in einem Feld alle Werte?

Was ist mit dem Beziehungsfenster bzw mit dem Bild davon?
Titel: Re: Datensatzänderungen (gebunden) speichern + zusätzlich mit SQL-Update
Beitrag von: cyberchris am Januar 26, 2021, 20:31:28
Hallo,

ja er schreibt dann zum Beispiel 10;20 in die Datenbank, wenn die ersten beiden Einträge selektiert sind.

Es gibt keine großen Beziehungen. Anbei nur ein Screenshot von der Datensatzherkunft, wenn du das meinst.

Gruß Christoph
Titel: Re: Datensatzänderungen (gebunden) speichern + zusätzlich mit SQL-Update
Beitrag von: MzKlMu am Januar 27, 2021, 00:13:17
Hallo,
ich kann Dir nur dringend raten, es so nicht zu machen.
Mehrere Werte in einem Feld verstößt bereits gegen die 1. Normalform (atomare Inhalte).
Außerdem solltest Du kein Mehrwertfeld verwenden, Du wirst in keinem Forum jemand finden der die verwendet.
Die haben eine ganze Latte von Tücken die nur mit allerhand Umwegen zu lösen sind.
Du hast hier einen klassischen Fall für eine n:m Beziehung zu der 3 Tabellen mit 2 1:n Beziehungen notwendig sind.

Wenn Du das Vorhaben genauer beschreibst, mache ich Dir einen genaueren Vorschlag für Tabellen und Formulare.
Titel: Re: Datensatzänderungen (gebunden) speichern + zusätzlich mit SQL-Update
Beitrag von: cyberchris am Januar 27, 2021, 11:25:02
Hallo,

danke für die bisherige Antworten.
Ich versuche es mal so einfach wie möglich zu beschreiben...

Eine Tabelle enthält ca. 20.000 Datensätze zu Messgeräten mit sehr vielen unterschiedlichen Informationen.
Neuerdings muss ich die Information pflegen, welche dieser Messgeräte Datenschnittstellen haben und vor allem welche das sind. Es kann nur eins davon sein, aber auch eine Kombination von mehreren unterschiedlichen Datenschnittstellen.

Die Auswahl der Datenschnittstellen möchte ich fest vorgeben (als Liste aus einer anderen Tabelle), da ich diese auch auswerten können muss und somit kein Freitext sein darf. Die Anzahl der Liste kann sich im Laufe der Zeit auch verändern. Weiterhin ist eine Mehrsprachigkeit erforderlich. Daher hatte ich hier auch mit eindeutigen IDs gearbeitet und nicht die Textinformationen in die Tabelle gespeichert.

Eine eindeutige Zuordnung zum Datensatz wäre über das Feld "IdentNr" möglich, sofern die Informationen über die Datenschnittstelle in einer separaten Tabelle gespeichert wird.

Ich habe aber kein Problem damit, wenn ich in einem Feld diese Informationen z. B. mit 10;20... speichere und auch wieder auslese. Nur kommt es eben zu einem Speicherkonflikt.

Habe ich noch etwas wichtiges vergessen?

Viele Grüße
Christoph
Titel: Re: Datensatzänderungen (gebunden) speichern + zusätzlich mit SQL-Update
Beitrag von: MzKlMu am Januar 27, 2021, 12:10:31
Hallo,
Du bist auf meine Hinweise nicht eingegangen. Vergiss das Mehrwertfeld, Du wirst auch keine Hilfe dazu bekommen, weil die niemand einsetzt und somit das Wissen dazu sehr gering ist.
Über eine Zuornungstabelle kannst Du über die IDs den Messgeräten die zutreffenden Schnittstellen in jeweils einem Datensatz zuordnen. Das ist letztendlich viel einfacher als die Mehrwertfelder.

Welche Felder/Daten sollen denn mehrsprachig werden/sein ?
Titel: Re: Datensatzänderungen (gebunden) speichern + zusätzlich mit SQL-Update
Beitrag von: cyberchris am Januar 27, 2021, 14:33:37
Hallo,

sorry, verstehe ich nicht ganz was du mit "Hinweise nicht eingegangen" meinst.
Ich sollte doch nur mal beschreiben was ich brauche.

Die Auswahlliste. Hier habe ich eine Spalte mit Name_DE, Name_EN, usw.

Gibt es irgendwo ein ähnliches Beispiel, wie du beschrieben hast?
Das mit einer Zuordnungstabelle...

PS: nochmal auf das Listenfeld zurück...Du hast geschrieben, dass das niemand einsetzt.
Ich habe hierzu aber sogar eine Anleitung gefunden, an die ich mich angelehnt hatte:
 http://docplayer.org/21415990-Listenfeldauswahl-speichern-und-wiederherstellen.html.

Habe ich auch soweit hinbekommen. Eben nur beim Speichern Problem mit dem Konflikt.

Grüße
Christoph

Nachtrag: Ich werde das jetzt über ein gebundenes Feld umsetzen und da die Auswahl des Listenfelds einfügen lassen.
Dann brauche ich auch die Updateanweisung nicht und damit sollte sich der Speicherkonflikt auch erledigt haben.
Titel: Re: Datensatzänderungen (gebunden) speichern + zusätzlich mit SQL-Update
Beitrag von: MzKlMu am Januar 27, 2021, 16:43:49
Hallo,

Zitat von: undefinedGibt es irgendwo ein ähnliches Beispiel, wie du beschrieben hast?
Ja, siehe Deine Anleitung oben. ;D

Dein Link oben ist ein klassisches Eigentor, hier wird kein Mehrwertfeld beschrieben, sondern ein Listenfeld mit Mehrfachauswahl, das ist etwas ganz anderes. Hier wird auch eine ganz normale n:m Beziehung verwendet.
Die Mehrfachauswahl wird nur genutzt, um dies Zuordnungstabelle zu füllen.
Der Artikel ist richtig und beschreibt fast exakt meinen Vorschlag und hat mit einem Mehrwertfeld nichts zu tun. Hier wird auch kein Feld mit mehreren Werten ( 10;20...) gefüllt.

Zur Verdeutlich ein Bild aus obiger Anleitung.
Titel: Re: Datensatzänderungen (gebunden) speichern + zusätzlich mit SQL-Update
Beitrag von: cyberchris am Januar 29, 2021, 13:56:11
Hallo,

verstehe ich leider immer noch nicht.
Ich hatte doch bereits zu Beginn von "Listenfeld mit Mehrfachauswahl" geschrieben und von sonst nichts anderes.

Viele Grüße
Christoph
Titel: Re: Datensatzänderungen (gebunden) speichern + zusätzlich mit SQL-Update
Beitrag von: MzKlMu am Januar 29, 2021, 14:01:42
Hallo,
das war dann ein Missverständnis meinerseits, was aber keine Rolle spielt.
Die von Dir in #8 verlinkte Anleitung entspricht exakt meinem Vorschlag.
In der Anleitung wird auch nicht wie von Dir gewünscht mehrere Werte in ein Feld geschrieben, sondern die angeklickten Zeilen im Listenfeld werden in je ein Datensatz der n:m Tabelle geschrieben.

Was verstehst Du denn jetzt nicht ?