Hallo Forum,
ich stehe vor einem größeren Problem: ich soll eine txt Datei importieren, die Parameter einer Maschine enthält. Das habe ich soweit gelöst. Die txt Datei enthält 8 Programme der Maschine, jedes dieser Programme enthält 250 Parameter. Momentan importiere ich alle Parameter in eine temporäre Datenbanktabelle und füge dann die Datensätze einer anderen Tabelle an. Das mache ich damit ich für jeden Parameter eine eindeutige ID bekomme. (Wie sich herausstellte kommen leider immer wieder neue Parameter zwischen den einzelnen Programmen dazu d.h. mit der eindeutigen parameter_id kann man brausen gehen :-(...) Ich muss auf die Parameterbezeichnung gehen. Nun mein Problem: Da in allen 8 Programmen die gleichen Variablennamen verwendet werden bekomme ich 8 x den Wert A01 zurück. Ich muss irgendwie beim Import noch die Programmnummer zu den Parametern dazu bekommen. Ich habe momentan keine Idee wie ich das beim Import berücksichtigen kann. In der txt Datei gibt es zwischen den einzelnen Programmen immer eine [CRC] Zeile.
Hat jemand eine Idee wie ich dieses Problem lösen kann.
LG
Friedrich
Die Daten in der Tabelle sehen so aus: (die Fett markierten hätte ich gerne angefügt)
Id import_nr parameter_id parmamerter_bezeichnung maschinen_id [programm_nr]
1 1 1 [CRC Programm 1] 1 1
2 1 2 A01 1 1
3 1 3 A02 1 1
4 1 4 B01 1 1
5 1 5 [CRC Programm 2] 1 2
6 1 6 A01 1 2
7 1 7 A02 1 2
8 1 8 B01 1 2
9 2 1 [CRC Programm 1] 1 1
10 2 2 A01 1 1
11 2 3 A02 1 1
12 2 4 B01 1 1
13 2 5 [CRC Programm 2] 1 2
14 2 6 A01 1 2
15 2 7 A02 1 2
16 2 8 B01 1 2
Hallo,
du könntest deine Anfügeabfrage so in der Art gestalten:
INSERT INTO DeineAnfuegeTabelle ( import_nr, parameter_id, parameter_bezeichnung, maschinen_id, programm_nr )
SELECT H.import_nr, H.parameter_id, H.parameter_bezeichnung, H.maschinen_id, Int(Mid([parameter_bezeichnung],15,1)) AS x
FROM HerkunftsTabelle H;
Vorausgesetzt programm_nr ist ein Zahlenfeld.
Holt die Programmnummer aus dem Taxt [CRC Programm 1] und fügt die 1 ins Feld programm_nr ein.
HTH
Hi database,
danke für deine Antwort. Leider steht im Bereich von [] nur [CRC: 16#1328791D] und nicht die Programmnummer. Ich weiß nur, dass ab der Erster [] d.h. laut Beispieltabelle Id 1 bis 4 Programm 1 ist und dann ab Id 5 bis 8 Programm 2...
LG Friedrich
naja, wenn in dieser [CRC ...] Zeichenfolge die Progrmmnummer nicht vorhanden ist, kann natürlich daraus auch keine Nummer gelesen werden.
Gibt es denn da keine Regelmäßigkeiten, die du dir zu Nutze machen kannst?
z.b. [CRC: 16#1328791D] bezeichnet IMMER Programm 1 und [CRC: 19#1377791X] bezeichnet IMMER Programm 2 ....
Hi,
Leider nicht und kann nicht einmal sagen, dass immer zwischen id x und id y Programm 1 ist. Wenn ein Parameter dazu kommt.... ist alles verschoben
Dann muss ich leider das Handtuch werfen - ohne erkennbare Regelmäßigkeit ist ja niemals ein Bezug herzustellen.
D.h. wenn diese CRC-Ausgaben immer zufällig sind gibt es keine wie auch immer geartete Möglichkeit daraus eine Programmnummer zu erkennen.
Wenn jetzt auch noch die Listenpositionen der Programmnummern wahlfrei ausfallen können ist's sowieso vorbei.
Nach deinen Ausführungen nehme ich an, dass Programm 1 einmal mit [CRC: 16#1328791D] bezeichnet wird und beim nächsten Auftreten mit einer anderen Bezeichnung.
Es müsste zumindest so sein, dass die CRC-Bezeichnungen für Programm 1 immer die gleichen sind usw.
p.s. der Vollständigkeit halber noch eine kleine Änderung an obiger SQL um nur auf die CRC-Zeilen zu reagieren:
INSERT INTO DeineAnfuegeTabelle ( import_nr, parameter_id, parameter_bezeichnung, maschinen_id, programm_nr )
SELECT H.import_nr, H.parameter_id, H.parameter_bezeichnung, H.maschinen_id,
IIf(Left([parameter_bezeichnung],2)="[C",Int(Mid([parameter_bezeichnung],15,1)),Null) AS x
FROM HerkunftsTabelle H;
hi database,
danke für deine hilfe! ich werde versuchen in der [crc] zeile eine regelmäßigkeit zu bekommen.
lg und nochx danke
friedrich
Hallo,
wenn dir das gelingen würde könnte man damit eine Hilfstabelle anlegen und so die Programmnummern durch einen JOIN bei der Anfügeabfrage holen.