[SCL] DATE_AND_TIME aus DB holen

lazka

Level-1
Beiträge
9
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Also. die AUfgabenstellung ist ja recht simpel:

Ich mach einen FC in SCL.
in einem DB hab ich ein DATE_AND_TIME und möchte das jetzt im FC auf ein VAR_TEMP der auch vom Typ DATE_AND_TIME is schieben.

pseudocode: "dat_temp := DB1[34-38]"

nur wie schieb ich das rüber, andersrum mach ichs mit dem SFC20 aber so...

hm, jetzt fällt mir was ein :)

mal schaun obs geht wenn ich ein temp array mit 8 byte mach, einzeln rüberscheib und dann block_move...

Aber wenn wer eine einfache lösung kennt, wärs super!!
 
hi,

pseudocode:

dat_temp := "dein_DB".deineDTVariable;

Gilt wenn beide vom Typ gleich deklariert sind.

Gruss Andy
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die schnelle Antwort!
Das einzige Problem ist, dass ich das in einer for-Schleife hab und die Variablen per index ansprechen muss (ein DB mit mehreren gleichen UTDs die alle abgearbeitet werden müssen). Also kommt das glaube ich nicht in frage...

edit:
dat_temp_array[1]:=DB_chips.DD[index+36];
dat_temp_array[2]:=DB_chips.DD[index+36+4];
error:=BLKMOV(SRCBLK := dat_temp_array, DSTBLK := dat_temp);

das scheint zu gehen :) mal schaun...
 
Zuletzt bearbeitet:
Achso,
kenn jetzt deine Struktur nicht, brauchst nur index1 hochzählen.

dat_temp := "dein_DB".deineDTVariable[index1];

Oder du hast in der Struktur ein Array mit deinen UDT´s?


dat_temp := "dein_DB".Bereich[UDT_index].deineDTVariable[index1];

Evtl. musst halt deine DB Struktur noch mal überarbeiten.
 
Achso,
kenn jetzt deine Struktur nicht, brauchst nur index1 hochzählen.

dat_temp := "dein_DB".deineDTVariable[index1];

Oder du hast in der Struktur ein Array mit deinen UDT´s?


dat_temp := "dein_DB".Bereich[UDT_index].deineDTVariable[index1];

Evtl. musst halt deine DB Struktur noch mal überarbeiten.

es ist ein DB mit 5 UDTs (100 Byte pro) und jeder UDT enhält unter anderem ein DATE_AND_TIME(bei Byte 36).
Ich glaub du hast es eh verstanden... Aber könntest du mir vlt. mal ein Beispiel anschreiben? Bin ziemlicher Anfänger..

DB2 >> "chip1", "chip2", "chip3", "chip4", "chip5" >> je ein "time_last"
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die schnelle Antwort!
Das einzige Problem ist, dass ich das in einer for-Schleife hab und die Variablen per index ansprechen muss (ein DB mit mehreren gleichen UTDs die alle abgearbeitet werden müssen). Also kommt das glaube ich nicht in frage...

edit:
dat_temp_array[1]:=DB_chips.DD[index+36];
dat_temp_array[2]:=DB_chips.DD[index+36+4];
error:=BLKMOV(SRCBLK := dat_temp_array, DSTBLK := dat_temp);

das scheint zu gehen :) mal schaun...

Ja, so gehts zur Not auch.
manchmal gehts halt nicht anders.
Aber wenn sich am DB was verschiebt, ist es mit einfach SCL neu übersetzen hier leider nicht getan.
Hier ist der Symbolische Zugriff einfach besser.

Also wenn es nicht zuviel Aufwand ist würd ich die DB Struktur ändern.
So könnte der Zugriff dann aussehen.
dat_temp := "dein_DB".deineUDT[index].deineDTVariable;

Gruss Andy
 
es ist ein DB mit 5 UDTs (100 Byte pro) und jeder UDT enhält unter anderem ein DATE_AND_TIME(bei Byte 36).
Ich glaub du hast es eh verstanden... Aber könntest du mir vlt. mal ein Beispiel anschreiben? Bin ziemlicher Anfänger..

DB2 >> "chip1", "chip2", "chip3", "chip4", "chip5" >> je ein "time_last"

Ok,
Wahrschneinlich hast deinen DB mit der Hand (Global_DB) erstellt.
DB Öffnen und in die deklarationssicht wechseln.

Mach ne neue Zeile:
Unter namen zb.Chips, unter Typ Array[1..10] (1-die anzahl deiner chips),return drücken :ROFLMAO:
dann landest wieder im Feld Typ da gibts deine UDT chips an.
 

Anhänge

  • DB_array.jpg
    DB_array.jpg
    64,2 KB · Aufrufe: 17
  • DB_array2.jpg
    DB_array2.jpg
    290,5 KB · Aufrufe: 22
ach!! du meinst ein UDT-Array!!! so geht das also :-D (hab die einfach hintereinander reingehaut, so wies mein Prof immer macht)
dass ich da nicht drann gedacht hab. :rolleyes:

danke


edit: hast meine fehler auch schon geraten ;) wieder was gelernt, vielen dank nochmal!!!
 
Zurück
Oben