Ich benötige ein kleines OMApi-Script, finde im Handbuch aber nur Einzelbefehle. Mir geht es um eine Programmschleife, die alle Datensätze durchläuft. Falls das von mir hinzugefügte Datenfeld „scandate“ befüllt ist, dann setzte „newdate“ gleich „scandate“.
SQL ist hier besser geeignet
Für die genannte Anforderung ist aber eine SQL-Anweisung besser, einfacher und schneller.
Bevor Sie SQL-Befehle senden, insbesondere wenn Sie diese nicht vollständig verstehen, legen Sie unbedingt eine Sicherungskopie der Datenbank an.
In diesem Beispiel werden massenhaft Daten geändert. Falls Sie ein revisionssicheres GoBD-Archiv nutzen, dann führen Sie dies nicht für die Standardfelder, wie z. B. das Belegdatum aus. Es würde bei einer Prüfung zu vielen Meldungen „Verstoß gegen die revisionssichere Aufbewahrung“ führen.
Für SQL sind die datenbankinternen Feldnamen erforderlich. Für das neue Zielfeld ist dies „newdate“ für das Scandatum „scandate“. Unter
finden Sie die Liste mit den Feldnamen.1. Wählen Sie in Office Manager DMS den Menü
. Das neue Hauptmenü wird sichtbar.Zur Kontrolle die betroffenen Dokumente suchen
2. Öffnen Sie den SQL-Editor mit dem Menübefehl
.3. Geben Sie Folgendes in den Editor ein:
SELECT * FROM document
WHERE scandate IS NOT NULL
Dies sucht alle Datensätze in der Tabelle document, bei denen das Feld scandate „gefüllt“ ist, also Daten ungleich „nichts“ enthält.
4. Wählen Sie im Editor den Menübefehl
, die Dokumentdatensätze mit Scandatum werden gesucht.5. Schließen Sie den Editor und überprüfen Sie die gefundenen Dokumente in der Tabelle. Ändern Sie die WHERE-Klausel bei Bedarf so, dass nur noch die Dokumente in der Tabelle gelistet werden, die Sie ändern möchten.
Daten kopieren
Jetzt wird es ernst – führen Sie den Befehl nur aus, wenn Sie sich sicher sind.
6. Öffnen Sie erneut den SQL-Editor (
).7. Geben Sie folgenden Code in den Editor ein. Ersetzen Sie aber bei Bedarf die dritte Zeile durch dieselbe WHERE-Klausel, mit der Sie zuvor gesucht haben.
UPDATE document
SET newdate=scandate
WHERE scandate IS NOT NULL
8. Wenn Sie sich sicher sind und Sie eine aktuelle Sicherungskopie der Datenbank haben, dann führen Sie den Befehl mit
aus. „Temporäre Ergebnismenge“, weil dieser Befehl keine Ergebnismenge (kein SELECT) liefert.9. Schließen Sie den Editor und laden Sie die Daten neu aus der Datenbank, indem Sie auf
klicken.
Eigenen Kommentar schreiben oder eine Rückfrage stellen