Step 7 Unterschied zwischen SFC 20 BLKMOV und DB neu einspielen

AS3

Level-1
Beiträge
15
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
Ich hätte da mal eine Frage. Was für einen Unterschied gibt es zwischen SFC 20 BLKMOV und DB neu einspielen?

Ich habe einen DB in den ich Daten sammle, die ich später über eine CP ausdrucke. Es kommt immer mal vor, dass der Drucker nicht druckt. Ich bin davon ausgegangen das irgend etwas im DB steht, was die CP oder der Drucker nicht versteht. Deshalb einfach den Offline DB wieder eingespielt und alles läuft wieder. klappt auch wunderbar.

Jetzt meine eigentliches Problem:

Ich habe den Drucker DB kopiert und spiele die Kopie über den SFC20 BLKMOV auf den Orginal DB. Aber danach geht der Drucker immer noch nicht wieder. Spiele ich aber DB aber über das PG wieder ein funktioniert es. Gibt es einen Unterschied zwischen SFC 20 BLKMOV und DB neu einspielen?

Gruß AS3
 
Hallo AS3,

der SFC 20 kopiert die aktualwerte des Datenbausteins. Wenn du den Baustein über das PG lädst, werden die Aktualwerte mit den im Offline-Baustein gespeicherten Werten überschrieben.

Michael
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Michael,
Ich habe den Offline DB 61 (Drucker-DB) kopiert und als DB661 abgespeichert. Dann DB661 eingepielt. In der Grundstellungskette schreibe ich dann die Werte mit dem SFC20 vom DB661 in den DB61.
Das kopieren funktioniert auch soweit habe mal was in DB661 gesteuert und nach der Grundstellungfahrt stand das dann auch im DB61.

Gruß AS
 
Zuletzt bearbeitet:
Hallo,
Unterschied zwischen SFC 20 BLKMOV und DB neu einspielen?

Ich habe einen DB in den ich Daten sammle, die ich später über eine CP ausdrucke. Es kommt immer mal vor, dass der Drucker nicht druckt. Ich bin davon ausgegangen das irgend etwas im DB steht, was die CP oder der Drucker nicht versteht. Deshalb einfach den Offline DB wieder eingespielt und alles läuft wieder. klappt auch wunderbar.

Jetzt meine eigentliches Problem:

Ich habe den Drucker DB kopiert und spiele die Kopie über den SFC20 BLKMOV auf den Orginal DB. Aber danach geht der Drucker immer noch nicht wieder. Spiele ich aber DB aber über das PG wieder ein funktioniert es. Gibt es einen Unterschied zwischen SFC 20 BLKMOV und DB neu einspielen?

Gruß AS3


SFC20 kopiert die Daten von einem Bereich in einen anderen.
DB neu übertragen Initialisiert den Online DB mit Initialwerten des Offline DBs.
D.h. er Online DB wird auf Start-Werte zurückgesetzt (evtl alles auf 0 geschrieben).

Da Du ja den DB im Anwenderprogramm in einen anderen sicherst, wird wohl dort auch der Auftrag mit den Daten enthalten sein welcher der Drucker nicht versteht (Steuerzeichen?),
Warum soll wen Du nun die Daten zurück kopiert dies dann wieder funktionieren?

Evtl. solltest den DB nur dann kopieren (SFC20), wenn der Druckauftrag auch erfolgreich war!
Somit würde immer ein Datensatz zurückgespielt werden welcher funktionell wäre.

Alternative wäre, wenn der DB in der Offline Datenhaltung keine besonderen Init-Werte enthält (also überall 0),
dann könnte man auch ggf. den DB im AG löschen (SFC23) und dann erneut im AG anlegen (SFC22) …
Oder den vorhandenen ggf. mit dem Fill (SFC21) mit 0 Werten beschreiben.
 
hi Boxy,
Habe natürlich nicht, den nicht funktionierenden DB kopiert. Habe den Offline DB kopiert, den ich auch immer einspiele.
Aber das mit den SFC21 werde ich mal probieren.

AS3
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Einen DB neu in die CPU laden initialisiert den Online-DB mit den Aktualwerten des Offline-DB. Die Initialwerte des Offline-DB haben auf den Online-DB keinen Einfluß.

Vergleiche die Aktualwerte jeder einzelnen Variable Deines Offline-DB61 (Ansicht > Datensicht) und des Online-DB661 (Beobachten mit der Brille). Dann wirst Du finden, was beim Kopieren per SFC20 anders ist als beim neu Laden des DB. Denke bei jedem Unterschied darüber nach, welcher Wert der bessere/richtige ist.

Allerdings ist das Überbügeln des kompletten DB ja eher die Holzhammer-Methode (geeignet für schnelle "Reparatur" ohne Einschaltung des Hirn), welche nicht die Ursache des Problems bekämpft sondern nur die Auswirkungen korrigiert. Mir scheint, daß Dein Programm nicht gut genug geschrieben ist. Vermutlich arbeitet es mit nicht (oder nicht immer) korrekt initialisierten Variablen-Werten. Überprüfe Dein Programm, ob es wirklich jeder Variablen vor der Verwendung die nötigen Werte zuweist oder ob es sich auf mehr oder weniger "zufällige" Werte verläßt.

Harald
 
Zurück
Oben