AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Wie geht es weiter mit Delphi? Ernüchternde Support-Aussagen
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Papaschlumpf73 · begonnen am 6. Jul 2022 · letzter Beitrag vom 18. Jan 2023
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
442 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
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#2

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

  Alt 6. Jul 2022, 11:42
Ich frage mich, welche Lösung du dir vorstellst. Wie sollte denn das rein logisch in den Delphi-Komponenten gelöst werden? Mir fällt auch keine sinnvolle Lösung ein, wenn der Server dazu nichts anbietet (wie automatisches Mergen, falls möglich und gewünscht)...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
691 Beiträge
 
Delphi 10.3 Rio
 
#3

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

  Alt 6. Jul 2022, 11:59
Das sieht mir eher nach einem konzeptionellen Problem aus.
Wenn ich dich richtig verstanden habe verwendest du TimeStamp Werte zur identifikation von Datensätzen.
Wäre da nicht ein AutoInc Integer besser geeignet?
TDateTime/TimeStamp ist in Delphi ein Gleitkommawert, da sind Ungenauigkeiten per Design.
MS SQL Server verwendet intern vermutlich Int64 um sich solcher Probleme zu entziehen.
Mit FireDAC kannst du Type Mappings durchführen, ich sehe da also eher eine Chance weiter zu kommen.

Das hat jetzt aber rein garnix mit der Zukunft von Delphi zu tuen.
Klar ist es nicht unbedingt clever Komponentenpakete an Delphi Versionen zu binden.
Aber das ist nunmal aktuell so. Vlt ändert sich das irgendwann mal und es gibt ein Delphi und Pakete mit zusätzlichen Komponenten.
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
Papaschlumpf73

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

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

  Alt 6. Jul 2022, 12:02
Ich frage mich, welche Lösung du dir vorstellst. Wie sollte denn das rein logisch in den Delphi-Komponenten gelöst werden? Mir fällt auch keine sinnvolle Lösung ein, wenn der Server dazu nichts anbietet (wie automatisches Mergen, falls möglich und gewünscht)...
Ich stelle mir folgende Lösung vor: Der Emba-Support ermittelt die Ursache des Problems und versucht es dann zu lösen. Es kann m.E. ja nur 2 Ursachen geben:

a) der neue OLE-DB-Provider arbeitet fehlerhaft und liefert falsche Daten aus, die hinterher beim Zurückschreiben in die Datenbank nicht mehr übereinstimmen, obwohl sie gar nicht verändert wurden. Hier sollte der Emba-Support ein Ticket bei Microsoft eröffnen.

b) Die Delphi-Komponenten erhalten von den neuen Providern Millisekunden, die in Delphi jedoch nicht gespeichert oder falsch gerundet werden. Beim Zurückschreiben der Daten in die Datenbank stimmen diese dann natürlich nicht mehr mit den ursprünglichen Daten überein und führen zu dem Fehler. In diesem Falle sollte Emba die Komponente so erweitern, dass sie die vom OLE-DB-Provider gelieferten Daten auch vollständig speichern und für den Datenabgleich vollständig an den SQL-Server zurück senden.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#5

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

  Alt 6. Jul 2022, 12:06
Zitat:
der neue OLE-DB-Provider arbeitet fehlerhaft
...ich habe mit den OLE Treibern auch Probleme...wenn ich vergessen hatte den NativeTreiber2012 zu installieren

Damit geht es ohne Probleme. Versuch das mal.
  Mit Zitat antworten Zitat
Papaschlumpf73

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

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

  Alt 6. Jul 2022, 12:07
Das sieht mir eher nach einem konzeptionellen Problem aus.
Wenn ich dich richtig verstanden habe verwendest du TimeStamp Werte zur identifikation von Datensätzen.
Wäre da nicht ein AutoInc Integer besser geeignet?
TDateTime/TimeStamp ist in Delphi ein Gleitkommawert, da sind Ungenauigkeiten per Design.
Leider völlig falsche Annahmen - siehe Beispielanwendung:
CREATE TABLE [dbo].[ADOTest]([ID] [int] IDENTITY(1,1) NOT NULL, [DateTimeField] [datetime] NOT NULL, CONSTRAINT [PK_ADOTest] PRIMARY KEY CLUSTERED([ID] ASC))
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#7

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

  Alt 6. Jul 2022, 12:09
Schau dir mal UniDac an: https://www.devart.com/unidac/
Kostet zwar ein paar €, aber haben seit Jahren damit die Supportprobleme mit dem DB-Zugriff für MySQL und Oracle auf "Nahe 0" reduziert.
Bei MS SQL Server hatten wir schon eine direkt auf ADO/OLE DB aufsetzende Schnittstelle, so das die Umstellung auf Unidac (aktuell) keinen mehrwert bieten würde.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Papaschlumpf73

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

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

  Alt 6. Jul 2022, 12:13
Zitat:
der neue OLE-DB-Provider arbeitet fehlerhaft
...ich habe mit den OLE Treibern auch Probleme...wenn ich vergessen hatte den NativeTreiber2012 zu installieren

Damit geht es ohne Probleme. Versuch das mal.
Danke, ich weiß. Mit den alten OLE-DB-Providern gehts ja auch noch. Nur der SQL Native-Client wird auch nicht weiter entwickelt:

"Die SQL Server Native Client (SQLNCLI) bleibt veraltet und wird nicht empfohlen, sie für neue Entwicklungsarbeit zu verwenden. Verwenden Sie stattdessen den neuen Microsoft OLE DB-Treiber für SQL Server (MSOLEDBSQL), der mit den aktuellsten Serverfeatures aktualisiert wird."

https://docs.microsoft.com/de-de/sql...l-server-ver16
  Mit Zitat antworten Zitat
Papaschlumpf73

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

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

  Alt 6. Jul 2022, 12:20
Schau dir mal UniDac an: https://www.devart.com/unidac/
Kostet zwar ein paar €, aber haben seit Jahren damit die Supportprobleme mit dem DB-Zugriff für MySQL und Oracle auf "Nahe 0" reduziert.
Bei MS SQL Server hatten wir schon eine direkt auf ADO/OLE DB aufsetzende Schnittstelle, so das die Umstellung auf Unidac (aktuell) keinen mehrwert bieten würde.
Danke für den Tipp. Der Verzicht auf FireDAC war eher eine Prinzipienfrage. Geld ist ja da...
Eigentlich suche ich auch keine Ausweichlösung, sondern wollte mich mit euch über den generellen Umgang bei Emba mit solchen Problemen unterhalten. Daher auch meine etwas provokante Überschrift. Nur mal so aus meiner Firma: Wenn ich die Probleme/Fehler meiner Software nicht behebe - oder diese nachvollziehbar einem anderen zuschreiben kann - würden sich meine Kunden früher oder später verabschieden.
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.081 Beiträge
 
Delphi 2009 Professional
 
#10

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

  Alt 6. Jul 2022, 12:30
Zitat:
der neue OLE-DB-Provider arbeitet fehlerhaft
...ich habe mit den OLE Treibern auch Probleme...wenn ich vergessen hatte den NativeTreiber2012 zu installieren

Damit geht es ohne Probleme. Versuch das mal.
Danke, ich weiß. Mit den alten OLE-DB-Providern gehts ja auch noch. Nur der SQL Native-Client wird auch nicht weiter entwickelt:

"Die SQL Server Native Client (SQLNCLI) bleibt veraltet und wird nicht empfohlen, sie für neue Entwicklungsarbeit zu verwenden. Verwenden Sie stattdessen den neuen Microsoft OLE DB-Treiber für SQL Server (MSOLEDBSQL), der mit den aktuellsten Serverfeatures aktualisiert wird."
Da bei Windows 10 nur der SQLNCLI für SQL Server bis <=2005 mitgeliefert wird, brauchst du den SQLNCLI 2014 aber oft weiterhin. Selbst für SDAC von Devart braucht man den. Betrifft vor allem den Zugriff auf bestimmte benannte Instanzen und ab 2008 eingeführte Datentypen. Für die Datentypen kann man sich Unterstützerklassen schreiben, muss dann aber deren "As"-Eigenschaften verwenden.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz