Einzelnen Beitrag anzeigen

Papaschlumpf73
Online

Registriert seit: 3. Mär 2014
Ort: Berlin
435 Beiträge
 
Delphi 12 Athens
 
#1

Wie geht es weiter mit Delphi? Ernüchternde Support-Aussagen

  Alt 6. Jul 2022, 11:22
Datenbank: MS SQL-Server • Version: ab 2016 • Zugriff über: ADO
Bei mir im Schrank steht noch die Box mit Delphi 1. Schon damals war mir klar, dass Delphi für die Entwicklung von Datenbankanwendungen (wie) geschaffen war. Knapp 30 Jahre später, sieht das schon anders aus.

Meine Datenbankanwendungen arbeiten alle mit ADO-Verbindungen und greifen weitestgehend auf Microsoft SQL Server im lokalen Netzwerk zu. FireDAC habe ich nie benutzt, da ich i.V.m. mit VCL-Anwendungen keine Vorteile sehe und auch nicht bereit bin, für die Entwicklung reiner Client-Anwendungen eine Delphi Enterprise Lizenz zu bezahlen (das soll hier auch nicht das Thema sein).

Unter Verwendung neuerer OLE-DB-Provider z.B. „Microsoft-OLE DB-Treiber 19 für SQL Server“ i.V.m. SQL-Servern ab Version 2016 können viele Datensatzänderungen nicht mehr mit IrgendeinDataSet.Post gespeichert werden. Es wird öfters, jedoch nicht immer folgender Fehler ausgegeben:

„Die zum Aktualisieren angegebene Zeile wurde nicht gefunden. Einige Werte wurden seit dem letzten Lesen ggf. geändert.“

Das passiert vermehrt, wenn ein DateTime-Feld in der Datenbank Millisekunden enthält, die Delphi möglicherweise ignoriert. Beim Speichern des Datensatzes wird dann wahrscheinlich ein abweichender Wert gefunden und führt zu diesem Fehler. Möglicherweise haben ja die alten OLE-DB-Provider auch keine Millisekunden geliefert, so dass dieses Problem früher nicht bestand.

Jetzt könnte ich natürlich einfach weiter die alten OLE-DB-Provider benutzen; aber:
- Microsoft entwickelt diese seit zig Jahren nicht mehr weiter; möglicherweise funktionieren diese nicht mehr mit der nächsten SQL-Server-Generation

- Die neuen OLE-DB-Provider haben auch Vorteile. Z.B. werden damit in Delphi auch reine Datumsfelder TDateField unterstützt, die bei den alten Providern immer als TStringField ausgegeben wurden.

Um eine Lösung für das Problem herbeizuführen, habe ich meinen einzigen Gratis-Support-Fall für dieses Jahr eingesetzt und folgende Antwort (verkürzt und übersetzt) erhalten:

Wir haben dieses Problem auch mit FireDAC gehabt, mit Datenbanken mit einem Kompatibilitätslevel >= 130. Der FireDAC-Entwickler sagt, dass er nichts tun kann.
Lösungsvorschlag: http://www.delphigroups.info/2/63/218724.html

Das bedeutet jedoch, dass zwischenzeitliche Datensatzänderungen anderer Anwender einfach überschrieben werden.

Meine Firma habe ich jetzt seit über 20 Jahren. In dieser Zeit musste ich noch nie einem Kunden sagen, das man da nichts machen kann. Klar, manchmal ist es aufwändig, manchmal teuer, manchmal fehlt auch gerade die Zeit. Aber, dass man gar nichts machen kann….

Wie soll es mit Delphi weiter gehen, wenn Probleme auf diese Art gelöst bzw. einfach nur umgangen werden?

Für alle, die sich das Problem mal anssehen wollen, anbei eine schnell zusammen geklöppelte Beispielanwendung.
Angehängte Dateien
Dateityp: zip ADOTest.zip (1,31 MB, 9x aufgerufen)
  Mit Zitat antworten Zitat