HEIDENHAIN

SQL Programierung

Beitrag 30.10.2017, 14:51 Uhr
ludas
Level 1 = Community-Lehrling
*
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!
   
Beitrag 30.10.2017, 17:31 Uhr
x90cr
Level 7 = Community-Professor
*******
Vielleicht hilft dir meine kürzliche Frage:
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.
  • 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.
   
Beitrag 30.10.2017, 20:58 Uhr
schwindl
Level 7 = Community-Professor
*******
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


--------------------
Gruß
Schwindl
   
Beitrag 30.10.2017, 21:01 Uhr
ludas
Level 1 = Community-Lehrling
*
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?
   
Beitrag 30.10.2017, 21:01 Uhr
ludas
Level 1 = Community-Lehrling
*
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?
   
Beitrag 30.10.2017, 21:09 Uhr
schwindl
Level 7 = Community-Professor
*******
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


--------------------
Gruß
Schwindl
   
Beitrag 30.10.2017, 21:23 Uhr
ludas
Level 1 = Community-Lehrling
*
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
   
Beitrag 31.10.2017, 12:57 Uhr
ludas
Level 1 = Community-Lehrling
*
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?
   
Beitrag 31.10.2017, 16:51 Uhr
schwindl
Level 7 = Community-Professor
*******
Ja, das geht. Ich schicke dir am Donnerstag eine passende Syntax


--------------------
Gruß
Schwindl
   
Beitrag 02.11.2017, 17:19 Uhr
schwindl
Level 7 = Community-Professor
*******
QUOTE (ludas @ 31.10.2017, 13: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?

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)
Angehängte Datei  SQL_COMMANDS.H ( 3.22KB ) Anzahl der Downloads: 83
Angehängte Datei  BeschreibungSQL.pdf ( 59.08KB ) Anzahl der Downloads: 111
 


--------------------
Gruß
Schwindl
   
Beitrag 02.11.2017, 19:16 Uhr
ludas
Level 1 = Community-Lehrling
*
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!
   
Beitrag 07.11.2024, 19:00 Uhr
MG90
Level 1 = Community-Lehrling
*
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
   
Beitrag 07.11.2024, 20:27 Uhr
schwindl
Level 7 = Community-Professor
*******
Wie sieht denn dein Programm aus?


--------------------
Gruß
Schwindl
   
Beitrag 07.11.2024, 21:16 Uhr
MG90
Level 1 = Community-Lehrling
*
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.
   
Beitrag 07.11.2024, 21:20 Uhr
schwindl
Level 7 = Community-Professor
*******
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


--------------------
Gruß
Schwindl
   
2 Besucher lesen dieses Thema (Gäste: 2)
0 Mitglieder: