SQL Programierung
30.10.2017, 14:51 Uhr
Hallo!
Ich Hätte eine Frage zum Thema SQL Programmierung.
Ich habe vor nach einem simplen Zähler ( FN:9 IF X EQU Y ), in einer Tabelle einen Eintrag zu machen, da dieser Eintrag ein Text sein soll geht dies meines Wissens nach nur mit SQL, da mit FN:27 TABWRITE nur Zahlenwerte möglich sind.
Ich würde mit FN:9 einen abgleich durchführen und wenn der ist- und soll-wert übereinstimmen zu einem lbl springen in dem ein Dateipfad in einer Tabelle geändert werden soll. ( der zu schreibende Dateipfad wäre immer der selbe )
Wie würde ein solcher Aufbau einer SQL Transaktion aussehen?
Ich hätte mich nun einige Zeit damit beschäftigt, bekomme aber ohne Beispiel zum "hineindenken" nicht viel hin.
Ich hoffe Ihr könnt mir weiterhelfen!
Ich Hätte eine Frage zum Thema SQL Programmierung.
Ich habe vor nach einem simplen Zähler ( FN:9 IF X EQU Y ), in einer Tabelle einen Eintrag zu machen, da dieser Eintrag ein Text sein soll geht dies meines Wissens nach nur mit SQL, da mit FN:27 TABWRITE nur Zahlenwerte möglich sind.
Ich würde mit FN:9 einen abgleich durchführen und wenn der ist- und soll-wert übereinstimmen zu einem lbl springen in dem ein Dateipfad in einer Tabelle geändert werden soll. ( der zu schreibende Dateipfad wäre immer der selbe )
Wie würde ein solcher Aufbau einer SQL Transaktion aussehen?
Ich hätte mich nun einige Zeit damit beschäftigt, bekomme aber ohne Beispiel zum "hineindenken" nicht viel hin.
Ich hoffe Ihr könnt mir weiterhelfen!
30.10.2017, 17:31 Uhr
Vielleicht hilft dir meine kürzliche Frage:
https://de.industryarena.com/heidenhain/for...0--77789-3.html
https://de.industryarena.com/heidenhain/for...0--77789-3.html
--------------------
!! Mein alter Nickname: canon !!
Beginnt man das System zu hinterfragen, so erkennt man deutlich, dass die „Wahrheit“ zumeist entgegengesetzt des scheinbaren zu finden ist.
Beginnt man das System zu hinterfragen, so erkennt man deutlich, dass die „Wahrheit“ zumeist entgegengesetzt des scheinbaren zu finden ist.
- Wenn wir uns heute keine Zeit für unsere Gesundheit nehmen, werden wir uns später viel Zeit für unsere Krankheiten nehmen müssen.
- Wenn es klemmt - wende Gewalt an. Wenn es kaputt geht, hätte es sowieso erneuert werden müssen.
30.10.2017, 20:58 Uhr
Hallo,
SQL ist im aktuellen Handbuch sehr ausführlich und mit Beispielen beschrieben
https://content.heidenhain.de/doku/tnc_guid...b/892903-16.pdf
Kapitel 10.9 SQL
SQL ist im aktuellen Handbuch sehr ausführlich und mit Beispielen beschrieben
https://content.heidenhain.de/doku/tnc_guid...b/892903-16.pdf
Kapitel 10.9 SQL
--------------------
Gruß
Schwindl
Schwindl
30.10.2017, 21:01 Uhr
Danke für die Hilfe, mit diesem Beispiel habe Ich mir auch bereits einiges erarbeitet, scheitere jedoch immer noch an der SQL FETCH zeile, welche q werte werden hier eingetragen, und was bewirken diese?
Mein gewünschter programmaufbau ist schematisch folgender:
Platzhalter für Tabelle festlegen ✔️
Pfad zur Tabelle mit dem Platzhalter verknüpfen ✔️
Spalte PROGRAM dem Parameter QS10 zuordnen ✔️
Wert aus Spalte PROGRAM lesen bei Zeile p_nr xy ✔️
Parameter QS10 abändern ✔️
Parameter QS10 in die gleiche Spalte und Zeile schreiben aus der er gelesen wurde, ( ich glaube mit SQL COMMIT ) ❌
An welchen Stellen benötige Ich die Funktion Fetch und welche q werte werden hier eingetragen?
Mein gewünschter programmaufbau ist schematisch folgender:
Platzhalter für Tabelle festlegen ✔️
Pfad zur Tabelle mit dem Platzhalter verknüpfen ✔️
Spalte PROGRAM dem Parameter QS10 zuordnen ✔️
Wert aus Spalte PROGRAM lesen bei Zeile p_nr xy ✔️
Parameter QS10 abändern ✔️
Parameter QS10 in die gleiche Spalte und Zeile schreiben aus der er gelesen wurde, ( ich glaube mit SQL COMMIT ) ❌
An welchen Stellen benötige Ich die Funktion Fetch und welche q werte werden hier eingetragen?
30.10.2017, 21:01 Uhr
Danke für die Hilfe, mit diesem Beispiel habe Ich mir auch bereits einiges erarbeitet, scheitere jedoch immer noch an der SQL FETCH zeile, welche q werte werden hier eingetragen, und was bewirken diese?
Mein gewünschter programmaufbau ist schematisch folgender:
Platzhalter für Tabelle festlegen ✔️
Pfad zur Tabelle mit dem Platzhalter verknüpfen ✔️
Spalte PROGRAM dem Parameter QS10 zuordnen ✔️
Wert aus Spalte PROGRAM lesen bei Zeile p_nr xy ✔️
Parameter QS10 abändern ✔️
Parameter QS10 in die gleiche Spalte und Zeile schreiben aus der er gelesen wurde, ( ich glaube mit SQL COMMIT ) ❌
An welchen Stellen benötige Ich die Funktion Fetch und welche q werte werden hier eingetragen?
Mein gewünschter programmaufbau ist schematisch folgender:
Platzhalter für Tabelle festlegen ✔️
Pfad zur Tabelle mit dem Platzhalter verknüpfen ✔️
Spalte PROGRAM dem Parameter QS10 zuordnen ✔️
Wert aus Spalte PROGRAM lesen bei Zeile p_nr xy ✔️
Parameter QS10 abändern ✔️
Parameter QS10 in die gleiche Spalte und Zeile schreiben aus der er gelesen wurde, ( ich glaube mit SQL COMMIT ) ❌
An welchen Stellen benötige Ich die Funktion Fetch und welche q werte werden hier eingetragen?
30.10.2017, 21:09 Uhr
Fetch ist zum lesen, commit zum schreiben.
Wenn du ein Beispiel brauchst, kann ich dir am Donnerstag was zusenden.
Der Beitrag wurde von schwindl bearbeitet: 30.10.2017, 21:10 Uhr
Wenn du ein Beispiel brauchst, kann ich dir am Donnerstag was zusenden.
Der Beitrag wurde von schwindl bearbeitet: 30.10.2017, 21:10 Uhr
--------------------
Gruß
Schwindl
Schwindl
30.10.2017, 21:23 Uhr
Wäre sehr nett wenn Sie mir etwas zusenden könnten, mit der neuen Anleitung kommt etwas mehr klarheit in die Sache, werde morgen wieder versuchen etwas auf die Beine zu stellen.
Lg Ludas
Lg Ludas
31.10.2017, 12:57 Uhr
Ich komme nicht dahinter...
Hier mein aktueller stand:
45 SQL Q1 "CREATE SYNONYM TABELLE FOR TNC:\PALETTEN\LPC.TAB"
46 SQL BIND QS1 "TABELLE.PROGRAM"
47 SQL SELECT QS2 "SELECT PROGRAM FROM TABELLE WHERE NR=1"
48 QS2 = "TNC:\PROGRAMME\BEISPIEL.H"
Der gelesene wert wird richtig in parameter QS2 übergeben, jedoch kann ich in keiner der Funktionen für Schreiboperationen einen QS Parameter als SQL adresse angeben und meine Tabelle somit nicht ändern, kann mit sql überhaupt ein text in eine Tabelle geschrieben werden?
Hier mein aktueller stand:
45 SQL Q1 "CREATE SYNONYM TABELLE FOR TNC:\PALETTEN\LPC.TAB"
46 SQL BIND QS1 "TABELLE.PROGRAM"
47 SQL SELECT QS2 "SELECT PROGRAM FROM TABELLE WHERE NR=1"
48 QS2 = "TNC:\PROGRAMME\BEISPIEL.H"
Der gelesene wert wird richtig in parameter QS2 übergeben, jedoch kann ich in keiner der Funktionen für Schreiboperationen einen QS Parameter als SQL adresse angeben und meine Tabelle somit nicht ändern, kann mit sql überhaupt ein text in eine Tabelle geschrieben werden?
31.10.2017, 16:51 Uhr
Ja, das geht. Ich schicke dir am Donnerstag eine passende Syntax
--------------------
Gruß
Schwindl
Schwindl
02.11.2017, 17:19 Uhr
Ich komme nicht dahinter...
Hier mein aktueller stand:
45 SQL Q1 "CREATE SYNONYM TABELLE FOR TNC:\PALETTEN\LPC.TAB"
46 SQL BIND QS1 "TABELLE.PROGRAM"
47 SQL SELECT QS2 "SELECT PROGRAM FROM TABELLE WHERE NR=1"
48 QS2 = "TNC:\PROGRAMME\BEISPIEL.H"
Der gelesene wert wird richtig in parameter QS2 übergeben, jedoch kann ich in keiner der Funktionen für Schreiboperationen einen QS Parameter als SQL adresse angeben und meine Tabelle somit nicht ändern, kann mit sql überhaupt ein text in eine Tabelle geschrieben werden?
Hier mein aktueller stand:
45 SQL Q1 "CREATE SYNONYM TABELLE FOR TNC:\PALETTEN\LPC.TAB"
46 SQL BIND QS1 "TABELLE.PROGRAM"
47 SQL SELECT QS2 "SELECT PROGRAM FROM TABELLE WHERE NR=1"
48 QS2 = "TNC:\PROGRAMME\BEISPIEL.H"
Der gelesene wert wird richtig in parameter QS2 übergeben, jedoch kann ich in keiner der Funktionen für Schreiboperationen einen QS Parameter als SQL adresse angeben und meine Tabelle somit nicht ändern, kann mit sql überhaupt ein text in eine Tabelle geschrieben werden?
Hallo,
so sollte es gehen:
1 ;Pfad vom aktuellen Programm auslesen und in Zeile 0 schreiben
2 SQL Q1 "CREATE SYNONYM my_table FOR 'TNC:\nc_prog\LPC.tab'"
3 QS1 = SYSSTR( ID10010 NR1 )
4 SQL BIND QS1 "my_table.PROGRAMM"
5 SQL QL2 "SELECT PROGRAMM FROM my_table WHERE NR=0"
6 SQL UPDATE Q1 HANDLE QL2
7 SQL COMMIT Q1 HANDLE QL2
8 SQL BIND QS1
9 ;Pfad vom aktuellen Programm auslesen und in Zeile 0 schreiben
10 ;Zeile variabel
11 QL1 = 1
12 SQL Q1 "CREATE SYNONYM my_table FOR 'TNC:\nc_prog\LPC.tab'"
13 QS1 = SYSSTR( ID10010 NR1 )
14 SQL BIND QS1 "my_table.PROGRAMM"
15 SQL QL2 "SELECT PROGRAMM FROM my_table WHERE NR=:'QL1'"
16 SQL UPDATE Q1 HANDLE QL2
17 SQL COMMIT Q1 HANDLE QL2
18 SQL BIND QS1
Angehängte Datei(en)
SQL_COMMANDS.H ( 3.22KB )
Anzahl der Downloads: 83
BeschreibungSQL.pdf ( 59.08KB ) Anzahl der Downloads: 111
BeschreibungSQL.pdf ( 59.08KB ) Anzahl der Downloads: 111
--------------------
Gruß
Schwindl
Schwindl
02.11.2017, 19:16 Uhr
Danke für die Hilfe!
Mit den Beispielen macht die ganze Sache nun auch Sinn für mich!
Mit leichten abänderungen funktioniert nun alles wie gewollt!
Mit den Beispielen macht die ganze Sache nun auch Sinn für mich!
Mit leichten abänderungen funktioniert nun alles wie gewollt!
07.11.2024, 19:00 Uhr
Hallo,
Ich bin gerade ebenfalls bei dem Thema SQL dran. Bei mir erscheint immer die Fehlermeldung „Ungültiger SQL handle“ bei der Zeile „SQL UPDATE Q1 HANDLE QL2“. Woran kann das liegen?
TNC640 340590 08 SP5
Viele Grüße MG90
Ich bin gerade ebenfalls bei dem Thema SQL dran. Bei mir erscheint immer die Fehlermeldung „Ungültiger SQL handle“ bei der Zeile „SQL UPDATE Q1 HANDLE QL2“. Woran kann das liegen?
TNC640 340590 08 SP5
Viele Grüße MG90
07.11.2024, 20:27 Uhr
Wie sieht denn dein Programm aus?
--------------------
Gruß
Schwindl
Schwindl
07.11.2024, 21:16 Uhr
QS1 = "TEST"
QL1 = 150
SQL Q1 "DROP SYNONYM my_table"
SQL Q1 "CREATE SYNONYM my table FOR 'TNC: table\tool.t'"
SQL BIND QS1 "my_ table.NAME"
SQL BIND QL1 "my_ table.L"
SQL QL2 "SELECT NAME,L FROM my_table WHERE NR=0"
SQL UPDATE Q1 HANDLE QL2
SQL COMMIT Q1 HANDLE QL2
SQL BIND QS1
SQL BIND QL1
War für mich erst mal zum testen. Falls ich es mal hinbekommen sollte :-), will ich später damit in der tchprobe.tp die Werte von F_PREPOS zwischen FMAX_MACHINE und FMAX_PROBE wechseln können.
QL1 = 150
SQL Q1 "DROP SYNONYM my_table"
SQL Q1 "CREATE SYNONYM my table FOR 'TNC: table\tool.t'"
SQL BIND QS1 "my_ table.NAME"
SQL BIND QL1 "my_ table.L"
SQL QL2 "SELECT NAME,L FROM my_table WHERE NR=0"
SQL UPDATE Q1 HANDLE QL2
SQL COMMIT Q1 HANDLE QL2
SQL BIND QS1
SQL BIND QL1
War für mich erst mal zum testen. Falls ich es mal hinbekommen sollte :-), will ich später damit in der tchprobe.tp die Werte von F_PREPOS zwischen FMAX_MACHINE und FMAX_PROBE wechseln können.
07.11.2024, 21:20 Uhr
SQL Q1 "CREATE SYNONYM my table FOR 'TNC: table\tool.t'"
SQL BIND QS1 "my_ table.NAME"
SQL BIND QL1 "my_ table.L"
Zwei Schreibweisen für my_table
my table
my_ table
SQL BIND QS1 "my_ table.NAME"
SQL BIND QL1 "my_ table.L"
Zwei Schreibweisen für my_table
my table
my_ table
--------------------
Gruß
Schwindl
Schwindl
3 Besucher lesen dieses Thema (Gäste: 3)
0 Mitglieder: