# abfrage SQL-Datenbank



## mertens2 (13 November 2008)

Hallo,

schreibe aus WinCC in eine SQL-Datenbank. Funktioniert prächtig. Nun möchte der Kunde auf dem Rechner (auf dem auch WinCC läuft) Datensätze aus der Datenbank wieder angezeigt bekommen. Ich könnte das ja in WinCC händeln, ist aber super aufwendig. Hat jemand eine andere Idee. Gefordert ist: Der Kunde gibt eine Auftragsnummer ein (=eine Spalte in der Datenbank) und bekommt dann alle Zeilen angezeigt, die diese Auftragsnummer haben. Hat jemand eine Idee?

Gruß

cm


----------



## Question_mark (13 November 2008)

*SQL Datenbank*

Hallo,



			
				mertens2 schrieb:
			
		

> Ich könnte das ja in WinCC händeln, ist aber super aufwendig.



Da kann ich Dir nur zustimmen, das ist der reinste Anachronismus und erinnert mich immer noch an Windows 3.11 ...

Welche WinCC Version benutzt Du ?

Bei den neueren Versionen ist die Datenbankbasis in WinCC der MS SQL Server. Und da ist es eigentlich kein grosses Problem, mit einer Hochsprache wie Delphi oder C# auf eine Instanz des WinCC-Server zuzugreifen. Setzt aber fundierte Kenntnisse in einer Hochsprache und SQL voraus, aber dann ist es recht einfach.

Gruß

Question_mark


----------



## Question_mark (13 November 2008)

*Welche Datenbank ???*

Hallo,



			
				mertens2 schrieb:
			
		

> schreibe aus WinCC in eine SQL-Datenbank.



Upps, das habe ich fast überlesen. Schreibst Du etwa von WinCC nicht in die WinCC Datenbank sondern nach Oracle, IBM, Firebird, MySQl und Konsorten ?
Auch kein Problem, das geht genauso wie von mir im vorigen Beitrag beschrieben.

Gruß

Question_mark


----------



## Ralle (13 November 2008)

Vielleicht kann man auch Access nutzen?

http://office.microsoft.com/de-de/access/HA102064881031.aspx


----------



## HeizDuese (13 November 2008)

Wenn ich mich nicht irre, darf der SQL-Server, den WinCC mitliefert *nicht für eigene Datenbanken verwendet werden*- dafür wird eine zusätzliche Lizenz von Microsoft SQL-Server benötigt. Datenzugriff auf Daten der WinCC-Datenbanken sind in der WinCC-Lizenz natürlich enthalten.
Aber das ist auch eigentlich, dank der kostenlosen Expressversionen von MS-SQL, kein Problem - einfach eine 2. Instanz mit einer Expressversion installieren, dann sollte dies kein Thema sein.

Der Zugriff auf SQL-Server geht einigermaßen in WinCC mit VBS. Man kann das leider überhaupt nicht mit den Möglichkeiten anderer Hochsprachenprogramme vergleichen. Aber für ein Auslesen und Beschreiben in WinCC Variablen gehts schon.

Ich empfehle die Scripte für Datenbankzugriffe in den globalen Scripten anzulegen- sonst kann es zu echten Problemen kommen, weil man die Stellen mit den Scripten in den Bildern u.U. schlecht wiederfindet, wenn z.B bei größeren Projekten mal was geändert werden muss (z.B. Datenbankservername, etc.).


----------



## Question_mark (13 November 2008)

*Access ist keine Datenbank, sondern Sch....*

Hallo,



			
				Ralle schrieb:
			
		

> Vielleicht kann man auch Access nutzen?



Der Vergleich von Access mit einer Datenbank betrachte ich doch als sehr gewagt  
Ein Tretroller ist nun mal eben kein Auto ...

Gruß

Question_mark


----------



## vierlagig (13 November 2008)

Question_mark schrieb:


> mit einer Hochsprache wie Delphi oder C# auf eine Instanz des WinCC-Server zuzugreifen. Setzt aber fundierte Kenntnisse in einer Hochsprache und SQL voraus, aber dann ist es recht einfach.



bis auf die fundierten kenntnisse ein *ACK*

und wenn es in ne andere datenbank geht als die von winCC isses auch nicht schlimm

ich würde hier übrigens zu C# greifen, da hier schon recht gute module zum datenbank auslesen verfügbar sind ... frank würde zu delphi greifen ... also egal was, es funktioniert!

und das ganze dann in winCC eingebunden und schon merkt es keiner, dass da noch ne andere anwendung dahinter steckt.


----------



## Question_mark (13 November 2008)

*vl, so einfach ist das nicht*

Hallo,



			
				vl schrieb:
			
		

> bis auf die fundierten kenntnisse



vl, da muss ich Dir doch widersprechen. Spätestens bei SQL mit verschachtelten "INNER JOIN" und Konsorten entsteht doch ein ähnliches Gefälle in der Qualifikation des Programmierers wie bei der SPS zwischen AWL und KOP 
Zumal doch jeder Hersteller von Datenbanken einen eigenen Dialekt von SQL einsetzt. Es gibt zwar Normierungen, aber jeder Hersteller ignoriert diese ganz einfach und erfindet eigene Varianten, man muss sich ja von der Konkurrenz unterscheiden.
Eine aus Unkenntnis ungeschickt formulierte SQL-Abfrage kann dafür sorgen, dass ein Abfrageergebnis Millionen von Datensätzen völlig unnütz über das Netzwerk schaufelt und der Anwender sich an der Sanduhr erfreuen kann. Ein Ergebnis kommt am Ende heraus, aber wer sich zum Beispiel mit Datenbanken und SQL auskennt, kann das Ergebnis auch im Millisekundenbereich auf dem Client zur Verfügung haben.   
Ist so ähnlich wie bei der SPS-Programmierung, ein Ergebnis das mehr oder weniger funktioniert bekommt man irgendwann mal hin, aber viele Wege führen nach Rom und manch einer macht mangels Qualifikation den Umweg über Australien  

Gruß

Question_mark


----------



## vierlagig (13 November 2008)

da er nur einen datensatz anzeigen will, ist das wirklich nicht das große problem ... und wenn er MS sql nutzt kann er sich die abfrage-routine sogar an hand der tabellen zusammen basteln ... mysql sollte das IMHO auch unterstützen ... das bracuh er nur noch als abfrage implementieren...

datenbanken an sich sind natürlich, und da gebe ich dir recxht, ein sehr komplexes thema, aber je nachdem, was man bracuht, kann es auch ganz einfach sein! ... und hier seh ich einen solchen fall


----------



## Question_mark (13 November 2008)

*Viele Wege nach Rom*

Hallo,



			
				vl schrieb:
			
		

> kann es auch ganz einfach sein! ... und hier seh ich einen solchen fall



Das stimmt auch in diesem Fall, es ist sowas von einfach. Aber wie Du an den Beiträgen siehst, schon für die Mehrheit nicht lösbar...
Und da das ganze so einfach ist, mache diese simple Abfrage mal mit einem ClientCursor und/oder einem ServerCursor der Datenbank. Die Unterschiede liegen im Minutenbereich, die Abfrage ist aber doch so einfach ...
Wie schon oben geschrieben, ein Ergebnis bekommt man immer. Man muss nur genug Zeit haben 
Aber bei der SPS Programmierung geht es genau so, ein Ergebnis bekommt man schon, fragt sich nur wie man auf effektive Weise sein Ziel erreicht.

Gruß

Question_mark


----------



## HeizDuese (14 November 2008)

vierlagig schrieb:


> ...
> 
> ich würde hier übrigens zu C# greifen, da hier schon recht gute module zum datenbank auslesen verfügbar sind ...



C# / Dot.Net ist sicherlich eine gute Wahl. Bei der aktuellen Version von WinCC lassen sich ja nun endlich auch .net-Controls in die WinCC-Bilder einbauen. Damit kann man z.B. problemlos ein DataGrid und andere Windows-/.Net-Controls in WinCC darstellen.


----------



## Ralle (14 November 2008)

Question_mark schrieb:


> Hallo,
> 
> 
> 
> ...



Wie kommst du darauf, daß ich Access mit einer Datenbank vergleiche?  Die Frage ist, ob man Access dazu verwenden kann, die Daten aus der SQL-Datenbank abzufragen und anzuzeigen. Darum ging es ja und das könnte, laut dem Link, möglich sein. Mit etwas Glück braucht man dann keine Programmiersprache etc. zu bemühen.

PS: Vielleicht hättest du den Link mal öffnen sollen.


----------



## Question_mark (14 November 2008)

*Hmmm*

Hallo,



			
				Ralle schrieb:
			
		

> Wie kommst du darauf, daß ich Access mit einer Datenbank vergleiche?



Das war mein erster Gedanken auf folgendes :



			
				Ralle schrieb:
			
		

> Vielleicht kann man auch Access nutzen?


Den Link zu Microsoft habe ich nicht öffnen können, da MS unbedingt Cookies bei mir ablegen wollte.
Aber jetzt ist mir klar, worauf Du hinaus wolltest. Und solange es sich um eine Microsoft Datenbank handelt wird das sogar funktionieren. Und auch wohl die Lösung mit dem geringsten Aufwand sein.

Gruß

Question_mark


----------

