vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

ADO.NET / Datenbanken
VS 2017 SQL Datenbankabfrage 
Autor: Parallax
Datum: 22.03.19 20:19

Moin,

ich hatte vor ein paar Jahren ein Programm geschrieben, welches Messwerte diverser Sensoren aus einer Feldbuskarte am Bildschirm nummerisch/grafisch darstellt.

Nun soll dieses Programm erweitert werden, um die Messwerte in bestimmten Abständen zu Speichern.

Dafür habe ich mir eine "dienstbasierte Datenbank" mit zwei Tabellen erstellt.

Tabelle 1:

ID (primary key) | Projekt | Datum

Projekt enthält den Projektnamen als nvarchar, Datum das Erstelldatum als datetime.

Bei Tabelle 2 bin ich mir nicht ganz sicher. Dort sollen die einzelnen Messwerte eines Projekts mit Zeitstempel gespeichert werden.

Also ungefähr so:

?Projekt? | Messwert_1 | Messwert_2 | Zeitstempel

Mein Ziel ist es, alle Messwerte mit zugehörigen Zeitstempel anzuzeigen, die zu einem bestimmten Projekt gehören. Gleichzeitig sollen alle Einträge in dieser Tabelle welche zu einem bestimmten Projekt gehören gelöscht werden, wenn das Projekt aus der Tabelle 1 gelöscht wird.

Meine letzt SQL Sache ist schon gefühlt ein paar Jahrhunderte her, deswegen bin ich mir nicht mehr so sicher wie man das macht. Auch waren meine Datenbankerfahrungen immer in PHP, ab und an in Access. In VS 2017 habe ich es schon hinbekommen mittels des Connect Strings eine Verbindung aufzubauen, aber mit dem SQLDataReader komm ich nicht so ganz klar.
Auch bin ich mir nicht ganz sicher wie eine entsprechende Prozedur aufgebaut werden muss um Daten zu schreiben oder zu lesen. Kann mir da jemand ein wenig Nachhilfe geben wir das in VB 2017 so gemanagt wird oder hat jemand ein Tutorial für mich?

Grüße,
Andre

Am morgen nen Joint und der Tag is dein Freund

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VS 2017 SQL Datenbankabfrage 
Autor: Manfred X
Datum: 22.03.19 20:41

Hallo!

Sieht nach einer Master-/Detail-Struktur aus,
wobei in der Spalte der Mastertabelle die Projekte
einen eindeutigen Identifier benötigen.

Beispiel:
https://www.vbarchiv.net/forum/read.php?f=24&t=20248&i=20252

SQL:
https://stackoverflow.com/questions/3418154/sql-select-from-master-detail-tables

Beitrag wurde zuletzt am 22.03.19 um 21:08:05 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VS 2017 SQL Datenbankabfrage 
Autor: Parallax
Datum: 23.03.19 11:10

Danke Manfred,

das hat mir schon mal geholfen.

Ich habe das jetzt mit einem Fremdschlüssel gelöst und bei der Detailtabelle ein ON DELETE CASCADE hinzugefügt.
Klappt im Testbetrieb schon mal ganz gut.

Eine Frage hätte ich noch. Besser gesagt zwei oder drei.

Nach dem Öffnen der Datenbankverbindung führe ich ja das SQL Command aus. Anschließend erhält der SQLDataReader die Daten. Diesen packe ich in eine DO WHILE raeader.Read = TRUE Schleife rein und kann dann die einzelnen Datensätze auslesen. Gibt es auch sowas wie eine AnzahlSpalten Eigenschaft? Nun gut, ich weiß ja wie viele Spalten ich von der Tabelle erwarte, aber das immer im voraus statisch fest zu legen ist irgendwie komisch.
Genau so verhält es sich mit der Anzahl der Datensätze. Diese sind ja immer verschieden, je nachdem wie viele Messwerte aufgenommen wurden. Wenn ich im voraus wüsste wieviele es sind, könnte ich ein passendes Array dimensionieren. Gibt es da elegante Lösungen dafür?
Nach dem Reader schließe ich ja die Verbindung wieder... Ist das notwendig? Was passiert wenn ich eine Verbindung wieder öffne, welche gar nicht geschlossen wurde?

Grüße,
Andre

Am morgen nen Joint und der Tag is dein Freund

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VS 2017 SQL Datenbankabfrage 
Autor: Manfred X
Datum: 23.03.19 11:35

Verwende einen Dataadapter und ein Dataset (Fill) statt dem Datareader.
Dann erledigen sich Deine Fragen zum Teil von selbst.
Der Adapter richtet das Dataset beim Fill ein.

http://openbook.rheinwerk-verlag.de/visualbasic_2008/vb2008_25_ado_dataadapter_003.htm#mj6712b593a067792585ca6b9b63b566f4
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel