Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Tabelle / Abfrage suche Lösungsansatz

Begonnen von datekk, März 29, 2016, 09:56:37

⏪ vorheriges - nächstes ⏩

datekk

Hallo Leute,

ich zerbreche mir ein bisschen den Kopf an einer Sache und hoffe auf Eure Hilfe und Vorschläge. Meine Datenbank erstellt aus mehreren Tabellen eine Art Produktkatalog. Eine entsprechende Abfrage fügt alle Informationen zusammen und packt das gesamte Ergebnis in eine leere Tabelle tbl_Produktkatalog. Das mache ich, da unterschiedliche Datenbanknutzer Inhalte des Produktkatalogs anhaken können, um die entsprechenden Inhalte dann in ihre Angebote aufnehmen zu können. Die Tabelle tbl_Produktkatalog besitzt also ein Ja/Nein Feld. Entsprechend angehakte Produkte bzw. deren Spalte werden dann mit Klick auf eine Schaltfläche in die Tabelle für die Angebotsinhalte kopiert und dann alle Haken aus dem Katalog wieder entfernt.

Nun ist die Zahl derer, die die Datenbank nutzen gestiegen und es kommt vor, dass zwei oder mehr Personen gleichzeitig den Produktkatalog aufrufen und nutzen. Damit wird von mehreren das Ja/Nein Feld genutzt und damit funktioniert das nicht mehr so wie gewünscht.  :o

Leider finde ich keinen passenden Ansatz, wie ich das Problem lösen kann, außer ich erstelle für jeden User seinen eigenen Katalog, was die Datenbank aber sehr aufblähen würde. Optimal wäre es, ich könnte auf den Katalog ganz verzichten und die Auswahl über die Abfrage erledigen. Hier würde mir dann aber das Feld zum anhaken fehlen.

Habt Ihr da ne Idee wie man da rangehen könnte?

LG
datekk

Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

Wurliwurm

Spontan fällt mir ein, daß Du ein ungebundenes Recordset erstellen kannst und dieses aus der Abfrage füllen kannst. Auf diese Weise würden die im Formular dargestellten Daten nicht mehr direkt an einer Abfrage/Tabelle hängen. Das ungebundene Recordset hätte alle Felder der Abfrage und zusätzlich ein Boolean-Feld, das an eine Checkbox gebunden werden kann. Damit bräuchte es auch die Zwischentabelle Produktkatalog nicht mehr.

el_gomero

Hallo,

db aufteilen in FE/BE. BE liegt auf dem Server die FE jeweils beim User. Alle Tabellen ausser der tbl_Produktkatalog liegen im BE. Damit hat jeder seine eigene Auswahl lokal.

btw eine Harke ist ein Gartengerät, als harken deine User nichts an, sondern sie haken es an.
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

datekk

@ Wuliwurm... klingt erstmal interessant.. Ungebundenes Recordset sagt mir erstmal nix. Muss ich mich mal einlesen aber vielleicht kannst Du mir mal einen Tipp geben, wie man das erstellt. Wäre es auch hier möglich die Daten wie in einem Endlosformular untereinander auszugeben? Wie wird ein Bolean Feld erstellt und wie binde ich es an eine Checkbox an? Du siehst, mit dem von Dir angesprochenen Thema kenne ich mich noch gar nicht aus und würde mich freuen, wenn Du mir hier ein bisschen hilfst.

@ el_gomero:
Besten Dank auch Dir. Das kommt davon, wenn man nur die Gartenarbeit im Sinn hat  ;D
Meine DB ist in FE und BE aufgeteilt. Der Nachteil Deiner Variante ist, dass ich dann den Produktkatalog nicht zentral bearbeiten/verändern kann. Dies muss aber gewährleistet sein.
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

el_gomero

so wie ich das verstanden hatte, soll der Benutzer eine Auswahl treffen und diese dann für seinen Druck verwenden. Daher müsste die Auswahl lokal abgelegt werden. Es sollte reichen eine lokale Tabelle mit den FK und dem Auswahlfeld vorzuhalten. Dann kann am Server alles weiter gepflegt werden.

hth
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

DF6GL

Hallo,

ZitatDies muss aber gewährleistet sein.

erstelle eine lokale Tabelle mit zwei Feldern für den PK-Wert aus dem Produktkatalog und dem "Harken" ;-)

Übertrage (Insert) den Produktkatalog in die lokale Tabelle.

Mit einer 1:1 verknüpfenden Abfrage über beide Tabellen kann jetzt der individuelle Produktkatalog geharkt ( ;-)  )  und weiter bearbeitet werden.


Lediglich beim Hinzufügen von neuen Produkten muss die Insert-Abfrage erneut ausgeführt 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

Wurliwurm

Zitat von: datekk am März 29, 2016, 11:07:09
Wäre es auch hier möglich die Daten wie in einem Endlosformular untereinander auszugeben? Wie wird ein Bolean Feld erstellt und wie binde ich es an eine Checkbox an?

Gerne füge ich ein Beispiel bis heute nachmittag an. Ist keine Raketenwissenschaft und lohnt sich, sich da einzuarbeiten.

datekk

@ el_gomero: FK? Was meinst Du damit? Die Auswahl müsste in jedem Fall zentral abgelegt werden.

@ DF6GL: Mit PK Wert meinst Du die jeweilige Eintrags ID? Also alle IDs in eine lokale Tabelle kopieren und dahinter die ChkBox? Das könnte klappen. Beim Start der DB könnte ja z.B. die lokale Tabelle automatisch aktualisiert werden, oder ich hinterlege im "zentralen" Katalog ein Aktualisierungsdatum welches sich mit den lokalen Daten abgleicht und bei Abweichung eine Aktualisierung vornimmt. Eine Abfrage fügt dann lokale Auswahl mit dem zentralen Katalog zusammen. Über eine Insert Into Anweisung müsste ich dann die Abfrageergebnisse in die zentrale Angebotsinhalte-Tabelle übertragen können. Oder?

@ wuliwurm: ich freu mich drauf :)



Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

el_gomero

mit FK  meinte ich den Fremdschlüssel (Foreign-Key), wobei das eigentlich der PK (primary-Key) der Grundtabelle ist. Der Vorschlag von Franz und mir ist identisch ;)
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

Wurliwurm

Anbei ein Minimalbeispiel. Es gibt eine Tabelle mit zwei Feldern (ID und Bezeichnung), diese Tabelle entspricht der Originaltabelle. Es wird ein ungebundenes Recordset erzeugt, welches zusätzlich zu den beiden Felder noch ein Boolean-Feld hat. In einer Schleife wird das ungebundene Recordset gefüllt und anschließend die Daten im Formular dargestellt.

Das ungebundene Recordset hat keine Verbindung zur Datenquelle mehr und kann beliebig verändert werden, es kann auch keine Schreib/Lesekonflikte mehr geben. Es existiert nur im Hauptspeicher, um die getroffene Auswahl zu materialisieren in einer Tabelle, braucht es wieder SQL mit "INSERT INTO".

datekk

Danke Wuliwurm.. Jetzt habe ich erstmal was zu tun ;) Ist ein völlig neues Feld für mich.
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

datekk

#11
Hallo Wuliwurm, ich wollte mich mal kurz zurück melden. Ich habe mich in den vergangenen Tagen und am Wochenende mal mit der Thematik beschäftigt und bin nun soweit, Deinen Code zu verstehen. Die Datenübernahme habe ich wie folgt gestaltet:


Public Sub TesteRecordset2(ByRef rsU As ADODB.Recordset)
Dim i As Integer
Dim sql As String
Dim strBez As String
rsU.MoveFirst
Do Until rsU.EOF
   
    If rsU!Auswahl = True Then
        strBez = rsU!Bezeichnung
   
        sql = "INSERT INTO tblAufnahme (Bezeichnung) VALUES ('" & strBez & "')"
        DoCmd.RunSQL sql
   
    End If
   
    rsU.MoveNext

Loop

End Sub


Ist es richtig, dass man den Recordsets immer mit einer Schleife ansprechen muss oder kann man auf dieses direkt in der Insert Into Anweisung wie auf eine Tabelle zugreifen? Wenn ja, wie?
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

Wurliwurm

Zitat von: datekk am April 11, 2016, 10:56:38

Ist es richtig, dass man den Recordsets immer mit einer Schleife ansprechen muss oder kann man auf dieses direkt in der Insert Into Anweisung wie auf eine Tabelle zugreifen? Wenn ja, wie?


Ich gehe immer in einer Schleife durch. Möglich, daß es Alternativen gibt, die habe ich aber nie ausprobiert.

Du könntest noch eine Zwischenstufe einbauen, und die SQL-Befehle in ein String-Array zwischenspeichern, und dieses Array dann als Eingabeparameter an eine extra Prozedur in einem Modul übergeben.

datekk

Ok... also vielen Dank erstmal. Damit kann ich arbeiten :)

.::gelöst::.
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps