Seite 1 von 1

[gelöst] migration firebird DATEDIFF

Verfasst: Di 14. Apr 2020, 11:43
von Ruedi
hallo,
ich habe die ganze Migration bis auf folgendes Problem (mit Ach und Krach) gelöst.
Bei der Abfrage in Base:
SELECT "Betriebsmittel"."GEGENSTAND", "Betriebsmittel"."NEUWERT", "Betriebsmittel"."ANSCHAFFUNGSJAHR", "Betriebsmittel"."LEBENSDAUER" AS "LEBENSDAUER Mt.", CASEWHEN( "NEUWERT" - ( "NEUWERT" * DATEDIFF( month, "ANSCHAFFUNGSJAHR", CURRENT_DATE ) / "LEBENSDAUER" ) >= 0, "NEUWERT" - ( "NEUWERT" * DATEDIFF( "month", "ANSCHAFFUNGSJAHR", CURRENT_DATE ) / "LEBENSDAUER" ), 0 ) AS "Zeitwert Fr.", "Abschluss"."Titel" FROM "Abschluss", "Betriebsmittel"

bekomme ich entweder Syntax-Error oder folgende Fehlermeldung: syntax error, unexpected $end, expecting BETWEEN or IN or SQL_TOKEN_LIKE

ich habe gelesen, dass 'mm' durch month oder "month" ersetzt werden muss, aber keine Variante funktioniert.
kann mir jemand weiter helfen? danke

Re: migration firebird

Verfasst: Di 14. Apr 2020, 12:01
von RobertG
Hallo Ruedi,

hast Du auch das Folgende beachtet:
Firebird:
Der Eintrag in string entscheidet darüber, in welcher Einheit der Unterschied wiedergegeben wird: millisecond, second, minute, hour, day, week, month, year. Die string-Eingaben dürfen nicht mit einfachen Anführungszeichen maskiert sein.
Nur im direkten SQL-Modus
Da die grafische Benutzeroberfläche von Base hier streikt musst Du in der SQL-Ansicht auf "SQL-Befehl direkt ausführen" klicken.

Gruß

Robert

Re: migration firebird DATEDIFF

Verfasst: Di 14. Apr 2020, 15:12
von Ruedi
danke für den Tipp, das "Problem" DATEDIFF ist so gelöst. Dazu kam das "Problem" CASEWHEN. Ist auch gelöst, geändert nach der Syntax von Firebird:
CASE
WHEN <bool_exp1> THEN result1
WHEN <bool_exp2> THEN result2
...
[ELSE defaultresult]
END

Nun das letzte Problem: wo setze ich diesen Thread auf "Gelöst"?

P.S. noch ein Hinweis zur "Migrationsanleitung": Ich habe das mit der Datenbank entpacken, ändern (db: parameter-name-substitution = "false") und archivieren erst nach dem Suchen in weiteren Foren kapiert. Ein bisschen ausführlicher wäre wünschenswert. z.B.
- xyz.odb in xyz.zip umbenennen, entpacken
- content.xml in ein anderes Verzeichnis verschieben, ändern
- die verbliebenen Dateien einem Archiv hinzufügen (xyz.zip)
- content.xml mit dem Zip-Tool zu einem Archiv hinzufügen (xyz.zip)
- xyz.zip in xyz.odb umbenennen.

Re: migration firebird DATEDIFF

Verfasst: Di 14. Apr 2020, 17:51
von RobertG
Hallo Ruedi,

auf "Gelöst" kannst Du hier vermutlich nur etwas setzen, indem Du beim Beginn des Threads die Titelzeile änderst. Da ich noch nie eine Frage gestellt habe, habe ich das auch noch nie probiert.

Wenn Du mir das mit der db: parameter-name-substitution = "false" genauer aufschreiben könntest, dann wäre das gut. Ich kann hier eine Datenbank ganz normal mit meinem Packprogramm unter Linux öffnen, die content.xml darin editieren und die Datenbankdatei speichern und schließen.

Im Handbuch habe ich das im Anhang unter "Datenbankreparatur" auch ausführlicher stehen. Vielleicht sollte ich zumindest auf meiner Homepage einen Verweis darauf machen: https://www.familiegrosskopf.de/robert/ ... hang.xhtml

Gruß

Robert

Re: [gelöst] migration firebird DATEDIFF

Verfasst: Mi 15. Apr 2020, 09:59
von Ruedi
Salue Robert,
Wenn Du mir das mit der db: parameter-name-substitution = "false" genauer aufschreiben könntest, dann wäre das gut. Ich kann hier eine Datenbank ganz normal mit meinem Packprogramm unter Linux öffnen, die content.xml darin editieren und die Datenbankdatei speichern und schließen.
genauer erübrigt sich, ich habe das nun auch mit Windows 10 so hinbekommen (ohne Änderung der Endung (zip) und content.xml direkt geändert). Wieso ich die Datenbank nach der Aenderung nicht öffnen konnte ist mir unklar.