Werte aus SQL auslesen und in WinCC darstellen

DoGis

Level-1
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leuts,
irgendwie hänge ich hier fest.
Einmal wollte ich versuchen den letzten Wert aus der SQL-DB auszulesen und in das E/A Feld Ca_Wert zu setzen.
Ich bekomme es schon bei einem Wert nicht hin und muss mehrere gleichzeitig auslesen.
Vielleicht könnt ihr mir ein bißchen auf die Sprünge helfen??
Mit SQL habe ich bis dato nicht so viel zu tun gehabt, aber das soll/muss sich nun ändern ;)

Hier der SQL mit dem ich es probiert habe:
Code:
'Datensatz aus Tabelle lesen
'Read data record from table

On Error Resume Next
Err.Clear

Dim ca_wert 'deklarieren der Variable 'variable declaration 

Set conn = CreateObject("ADODB.Connection")
Set rst = CreateObject("ADODB.Recordset")

conn.Open "Provider=MSDASQL;DSN=Meerwasser_Daten" 'DSN= name of the odbc-database 'DSN= Name der ODBC-Datenbank

Dim SQL_Tabelle 

SQL_Tabelle = "Select VarName, TimeString, VarValue  From Wasserwerte0 Order By TimeString DESC" '&  WHERE (VarName= "Ca_wert") Order By TimeString DESC" '&SmartTags("Dat_Nr")  '* = Alle Daten ' * = all data

Set rst = conn.Execute(SQL_Tabelle)

If Err.Number <> 0 Then 
    ShowSystemAlarm Err.Description  'Error description ; Fehlerbeschreibung
End If

If Not (rst.EOF And rst.BOF) Then 
    'Vergleich ob End of File oder Begin of File ist, wenn nicht wird der Zeiger auf den Ersten Eintrag zurueckgesetzt
    'ShowSystemAlarm "Wert gefunden" 'Ausgabe im ALARM VIEW, ob Eintrag vorhanden
    'Compare if "End of File" or "Begin of File" exists, if not the pointer will be reset to the first entry
    'ShowSystemAlarm "Wert gefunden" 'Dispaly at ALARM VIEW, if entry exits.
    
    rst.MoveFirst 'auf 1. Eintrag zurueck setzen 'reset to 1. entry
    
    SmartTags("Ca_wert") = rst.Fields(1).Value
    
    
    rst.close 

Else
    ShowSystemAlarm "Datensatz Nr. nicht vorhanden bzw. gefunden" 'Data Record Number does not existing or not found
End If

Set rst = Nothing
Set conn = Nothing
Err.Clear
Vielen lieben Dank für Eure Unterstützung..
Markus
 
ok, der SQL war ja völlig im eimer... War wohl gestern zu spät ;)

Hier ein neuer, aber auch der funzt nicht... keine Ahnung warum:
Code:
'Datensatz aus Tabelle lesen
'Read data record from table

On Error Resume Next
Err.Clear

Dim conn,rst 'deklarieren der Variable 'variable declaration 

Set conn = CreateObject("ADODB.Connection")
Set rst = CreateObject("ADODB.Recordset")

conn.Open "Provider=MSDASQL;DSN=Meerwasser_Daten" 'DSN= name of the odbc-database 'DSN= Name der ODBC-Datenbank

Dim SQL_Tabelle 

SQL_Tabelle = "SELECT VarName, TimeString, VarValue FROM Wasserwerte0 &  WHERE (VarName = 'mg_wert') Order by TimeString DESC " '* = Alle Daten ' * = all data

Set rst = conn.Execute(SQL_Tabelle)

If Err.Number <> 0 Then 
    ShowSystemAlarm Err.Description  'Error description ; Fehlerbeschreibung
End If

If Not (rst.EOF And rst.BOF) Then 
    'Vergleich ob End of File oder Begin of File ist, wenn nicht wird der Zeiger auf den Ersten Eintrag zurueckgesetzt
    'ShowSystemAlarm "Wert gefunden" 'Ausgabe im ALARM VIEW, ob Eintrag vorhanden
    'Compare if "End of File" or "Begin of File" exists, if not the pointer will be reset to the first entry
    'ShowSystemAlarm "Wert gefunden" 'Dispaly at ALARM VIEW, if entry exits.
    
    rst.MoveFirst 'auf 1. Eintrag zurueck setzen 'reset to 1. entry
    
    'SmartTags("Value_1") = rst.Fields(1).Value
    'SmartTags("Value_2") = rst.Fields(2).Value
    SmartTags("mg_wert") = rst.Fields(3).Value 
    'SmartTags("Name_1") = rst.Fields(1).Name
    'SmartTags("Name_2") = rst.Fields(2).Name
    'SmartTags("Name_3") = rst.Fields(3).Name 
    
    rst.close 

Else
    ShowSystemAlarm "Datensatz Nr. nicht vorhanden bzw. gefunden" 'Data Record Number does not existing or not found
End If

Set rst = Nothing
Set conn = Nothing
Err.Clear
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ist VarName ein numerischer oder boolscher Wert, dann wird so gefiltert:

Code:
SQL_Tabelle = "SELECT VarName, TimeString, VarValue FROM Wasserwerte0  WHERE VarName = " & mg_wert & " Order by TimeString DESC"

Ist VarName dagegen eine Zeichenkette, dann so:

Code:
SQL_Tabelle = "SELECT VarName, TimeString, VarValue FROM Wasserwerte0  WHERE VarName = [COLOR="#ff0000"]'[/COLOR]" & mg_wert & "[COLOR="Red"]'[/COLOR] Order by TimeString DESC"

Das Format der Variablen mg_wert ist dagegen bei der ganzen Filterei relativ uninteressant. Nur bei Datum/Uhrzeit wird's spannend.


Gruß
Mario
 
Zurück
Oben