Laden...

Informationen über ein Objekt in der Datenbank abfragen und anzeigen

Erstellt von SyntaxTalksToMe vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.253 Views
S
SyntaxTalksToMe Themenstarter:in
17 Beiträge seit 2017
vor 5 Jahren
Informationen über ein Objekt in der Datenbank abfragen und anzeigen

verwendetes Datenbanksystem: <Access>

Guten Tag zusammen,

ich habe ein kleines Problem, da ich noch nicht wirklich so erfahren bin mit Datenbanken.

Ich habe ein kleines Beispielbild gemacht, um mein Anliegen besser zu verdeutlichen.

In der WPF Anwendung, soll ein normales Bild von einem Gebäudegrundriss eingefügt werden.
Die Türen auf dem Plan - die mit irgendeinem Panel oder Button oder ähnliches markiert werden, sollen Informationen enthalten. Diese Informationen, sollen natürlich an genau diese Markierung, wo eine Tür ist, gebunden sein. Die Informationen möchte ich auch abändern können.

Das Problem dabei ist, wie ich die "Tür" Markierung mit den Daten innerhalb einer Datenbank verknüpfe. Bisher habe ich mit Access Datenbanken rumexperimentiert.

Meine Kernfragen wären wie ich:

  1. Was würde sich als Tür Markierung anbieten?
  2. Wie verbinde ich diese Markierung mit den Daten in der Datenbank?

Bis jetzt hatte ich in einer Access Datei eine einfache Datenbankstruktur erstellt. Diese konnte ich auch über das DataGridView in WPF einfügen.

Edit: Ich möchte nochmal unterstreichen, dass es sehr viele Türen geben wird. Und jede Tür, soll natürlich über einen Click auf das Control, zum richtigen Datensatz führen.

Vielen Dank im Voraus

C
2.121 Beiträge seit 2010
vor 5 Jahren

Prinzipiell hast du in deiner GUI ein Element auf das du klicken kannst. Dieses Element kennt eine ID anhand der aus der Datenbank der anzuzeigende Text kommt. Der wird dann dort angezeigt wo du ihn haben willst.
Was genau meinst du mit der Verknüpfung?

S
SyntaxTalksToMe Themenstarter:in
17 Beiträge seit 2017
vor 5 Jahren

Erstmal danke für deine Antwort.

Ich habe aber das Gefühl, dass ich ein paar Schritte überschritten habe.

ICh hätte gerne eine embedded Datenbank. Damit meine ich, eine die nicht auf irgendeinen Server liegt, sondern in die Application mit integriert ist. Also quasi eine offline Datenbank. Das Thema Connections spielt dabei keine Rolle, da es dann meist nur von einer Person maximal genutzt wird.

Daher wüsste ich zuerst gerne, was sich da anbietet. Access oder SqlLIte oder Maria DB. Es ist ein non commercial Projekt.

Zu deiner Frage, wie ich das mit der Verknüpfung meine:

Es gibt ja mehrere Türen auf dem Bauplan.

Nehmen wir mal an, ich nehme als Tür Markierungen mehrere Buttons. Wenn der Button markiert ist, soll in Textboxen die Informationen über diese Tür angezeigt werden. Die Infos stehen aber ja in der Datenbank.

Die Frage ist, was die eleganteste Möglichkeit wäre, den richtigen Eintrag in der Datenbank abzurufen. Er muss halt erkennen, welcher Button gedrückt wird, damit die richtigen Infos angezeigt werden.

4.939 Beiträge seit 2008
vor 5 Jahren

Da du mit WPF am besten mittels MVVM arbeitest ([Artikel] MVVM und DataBinding), übergibst du dem Button ein ICommand-Objekt (z.B . RelayCommand), und diesem kannst du dann individuell einen Parameter (Id) mitgeben: Relay Command - How to Pass a Parameter?

Alternativ, aber nicht empfohlen(!), könntest du einfach jedem Button die Id als Tag übergeben.

PS: Und welche DB du benutzt, spielt eigentlich keine Rolle, solange du dich an die [Artikel] Drei-Schichten-Architektur hältst (d.h. eine separate Datenzugriffsschicht [DAL]).

S
SyntaxTalksToMe Themenstarter:in
17 Beiträge seit 2017
vor 5 Jahren

Danke.

Könnte ich in WPF auf SChwierigkeiten stoßen, was die Umsetzung anbelangt? Ich habe nämlich die Befürchtung, dass ich mich fürs erste etwas übernommen habe.

C# habe ich, wenn ich dass mal so sagen kann, in Windows Forms gelernt. Das wäre jetzt das erste mal, dass ich etwas in WPF mache.

Machbar, oder sollte ich da eher auf WIndows Forms zurückgreifen? Bei WPF reizen mich halt die Design Möglichkeiten

16.833 Beiträge seit 2008
vor 5 Jahren

Was soll man Dir denn auf so eine Frage antworten..? Das kann Dir hier niemand außer Du Dir selbst beantworten.
Keiner hier kennt Dein Wissensstand oder Deine Bereitschaft eine neue Technologie zu erlernen.

Machbar ist wie immer alles.

2.079 Beiträge seit 2012
vor 5 Jahren

Also ich persönlich kenne beide Technologien und würde lieber WPF nutzen, schon allein wegen dem hervorragenden DataBinding.

Das wäre auch das erste, was Du dir anschauen und verstehen musst, fang da lieber mit was einfachen/kleinen an, wie z.B. ein Mini-Taschenrechner, bei dem die Ziffern-Buttons dynamisch generiert werden.

Du wirst die verschiedenen Dinge mit Koordinaten und weiteren Infos versehen und in der Datenbank (ich würde SQLite nehmen) ablegen.
Das ViewModel lädt dann diese Daten und pflegt eine Liste von einzelnen kleineren ViewModels, die die Daten aus der Datenbank aufbereiten und auch die ID bereit halten.

In der View wirst Du ein ItemsControl und ein Canvas brauchen. Ersteres managed die Liste aus dem ViewModel, Letzteres die Positionierung der Items anhand der Koordinaten.
Da sieht man das ganz schön: https://stackoverflow.com/questions/7177432/how-to-display-items-in-canvas-through-binding

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.