INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

INDEX und ZEITSTEMPEL in Datenbank einfügen



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

23.06.2010, 10:35 (Dieser Beitrag wurde zuletzt bearbeitet: 23.06.2010 10:41 von Tobiw.)
Beitrag #1

Tobiw Offline
LVF-Neueinsteiger


Beiträge: 6
Registriert seit: Jun 2010

2009 SP1
2010
de


Deutschland
INDEX und ZEITSTEMPEL in Datenbank einfügen
Hallo,

Kurzerklärung des Programms (nur untere while-schleife interessant):
Der untere Programmteil ist nur dafür da die Datenbank zu öffnen (DB Tools Open Connection.vi), dort Daten abzulegen (DB Tools Insert Data.vi) und die Datenbank wieder zu schließen (DB Tools Close Connection).

Der obere Programmteil soll folgendes machen:
Ich lege meine 3 Messwerte (von lokalen Variable "Spannung") über das "Bündeln.vi" in die Datenbank (DB Tools Insert Data.vi). In meinem VI werden die drei Spannungen in die Spalte 3, 4 und 5 abgelegt.

Ich habe zwei Probleme:
1) Ich möchte einen INDEX (in die erste Spalte) der Datenbank schreiben, damit man die Datenbank besser verwalten kann und man schneller die gewünschten Werte auslesen kann. Mir wurde auch noch gesagt, dass ein sog. PRIMÄRSCHLÜSSEL von Vorteil wäre, um die Eindeutigkeit der einzelnen Messwerte zu gewährleisten. Für beides bräuchte ich eure Hilfe.

Mein Ansatz das „blaue i“ der while-Schleife pro Durchgang um 1 zu inkrementieren stellt leider keine Lösung für den Index dar, weil das Programm nach einer Unterbrechung wieder von 0 anfängt Hochzuzählen.

2) Ich möchte jedem Messwert einen Zeitstempel geben. Hierfür stand im „LV Database Connectivity Toolkit User Manual“ (“Formatting Date and Time”) ich sollte das DB Tools Format Datetime Str VI benutzen.
Damit wollte ich den Zeitstempel in die 2.Spalte meiner Datenbank schreiben. Leider wird aber nur das Datum angezeigt. Möglicher Fehler ist, dass ich beim Datenbank erstellen nur den Datentyp „DATE“ für die Spalte definiert habe. Ich habe versucht einen neuen Datentyp für StandardZEIT und –datum (%c) einzufügen, aber dann funktioniert das DB Tools Insert Data.vi nicht mehr.

Ich habe euch folgendes angehängt:
a) Screenshot meiner Datenbank-Anzeige
b) Mein Hauptprogramm, um den Index, Zeitstempel und die Messwerte in die Datenbank zu schreiben (obere while-schleife für Messwerterfassung (für meine Fragen uninteressant). Untere while-schleife für Datenbankspeicherung)
c) Mein Programm um eine Tabelle in der Datenbank zu erstellen.
d) Das Unter-VI "Mittelwert.vi", um mein Hauptprogramm öffnen zu können (eigentl. egal, da ihr die Messwerte der Photovoltaik-Anlage nicht habt)

Also ich brauche wirklich eure Hilfe.
Gruß Tobi

PS: ich benutze LV 2009_Service Pack 1 und das Connectivity Toolkit


Angehängte Datei(en) Thumbnail(s)
   

Sonstige .vi  Datenbankspeicherung_LV2009.vi (Größe: 190,32 KB / Downloads: 308)

Sonstige .vi  Create_DB_Table_and_Columns_LV2009.vi (Größe: 15,58 KB / Downloads: 241)

Sonstige .vi  Mittelwert.vi (Größe: 9,01 KB / Downloads: 256)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.06.2010, 11:06
Beitrag #2

SeBa Offline
LVF-Guru
*****


Beiträge: 2.025
Registriert seit: Oct 2008

09SP1 & 10 FDS
2008
DE

65xxx
Deutschland
INDEX und ZEITSTEMPEL in Datenbank einfügen
Du hast jetzt nicht gesagt, was für eine Datenbank du da erzeugst/benutzt... aber bei SQL beispielsweise gibt es das Autoinkrement für den Index. Da brauchst du dich nicht selbst drum kümmern.

Gruß SeBa

Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.

Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.

Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.06.2010, 11:13
Beitrag #3

Tobiw Offline
LVF-Neueinsteiger


Beiträge: 6
Registriert seit: Jun 2010

2009 SP1
2010
de


Deutschland
INDEX und ZEITSTEMPEL in Datenbank einfügen
' schrieb:Du hast jetzt nicht gesagt, was für eine Datenbank du da erzeugst/benutzt... aber bei SQL beispielsweise gibt es das Autoinkrement für den Index. Da brauchst du dich nicht selbst drum kümmern.

Gruß SeBa


Ich benutze den MySQL ODBC (OpenDataBaseConnectivity) um eine Datenbank auf dem Haus-Server meiner Uni zu erstellen. (Beantwortet das deine Frage?)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.06.2010, 12:07
Beitrag #4

SeBa Offline
LVF-Guru
*****


Beiträge: 2.025
Registriert seit: Oct 2008

09SP1 & 10 FDS
2008
DE

65xxx
Deutschland
INDEX und ZEITSTEMPEL in Datenbank einfügen
' schrieb:Du hast jetzt nicht gesagt, was für eine Datenbank du da erzeugst/benutzt... aber bei SQL beispielsweise gibt es das Autoinkrement für den Index. Da brauchst du dich nicht selbst drum kümmern.
' schrieb:Ich benutze den MySQL ODBC (OpenDataBaseConnectivity) um eine Datenbank auf dem Haus-Server meiner Uni zu erstellen. (Beantwortet das deine Frage?)


Das war keine Frage.


Gruß SeBa

Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.

Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.

Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.06.2010, 14:42
Beitrag #5

Tobiw Offline
LVF-Neueinsteiger


Beiträge: 6
Registriert seit: Jun 2010

2009 SP1
2010
de


Deutschland
INDEX und ZEITSTEMPEL in Datenbank einfügen
' schrieb:Du hast jetzt nicht gesagt, was für eine Datenbank du da erzeugst/benutzt... aber bei SQL beispielsweise gibt es das Autoinkrement für den Index. Da brauchst du dich nicht selbst drum kümmern.

Ich benutze eine ganz normale MySQL Datenbank.
Muss ich mit LabVIEW der MySQL Datenbank am Anfang einmal sagen, dass es das Autoinkrement anwenden soll? Wenn ja, wie mache ich das? Wenn nein, erstellt die Datenbank den Index ja von allein. => Wie/Wo kann ich den Index nachschauen?
(Mit phpMyAdmin findet man für meine Datenbank kein Index)


P.S. gibt es Vorschläge für den Zeitstempel?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.06.2010, 14:49
Beitrag #6

SeBa Offline
LVF-Guru
*****


Beiträge: 2.025
Registriert seit: Oct 2008

09SP1 & 10 FDS
2008
DE

65xxx
Deutschland
INDEX und ZEITSTEMPEL in Datenbank einfügen
Google

z.B. Link


Gruß SeBa

Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.

Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.

Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.06.2010, 07:48 (Dieser Beitrag wurde zuletzt bearbeitet: 24.06.2010 07:49 von rolfk.)
Beitrag #7

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
INDEX und ZEITSTEMPEL in Datenbank einfügen
Also bei dem SQL Datenbanken die ich kenne (sorry keine wirklichen Erfahrungen mit MySQL) sind sogenannte Primärschlüssel automatisch autoinkrementing und unique, by default.

Das heisst Du schreibst diese Kolonne von Deiner Applikation aus gar nicht, sondern die Datenbank macht das automatisch wenn Du einen neuen Datensatz einfügst (INSERT). Damit müsstest Du nur noch den Zeitstempel und die Messwerte hineinschreiben.

Die Einstellung ob eine Kolonne ein Primärschlüssel ist, unique sein muss, und autoinkrementing ist (wobei ein Primärschlüssel diese zwei letzteren meines Wissens immer bedingt) legt man beim Anlegen der Tabelle fest. Das kann man auch von LabVIEW mit SQL Kommandos tun (CREATE) aber ist nicht üblich, da dieser Teil der SQL Syntax alles ausser einheitlich ist zwischen verschiedenen SQL Databankanbietern.

Wie man den automatisch erstellten Index nach dem Einfügen zurückbekommt ist auch wieder eine kleine Kunst. Die direkte Art ist bei jeder mir bekannten Datenbank wiederum ganz anders, SeBA hat Dir dazu einen Link für MySQL gegeben. Selber benütze ich normalerweise einen nicht sehr schnellen Kniff, indem ich nach dem Einfügen des Datensatzes eine Query starte die mir alle Records zurückgibt die ein bestimmtes Merkmal des gerade eingefügten Datensatzes besitzen und diese Query auch noch nach dem (Primär)Schlüssel sortieren lasse. Der letzte (oder erste bei inverser Sortierreihenfolge) Datensatz in der Query enthält dann den neu eingefügten Index. Das funktoiniert natürlich nur wenn man sicher ist dass nicht gleichzeitig mehrere Arbeitsplätze gleichzeitig kollidiernde Datensätze in die Datanbank schreiben. In diesem Fall muss man auf die Datenbankspezifischen Mechanismen zurückgreifen um den autoinkrementing Index eines neu eingefügten Datensatzes zu erhalten.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Zeitstempel in MS SQL Datenbank kwakz 3 5.922 31.03.2015 06:35
Letzter Beitrag: kwakz
  TDMS write on index Sam789 6 7.004 11.03.2013 15:57
Letzter Beitrag: jg
  Zeitstempel in Datenbank anpassen Andy.B 1 3.067 30.03.2009 12:02
Letzter Beitrag: Y-P
  Bei Tabelle Index der angeklickten Zeile erhalten Suivi123 4 6.108 11.02.2009 16:19
Letzter Beitrag: TSC
  Array in Datenbank einfügen mario873 4 5.054 04.04.2006 06:35
Letzter Beitrag: cb

Gehe zu: