TIA DB Werte komplett in einen gleichen DB Kopieren Optimierter Baustein

Chris80

Level-2
Beiträge
191
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

Ich habe bin gerade an ein Projekt wo es einen DB gibt, indem die Rezeptwerte hinterlegt sind.
Die Anlage läuft jetzt seit einem Jahr und es sind alle Rezepte angelegt.

Der Kunde möchte jetzt das diese Werte als Werkseinstellung gespeichert werden und bei bedarf wieder aufgerufen werden können.

Ich habe also den DB kopiert.

DB_Rezepte ----> DB_Rezepte_Werkseinstellung.

So jetzt soll per Knopfdruck alle Werte von DB_Rezepte_Werkseinstellung nach DB_Rezepte kopiert werden.

Hatte an POKE_BLK: oder BLKMOV: gedacht ... aber irgendwie klappt das nicht.

Hat jemand eine andere einfache Idee?

Mfg C.Hellmig
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Entweder alles in einen UDT reinmachen und in jedem DB den deklarieren. Dann ist kopieren total simpel.
Oder DBs umstellen auf nicht optimiert.
Mit ganz klassischer LOOP-Schleife in AWL L DBW[AR1,p#0.0] sollte das funktionieren. Welche FUP/KOP Varianten da funktionieren weiß ich so auch nicht auswendig.
 
Mit ganz klassischer LOOP-Schleife in AWL L DBW[AR1,p#0.0] sollte das funktionieren

Ich bin mir sicher es gibt zeitgerechtere Lösungen dafür ( symbolisch ).

Hierfür ist folgende Frage entscheidend:
Wie sind dann die Werte im DB abgelegt? Einzelne Variablen, Strukturen, Array......
 
Klar, ist Absolut nicht optimal.
Wenn er aber nicht viel ändern will und der DB groß ist, ist es es mit die einfachste Lösung im Nachhinein. Und danach wurde gefragt.
Sonst muss es er ja vor jedem Aufruf dieses DBs den DT/Struc Namen tippen. Und da es ja kein globales ersetzen gibt kann das viel Arbeit sein.
Bei 10 Parameter und 15 Aufrufen ist ein DT sicherlich DIE Lösung.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
l11FHI2B3EgFHI14JwjC YhC ahNrrn 39OGlmllvJxggAAAABJRU5ErkJggg==
DB_Rezept.PNGDB_Rezept.jpg
 
Zuletzt bearbeitet:
Theoretisch müsste aber auch ganz einfach gehen:
DB kopieren und einfachen, bedingten MOVE mit den jeweiligen DB-Namen (ohne . oder sonstiges)
Die Struktur muss aber natürlich immer identisch sein/bleiben.
 
Warum den ganzen DB kopieren? Interessant ist ja nur "Nr". Irgendwo eine remanente Struktur "Nr_Werkseinstellung" anlegen. Mit deinem Button kannst du dann mittels einfacher "MOVE" Box die Daten zurückkopieren.

Edit: Bei den boolschen Variablen (uebernehmen, geändert usw) würde ich keine Momentaufnahme machen. Lieber "Nr" und "Aktuell" als Einstellwert kennzeichnen, und dann nur nur eine Momentaufnahme der Einstellwerte machen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich weiß jetzt auch nicht was Chris80 genau kopieren will. Erst war ganzer DB angefragt.
Sollen alle 20 Rezepte mit ein und den selben Werten initialisiert werden oder sollen 20 individuelle Backups zurück kopiert werden?
 
Entweder alles in einen UDT reinmachen und in jedem DB den deklarieren. Dann ist kopieren total simpel.
+1

Chris80, du hast ja schon die Daten als Rezept_DT deklariert.
Einfach die dementsprechende Daten in den DB_Rezepte_Werkseinstellung mit die Rezept_DT deklarieren.

Dann einfach:
"DB_Rezepte".Nr[1] := "DB_Rezepte_Werkseinstellung".Standard_rezept ;
o.Ä
 
Also ich will einfach die ganzen Startwerte von den DB Rezept_Speicher in die aktuallwerte von den DB Rezept haben.

Die Beiden DB´s sind identisch.

Also wenn der kunde seine Rezepte verstellt hat und einfach alle Werte wieder auf ursprung haben will werden einfach die werte von dem Speicher auf den Rezept_DB übertragen.
 
Code:
FOR i:=1 to 20 DO
[COLOR=#333333][COLOR=#333333]"DB_Rezepte".Nr[i] := [/COLOR][/COLOR][COLOR=#333333][COLOR=#333333]"DB_Rezepte_Werkseinstellung".Standard_rezept ;
END_FOR ;[/COLOR][/COLOR]

Anstatt eine separaten DB, wurde ich Rezept nr. 0 als die Standard-Rezept reservieren.

Code:
FOR i:=1 to 20 DO
[COLOR=#333333][COLOR=#333333]"DB_Rezepte".Nr[i] := [/COLOR][/COLOR][COLOR=#333333]"DB_Rezepte".Nr[0][/COLOR][COLOR=#333333][COLOR=#333333] ;
END_FOR ;[/COLOR][/COLOR]
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich denk nicht dass er alle Rezepte mit den gleichen Werten haben möchte oder? Einmal alle 20 sichern, und dann wieder alle 20 (mit individuellen Werten) auf Knopfdruck retour.
 
Hallo sorry das ich mich jetzt erst melde, bin momentan etwas im Zeitdruck.

Also
FOR i:=1 to 20 DO
"DB_Rezepte".Nr := "DB_Rezepte".Nr ;
END_FOR ;

wäre das was ich bräuchte. Hier wird zwar der erste bereich vom DB nicht mit kopiert aber das ist nicht so schlimm.

Dachte gibt was einfacheres

Aber vielen Dank für euere Unterstützung. Und bleibt Gesund.

LG Christian Hellmig
 
Zuviel Werbung?
-> Hier kostenlos registrieren
FOR i:=1 to 20 DO
"DB_Rezepte".Nr := "DB_Rezepte".Nr ;
END_FOR ;


Der Code macht ja wenig Sinn, also eigentlich gar keinen :confused:

Du meinst vermutlich so etwas in der Art:
Code:
FOR i:=1 to 20 DO
[COLOR=#333333]    [COLOR=#333333]"Sicherung_Rezepte".Nr[i] := [/COLOR][/COLOR][COLOR=#333333]"DB_Rezepte".Nr[i][/COLOR][COLOR=#333333][COLOR=#333333] ;
END_FOR ;
[/COLOR][/COLOR]

Dachte gibt was einfacheres
3 Zeilen gut lesbarer Code, noch einfacher :confused:
 
Zuletzt bearbeitet:
Wenn die Arrays die gleiche Größe und Datentyp haben, kannst du auch alles auf einmal zuweisen.
Code:
[COLOR=#333333][COLOR=#333333]"Sicherung_Rezepte".Nr := [/COLOR][/COLOR][COLOR=#333333]"DB_Rezepte".Nr[/COLOR][COLOR=#333333][COLOR=#333333];[/COLOR][/COLOR]
 
Zurück
Oben