# libnodave und .NET



## Rio (10 Januar 2013)

Hallo Zusammen,
ich habe eine kleine HMI in C# geschrieben um Daten aus einer "S7 314C-2 PN/DP" darzustellen. Zur Kommunikation benutze ich libnodave-0.8.4.6 auf einem Windows 7 Professional 32-Bit System. Die Daten werden jede Sekunde geholt und aktualisiert. Die Interaktion Winforms <> Datenmanager funktioniert auch ganz gut. 
Allerdings fliegt mir die Anwendung nach etwa 10-15 Minuten auseinander mit folgenden Fehlermeldungen:
1.: 
System.AccessViolationException: Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass 


anderer Speicher beschädigt ist.
   bei libnodave.daveConnection.daveDisconnectPLC(IntPtr dc)
   bei libnodave.daveConnection.disconnectPLC() in c:\Users\Computer\BUGGIE\Automation\VisuaDotNet\SharpHMI\DATA\DRIVER\libnodave.net.cs:Zeile 346.
   bei SharpHMI.DATA.CONTROLLER.S7.NODAVE.LanCPU.__S7LanClose() in c:\Users\Computer\BUGGIE\Automation\VisuaDotNet\SharpHMI\DATA\CONTROLLER


\S7\NODAVE\LanCPU.cs:Zeile 99.
   bei SharpHMI.DATA.CONTROLLER.S7.NODAVE.BaseCPU.Read() in c:\Users\Computer\BUGGIE\Automation\VisuaDotNet\SharpHMI\DATA\CONTROLLER\S7\NODAVE


\BaseCPU.cs:Zeile 80.
   bei SharpHMI.DATA.Manager.__readController(Object o) in c:\Users\Computer\BUGGIE\Automation\VisuaDotNet\SharpHMI\DATA\Manager.cs:Zeile 47.
   bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   bei System.Threading.ThreadHelper.ThreadStart(Object obj)

oder 2.:
System.AccessViolationException: Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.
   bei libnodave.pseudoPointer.daveFree(IntPtr p)
   bei libnodave.pseudoPointer.Finalize() in c:\Users\Computer\BUGGIE\Automation\VisuaDotNet\SharpHMI\DATA\DRIVER\libnodave.net.cs:Zeile 232.



Es haengt also an der c-lib bzw. an der Speicherverwaltung .NET<>Native. Hat von euch evtl jemand eine Idee wie man das Problem fixen kann bzw. was man "kosten neutral" anstelle von libnodave.dll benutzen kann?

Vielen dank im voraus
Gruss Rio


----------



## Jochen Kühner (10 Januar 2013)

Als alernative kann ich dir meine toolbox empfehlen, diese nutzt libnodave in einer von mir gepatchten version. Ist auch kostenlos. http://siemensplctoolboxlib.codeplex.com/


----------



## mogel (10 Januar 2013)

Moin,



Rio schrieb:


> System.AccessViolationException: Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. ...


beim letzten Versuch mit libnodave auf etwas zuzugreifen ist was schief gelaufen. Darüber wurdest Du von libnodave aber schon informiert (Stichwort "Rückgabewert"). Einfach die Verbindung als abgebrochen deklarieren und neu aufbauen.

hand, mogel

BTW: bei mir war es immer ein Timeout - UMTS ist nicht so berauschend in Berlin


----------



## Rio (11 Januar 2013)

Hallo,
danke fuer die schnellen Antworten. 

@ Jochen Kuehner:
Ich war so frei und habe mir die "libnodave_jfkmod(64).dll" und "libnodave_jfkmod.net.cs" aus der "DotNetSiemensPLCToolBoxLibrary" heraus kopiert und anstelle der original "libnodave" Dateien benutzt. Funktioniert bis jetzt (7394+s) super  danke. 

@ mogel:
Die Idee hatte ich auch schon und habe deshalb bei jedem Verbindungsaufbau neue Instanzen angelegt und nach Beendigung entsprechend verworfen. Hatte aber nicht den gewuenschten Erfolg  

Gruss Rio


----------



## steim18 (11 Februar 2013)

hallo zusammen habe mal eine frage zu .net 
ich bin ein totaler anfänger in der . net sprache und weis leider nicht wie ich hierbei vorgehen soll. alle anleitungen, die ich finde sind für mich nicht zu gebrauchen. darum bitte ich hier um hilfe. kann mir jemand mal ein beispielprojekt senden mit eiem einfachen zugriff auf einen merker über iso on tcp und das mit der libnodave.net.dll ? oder gibts da ein buch, dass man kaufen kann. 
ich benötige dies, um einzelne wörter aus der Cpu 315 schreiben und lesen zu können.
vielen dank im voraus


----------



## Jochen Kühner (14 Februar 2013)

steim18 schrieb:


> hallo zusammen habe mal eine frage zu .net
> ich bin ein totaler anfänger in der . net sprache und weis leider nicht wie ich hierbei vorgehen soll. alle anleitungen, die ich finde sind für mich nicht zu gebrauchen. darum bitte ich hier um hilfe. kann mir jemand mal ein beispielprojekt senden mit eiem einfachen zugriff auf einen merker über iso on tcp und das mit der libnodave.net.dll ? oder gibts da ein buch, dass man kaufen kann.
> ich benötige dies, um einzelne wörter aus der Cpu 315 schreiben und lesen zu können.
> vielen dank im voraus



schau dir mal meine connectionnlib an, da sind die verschiedensten beispielprogramme und auch ein ganz einfaches csharp beispiel dabei!


----------



## steim18 (14 Februar 2013)

Hallo jochen. Vielen dank für di schnelle antwort. Ja deine biblithek habe ich gesehen. Nur verwendest du doch eine eigene dll und mit diesen aufruffen funkt das nicht. Wie gesagt bin totaler anfänger in .net programmierung. Ich verstehe das nicht so genau wie ich die libnodave.net dll in ein projekt einbinden muss und wie dann die verbindung gemach wird. Das kann doch nich so schwer sein, ich suche wahrscheinlich am falschen ort. Vielen dank schon mal im voraus. Gruss tinu


----------



## Jochen Kühner (14 Februar 2013)

Also meie Bibliothek baut auch auf libnodave auf, verwendet aber eine modifizierte Version die um Routing und div weitere Kleinigkeiten erweitert wurde!


----------



## Jochen Kühner (14 Februar 2013)

Da du aber auch totaler Anfängert bist, empfehle Ich dir halt meine lib, da du dich um vieles was du bei libnodave machen musst nicht mehr selbst kümmern musst:

z.B. Verbindungskonfiguration:


```
[COLOR=#2B91AF][FONT=Consolas]Configuration[/FONT][/COLOR][COLOR=black][FONT=Consolas].ShowConfiguration([/FONT][/COLOR][COLOR=#A31515][FONT=Consolas]"SimpleCSharpDemonstrationConnection"[/FONT][/COLOR][COLOR=black][FONT=Consolas], [/FONT][/COLOR][COLOR=blue][FONT=Consolas]true[/FONT][/COLOR][COLOR=black][FONT=Consolas]);[/FONT][/COLOR]
```

Auslesen einer Variable


```
myConn = [COLOR=blue]new[/COLOR] [COLOR=#2b91af]PLCConnection[/COLOR]([COLOR=#a31515]"SimpleCSharpDemonstrationConnection"[/COLOR]);
myConn.Connect();
[COLOR=blue]var[/COLOR] tag = [COLOR=blue]new[/COLOR] [COLOR=#2b91af]PLCTag[/COLOR]([COLOR=#a31515]"MW88"[/COLOR]);
myConn.ReadValue(tag);
```


----------



## steim18 (14 Februar 2013)

Ok und wo krieg ich deine lib her? Ist denn deine lib kostenlos? Gruss tinu


----------



## steim18 (14 Februar 2013)

Ok und wo krieg ich deine lib her? Ist denn deine lib kostenlos? Gruss tinu


----------



## Jochen Kühner (15 Februar 2013)

steim18 schrieb:


> Ok und wo krieg ich deine lib her? Ist denn deine lib kostenlos? Gruss tinu



http://siemensplctoolboxlib.codeplex.com/

steht auch in meiner signatur!


----------



## steim18 (15 Februar 2013)

Hallo jochen sorry dass ich dich so oft störe, aber habe mir die Codes jetzt geholt. und leider hat der Code ZipHelper.cs gibt mir 11 fehler an. was muss ich da machen? und wenn ich dann keine Fehler mehr habe kann ich das projekt irgendwie beenden, damit ich deine .dll datei habe? weis nicht wie ich das machen muss. verwende visual studio C# und keine ahnung wie das geht. danke gruss Tinu


----------



## Jochen Kühner (15 Februar 2013)

steim18 schrieb:


> Hallo jochen sorry dass ich dich so oft störe, aber habe mir die Codes jetzt geholt. und leider hat der Code ZipHelper.cs gibt mir 11 fehler an. was muss ich da machen? und wenn ich dann keine Fehler mehr habe kann ich das projekt irgendwie beenden, damit ich deine .dll datei habe? weis nicht wie ich das machen muss. verwende visual studio C# und keine ahnung wie das geht. danke gruss Tinu



Kann ich mir im Moment nicht erklären, da bei mir alles Compiliert! Welche Visual Studio Version? Welches .NET Framework??

Du kannst aber auch die Dateien aus dem Ordner compiled verwenden...


----------



## steim18 (25 Februar 2013)

Hallo jochen sorry dass ich erst jetzt schreibe hatte leider keine zeit. habe deine lib. noch mals kopiert jetzt krieg ich nur noch diese Fehler(Bild). weis nicht was ich damit anfangen kann. Vieleicht sagt dir das mehr. ich benutze net frame 4.5 und visual studio Express 2012 für Desktop. Danke schon mal im voraus gruss steim18


----------



## Jochen Kühner (26 Februar 2013)

steim18 schrieb:


> Anhang anzeigen 19939
> 
> 
> 
> ...



Findet er denn die SharpZip dll nicht? Schau mal unter References...


----------



## steim18 (27 Februar 2013)

Also danke für den Tip habe eine neue sharp zip lib heruntergeladen jetzt funktionierts, jetzt habe ich ein neues problem und auch da keine Ahnung was ich bei diesem Fehler machen muss. gruss steim18


----------



## Jochen Kühner (27 Februar 2013)

steim18 schrieb:


> Anhang anzeigen 19956
> 
> 
> 
> ...



Keine Ahnung warum dieser Fehler bei dir kommt, bei mir compilierts unter .NET4 und 4.5! Warum musst du überhaupt die SharpZipLib runterladen? Die ist doch in meinem CodePlex Projekt dabei! Woher hast du denn mein Quellcode, lad doch einfach mal alles!


----------



## steim18 (27 Februar 2013)

Ok jetzt funktionierts habe deine lib noch mals neu heruntergeladen und jetzt funktionierts. habe etwas falsch verstanden. kann jetzt compilieren. noch eine frage zum verwenden deiner lib muss ich jetzt nur noch eine windows form anwendung hinzufügen oder sonstwas. bin ich da richtig informiert? gruss steim18


----------



## Jochen Kühner (27 Februar 2013)

steim18 schrieb:


> Ok jetzt funktionierts habe deine lib noch mals neu heruntergeladen und jetzt funktionierts. habe etwas falsch verstanden. kann jetzt compilieren. noch eine frage zum verwenden deiner lib muss ich jetzt nur noch eine windows form anwendung hinzufügen oder sonstwas. bin ich da richtig informiert? gruss steim18



Schau doch mal in die Solution... Sind einige Beispielanwendungen dabei! 
Darauf achten das das Programm als X86 compiliert wird! Die 64 Bit DLL von libnodave funktioniert noch nicht!


----------



## Binatone (10 November 2013)

Ich möchte hier einfach mal anknüpfen und ein paar "blöde Fragen" stellen - Entschuldigung 

Mit solchen Libs kann ich einigermaßen bequem auf Die DB Inhalte in Step7 DB's zugreifen, hab ich das richtig verstanden ?
Jetzt hab ich die Möglichkeit auf einem beliebigen PC in z.B. VB oder auch Delphi eine .exe zu schreiben ?
Dieser kann ich dann Schalter, Buttons, Regler Anzeigen etc. einbauen und fertig ist die HMI ?

Hab ich das soweit richtig verstanden ?

Wenn dem dann so ist:
Könnte ich theoretisch auf diesem Wege auch eine HTML Datei bauen, auf die ich übers internet/WLan mittels Browser im Smartphone zugreifen kann ?
Wenn Ja: Gibts da Einschränkungen (Datenmenge, Reaktionszeit)

Bevor ich das alles mühsam "zu Fuß" erkunde, wären ein paar Anmerkung von erfahrenen Nutzern hilfreich 

Hintergrund: ich hab im Augenblick eine Protool Datei, die aber allmählich etwas träge wird und die Verbindung reisst mir leider auch ein-zweimal am Tag ab, was erst durch einen Neustart eliminiert werden kann 

Das "Dankeschön" leg ich hier gleich dabei


----------



## mogel (10 November 2013)

Binatone schrieb:


> Hab ich das soweit richtig verstanden ?


vom Prinzip her schon



Binatone schrieb:


> Könnte ich theoretisch auf diesem Wege auch eine HTML Datei bauen, auf die ich übers internet/WLan mittels Browser im Smartphone zugreifen kann ?
> Wenn Ja: Gibts da Einschränkungen (Datenmenge, Reaktionszeit)


Da HTML ein verbindungsloses Protokoll ist, erhöht sich die Reaktionszeit etwas. Hält sich aber, m.M.n., in Grenzen (Bauchgefühl max. 5s Timeout).

Wenn Du in .NET bleiben willst, dann ist evt. der Cassini-Webserver ein Blick wert.


----------



## frankuc45 (11 Dezember 2014)

Hallo Jochen,

Ich versuche mit auch mit deiner Lib
In der CPU 315 im Wort DB130.DBW10 steht -22 drin
Beim lesen mit Communication.PLCTag("DB130.DBW108")
bekomme ich immer 65516 und keinen negativen Wert.

Was mache ich den da falsch ?

Danke für deine Hilfe

Gruß Frankuc45


----------



## point_system (12 Januar 2015)

Hallo Rio,

ich habe vor die Gleiche Aufgabe mit der CPU314C-2dp zu erledigen, kannst du bitte mir weiter helfen?

Viele Grüße
Sina


----------



## dolo280 (13 Januar 2015)

Guten Morgen,

ich nutzte die DotNetSiemensPLCToolBoxLibrary von Jochen schon seit einiger Zeit, und finde sie echt Top! Danke Jochen! Egal ob x86, x64.. hat echt viel ärger mit der bloßen libnodave.dll erspart 

@Frankuc45
Poste doch mal dienen Code-Schnipsel!

@point_system
Ein paar weitere Infos wären nicht schlecht!? 

Grundsätzlich zu meinem Vorgehen:

List<PLCTag> tags = new List<PLCTag>(); //Liste für die Tags anlegen...
tags.Add(new PLCTag("DB123.DBW12")); //Tag der Liste hinzugügen
tags[0].TagDataType = DotNetSiemensPLCToolBoxLibrary.DataTypes.TagDataType.Int; //Tag den Datentyp übergeben
plcConnections[0].ReadValues(tags); //Tag Liste aus S7-Auslesen...
var Daten = tags[0].Value; //Übergabe in Variable zum weiteren verarbeiten...

Wenn man sich auslebt, kann man das ganze schön als Klassen aufbauen und z.B. schön XML Listen etc. übergeben und somit auch einfach viele Daten auf einmal handeln....

Gruß Dominik


----------



## point_system (13 Januar 2015)

Guten Morgen dolo,

ich möchte Prozessdaten (DB501 bis DB536 und UDT11 bis UDT803) von meiner CPU314C-2dp ablesen und in einer Datenbank (z.B. myPHPAdmin) mit dynamischen Werten speichern. Dannach werde ich anhand einer PHP sprache Visualisierung anfangen.

Gruß
Point


----------



## dolo280 (13 Januar 2015)

Hallo Point,

okay, dann bist Du mit dem Beispiel von mir ja schon in der richtigen Richtung, schreib halt ein paar Klassen und etwas außen rum, dann lässt es sich einfach Handeln! 
Was hast Du mit den UDT's vor?! Die sind ja technisch gesehen nicht mal in der SPS sondern die Struktur nur im STEP7 Projekt hinterlegt...
Für eine mySQL-Datenbank bekommst Du ja auch Problemlos den Connector/Net um eine Verbindung aufzubauen! 
Ich hab zwei solcher Projekte bei nem Kunden laufen (mal MS-SQL, mal mySQL), macht sich trotz der vielen Datenelemente recht zuverlässig und gut!

Gruß Dominik


----------



## point_system (13 Januar 2015)

Hallo Dolo,

Danke für deine Antwort. Ich bin bisschen neue in Informatikwelt, hast du viellecht ein Beispiel Code wie man es schreibt und in welcher Umgebung? Ich habe bis jezt nur SPS freiprogrammiert.

Schöne Grüße
point


----------



## dolo280 (13 Januar 2015)

Hallo Point,

kein Problem! Die Lösung kann ich Dir jetzt kaum auf den Tisch legen.. 
Besorg Dir doch mal Visual Studio un erstell erste kleine Konsolenanwendungen in C#. 
Dann schau das Du die DotNetSiemensPLCToolBoxLibrary von Jochen zum laufen bekommst (Siehe mein Beispiel hier in Thema). 
In Google wirst Du mit einfachen Stichworten wie "C# Insert mysql" u.s.w. auch genügend Beispiele und Anleitungen finden wie Du Daten in die Datenbank eingetragen bekommst.

Gruß Dominik


----------



## point_system (13 Januar 2015)

Hallo Dominik,
Visual Studio bezüglich welche Edition soll ich runterladen? Express für Web oder Windows oder Windows Desktop?
Viele Grüße
Sina


----------



## Jochen Kühner (13 Januar 2015)

In meiner Toolbox gibts auch ein Programm "Protkoller" welche Daten von einer SPS ließt und in verschiedenste Datenbanken speichern kann!

Ich würd mir die VS2015 CTP runterladen. Die läuft Top stabil, und darf soweit Ich weiss Produktiv verwendet werden!


----------



## point_system (13 Januar 2015)

Hallo Jochen,

Hast du vielleicht Beispiel code dafür? Ich bin Anfänger in Programmierung und brauche Hilfe. 

Schöne Grüße
Sina


----------



## Jochen Kühner (13 Januar 2015)

In meine Toolbox sind zahlreiche Beispiel Programme...

Für den Protokoller brauchst du nichts Programmieren, das ist ein Tool welches als Windows Dienst läuft und in festen Zeiträumen oder mit Trigger Bits Daten von der SPS holt und diese in eine Datenbank oder CSV Files schreibt!


----------



## point_system (13 Januar 2015)

Also ich mache diesen Ordner : "Desktop\DotNetSiemensPLCToolBoxLibrary-master\DotNetDatenbankProtokollerV2\ProtokollerLibrary" auf und drin steht die Ordner (im Bild vorhanen) 
	

		
			
		

		
	



	

		
			
		

		
	
 Ich finde also keine .exe datei. Was soll ich tun? 
VG
Sina


----------



## Jochen Kühner (13 Januar 2015)

Wird alles in den Ordner "compiled" gebaut. Dort gibts die
"JFK-ProtokollerConfigurationTool.exe"


----------



## dolo280 (14 Januar 2015)

Hallo Jochen, ich hab mir *den DotNetDatenbankProtokollerV2 *mal angeschaut und getestet.
Allerdings würde ich gerne, nur bei einer Wertänderung, schreiben. *"Time_Trigger_With_Value_Comparison" *hab ich dazu ausgewählt. Allerdings schreibt er beim Float trotzdem alle 500ms einen Wert. Hab ich hier was übersehen?
Wenn ich mir die Klasse _*TimeTriggerWithCheckForChangesThread *_anschaue scheint es ja von Dir umgesetzt zu sein.




Gruß Dominik


----------



## point_system (14 Januar 2015)

Hallo Jochen,
ni
Danke fürs Supertool, ich habe mit dem Tool rumgespielt und habe geschafft Dateien in csv-Fprmat zu bringen. Aber bei MySQL klappt es irgendwie nicht. Was soll ich besonders beachten? Zum Beispiel Versionen...  Eine andere Frage:  Ist es normal, wenn das Tool nicht stabil mit CPU in Verbindung bleibt? Bei mir sagt das Tool oft: Keine Rückmeldung (genau wie bei Internet Explorer)

Danke im Voraus 
point


----------



## Jochen Kühner (14 Januar 2015)

dolo280 schrieb:


> Hallo Jochen, ich hab mir *den DotNetDatenbankProtokollerV2 *mal angeschaut und getestet.
> Allerdings würde ich gerne, nur bei einer Wertänderung, schreiben. *"Time_Trigger_With_Value_Comparison" *hab ich dazu ausgewählt. Allerdings schreibt er beim Float trotzdem alle 500ms einen Wert. Hab ich hier was übersehen?
> Wenn ich mir die Klasse _*TimeTriggerWithCheckForChangesThread *_anschaue scheint es ja von Dir umgesetzt zu sein.
> 
> ...



Keine Ahnung warums nicht läuft, komm aber im Moment nicht dazu mir das anzuschauen, musst du debuggen.

Man kanns ganz einfach debuggen wenn man das ConfigurationTool im Debugger startet,  und dort gibts unter Test den eintrag TestAsService


----------



## Jochen Kühner (14 Januar 2015)

point_system schrieb:


> Hallo Jochen,
> ni
> Danke fürs Supertool, ich habe mit dem Tool rumgespielt und habe geschafft Dateien in csv-Fprmat zu bringen. Aber bei MySQL klappt es irgendwie nicht. Was soll ich besonders beachten? Zum Beispiel Versionen...  Eine andere Frage:  Ist es normal, wenn das Tool nicht stabil mit CPU in Verbindung bleibt? Bei mir sagt das Tool oft: Keine Rückmeldung (genau wie bei Internet Explorer)
> 
> ...



Nö, eigentlich nicht! Was startest du denn für ein Tool, und wie startest du es? Als Dienst, als Test? Der Testbetrieb wurde nie im Dauerlauf probiert, der Dient nur zum überprüfen der Einstellungen. Als Dienst läufts auf jeden Fall stabil!

Was gibts in MySQl für Fehler?


----------



## dolo280 (15 Januar 2015)

> Keine Ahnung warums nicht läuft, komm aber im Moment nicht dazu mir das anzuschauen, musst du debuggen.
> 
> Man kanns ganz einfach debuggen wenn man das ConfigurationTool im Debugger startet, und dort gibts unter Test den eintrag TestAsService



Guten Morgen,

ja ich hänge seit gestern Nachmittag dran, hab für den SQL-UPDATE in MS-SQL schon mal einen Pull ins GitHub-Repository gemacht. Wenn ich dem Fehler für die "Tigger bei Change" gefunden habe, folgt der nächste 

Gruß Dominik


----------



## point_system (15 Januar 2015)

> Nö, eigentlich nicht! Was startest du denn für ein Tool, und wie startest du es? Als Dienst, als Test? Der Testbetrieb wurde nie im Dauerlauf probiert, der Dient nur zum überprüfen der Einstellungen. Als Dienst läufts auf jeden Fall stabil!
> Was gibts in MySQl für Fehler?


Guten Tag,


Ich benutzte "JFK-ProtokollerConfigurationTool" und "MySQL Server 5.6" sowie "ApacheFriends XAMPP Version 5.6.3". Das Errpr sagt: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[Database].

' at line 1 

Im Bezug auf "Keine Rüchmeldun" hast du Recht ich betätige immer Test as service oder Test read of Data:


Liebe Grüße
point


----------



## dolo280 (15 Januar 2015)

Liegt als im Insert in die Tabelle, die Tabelle in die Du den Datensatz einfügen möchtest ist soweit okay (Keine "NOT NULL DEFAULT" u.s.w.)?

Das Insert im DotNetDatenbankProtokollerV2 baut sich in der immer so auf:

```
"INSERT INTO " + this.dataTable + "(" + felderliste + ") values(" + wertliste + ")";
```

Zeig doch mal deine Einstellung von den "Datasets" ... oder Exportiere mal die Einstellung und lade sie hier hoch!

Gruß Dominik


----------



## point_system (15 Januar 2015)

> Zeig doch mal deine Einstellung von den "Datasets" ... oder Exportiere mal die Einstellung und lade sie hier hoch!
> 
> Gruß Dominik


Hier ist mein Dataset. ICh versuche zunächst meine eigene Tabelle und DB in phpMYAdmin zuerstellen und versuche nochal.




> Liegt als im Insert in die Tabelle, die Tabelle in die Du den Datensatz einfügen möchtest ist soweit okay (Keine "NOT NULL DEFAULT" u.s.w.)?


Meinst du die Tabelle in Tool config oder die Tabelle in phpMYAdmin?

Viele Grüße
point


----------



## dolo280 (15 Januar 2015)

Okay, das Dataset sieht völlig normal aus. Ich hab die Tabelle bis dato immer vorher im mySQL Server konfiguriert...
Schau Dir mal das Tool an, damit kann man ganz gut Arbeiten: http://www.heidisql.com/

Ja logo! Die Tabelleneinstellung auf der Serverseite!


----------



## point_system (15 Januar 2015)

Soll Die Dataset_Tabelle im Tool von Jochen mit der Tabelle, die ich in phpMYAdmin erstelle genau übereinstimmen? Zum Beispiel mein SQL-Tabele hat nur 4 Spalten aber Tool hat 10. 
	

		
			
		

		
	



Viele Grüße


----------



## dolo280 (15 Januar 2015)

Naja, die Tabelle auf dem mySQL (phpMyAdmin ist dafür nur ein Frontend) sollte zumindest so gestaltet sein, das der SQL-INSERT funktioniert.

Im Moment hast Du in deiner Tabelle 4.Felder?! In der Konfiguration sind aber nur 2. Stück.

Auf deinem MySQL Server heißt die Tabelle *"Abwasser"* -> im DotNetDatenbankProtokollerV2 hast Du dafür *"Table_2" *
Im der mySQL-Tabelle gibt es die Spalte ID, Timestamp setzte dort mal *"NULL"*
In der mySQL-Tabelle hast Du die zwei Spalten in die Du wahrscheinlich die Daten eintragen möchtest *"Name"/"Value" *in der DotNetDatenbankProtokollerV2 Konfiguration heißen diese aber: *Row_1 / Row_2*
Ich denke damit solltest Du weiterkommen?! Hast Du das Visual Studio schon am laufen? Wenn Du dort das ganze in den Debugger hängst hast Du relativ schnell deine Fehler gefunden!

Gruß Dominik


----------



## Jochen Kühner (15 Januar 2015)

Versuchs doch mal ganz ohne Tabelle auf dem Server, dann sollte mein Tool die nämlich anlegen!


----------



## Jochen Kühner (15 Januar 2015)

Und bei dir heist die Tabelle auf dem Server Abwasser, im Tool aber Table_2.

Exportier mal deine Config und lade Sie hier hoch!


----------



## point_system (15 Januar 2015)

> Und bei dir heist die Tabelle auf dem Server Abwasser, im Tool aber Table_2.
> 
> Exportier mal deine Config und lade Sie hier hoch!



Es funktioniert jetzt alles richtig, nur versuche ich jetzt anstatt immer eine längere Liste zu haben, in einer Zeile die Wert zuaktualisieren. Irgendeine IDee?

VG
point


----------



## dolo280 (16 Januar 2015)

Hallo point,

nutze doch die funktion "Update" (Siehe Bild). Gib deiner Zeile noch eine zusätzliche Spalte (z.B. id) und vergebe dann die WHERE-Bedingung!




Gruß Dominik


----------



## point_system (19 Januar 2015)

Hallo Zusammen,

Ich versuche von Datasets in Datenbank zu schreiben. Wie soll erstmal mein Table in phpmyadmin aussehen? und dann was von query brauche ich um diese 26 Datenpunkte zuaktualisieren.

Danke im Voraus
Sina


----------



## Jochen Kühner (19 Januar 2015)

point_system schrieb:


> Hallo Zusammen,
> 
> Ich versuche von Datasets in Datenbank zu schreiben. Wie soll erstmal mein Table in phpmyadmin aussehen? und dann was von query brauche ich um diese 26 Datenpunkte zuaktualisieren.
> 
> ...



Wenn keine Tabelle existiert sollte mein Protokoller diese automatisch mit den entsprechenden Spalten anlegen! Macht er das?

Was hat dies nun mit jQuery zu tun?


----------



## point_system (19 Januar 2015)

> Wenn keine Tabelle existiert sollte mein Protokoller diese automatisch mit den entsprechenden Spalten anlegen! Macht er das?


 Ich habe : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-Level real NOT NULL default 0' at line 1



> Was hat dies nun mit jQuery zu tun?





Ich meine : SELECT * FROM `abwasser`


----------



## point_system (20 Januar 2015)

> Wenn keine Tabelle existiert sollte mein Protokoller diese automatisch mit den entsprechenden Spalten anlegen! Macht er das?



eigentlich nicht 

VG


----------



## Jochen Kühner (20 Januar 2015)

point_system schrieb:


> Ich habe : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-Level real NOT NULL default 0' at line 1
> 
> Anhang anzeigen 27060
> 
> Ich meine : SELECT*FROM`abwasser`




Ja, du hast wohl deine Datenbank Felder mit einem ungültigen Namen versehen!

So wies aussieht darf der in MySQL wohl kein "-" enthalten, oder bei mir ist das quoting falsch (muß Ich mal kontrollieren!)


----------



## Jochen Kühner (20 Januar 2015)

Hab mal was verbessert und bei GitHub hochgeladen. Nun sollten "-" im Namen gehen (wenn MySQL dies bei gequoteten Columns unterstützt!)


----------



## point_system (20 Januar 2015)

> Hab mal was verbessert und bei GitHub hochgeladen. Nun sollten "-" im Namen gehen (wenn MySQL dies bei gequoteten Columns unterstützt!)



Cool Jochen. KAnnst du bitte auch dein Tool für lesen und schreiben entwickeln ?


----------



## point_system (28 Januar 2015)

Hallo zusammen,

Tool funktioniert jetzt vollkommen richtig. Nur kriege ich kein Data in SQL. Ich hänge das Bild an.
	

		
			
		

		
	



	

		
			
		

		
	
 Welche Schritt fehlt bei meinem Versuch?

Viele Grüße
point


----------



## eloboy (3 Februar 2015)

Hallo zusammen,

ich finde des DotNetDatenbankProtokoller ich auch sehr gut >> ganz großes Lob an den Programmierer.


Ich habe jetzt festgestellt, das ab und zu mal ein paar Doppelte Datensätze in meiner Mysql Datenbank sind.
Nun habe ich einen "unique" auf den Entsprechen Spalten gelegt.
Aber der DotNetDatenbankProtokoller meldet dann "double key" und erstellt dann keine weiteren Einträge.

Als Trigger benütze ich den "Tags_Handshake_Trigger".
Auf der S7 verwende ich die Baustellen der Version 5.00.

Hat außer mir auch noch jemand doppel Einträge?
Wer kann mir einen guten Tipp geben?


----------

