Hallo,
ich verwende in meinen Programmen sehr viel ClientDataSets. In diesem speziellen Fall, um Daten für einen (Fast-)Report aufzubereiten. In einer TAdsQuery habe ich eine Abfrage wie "Select feld1, feld2, 0.0 as feld3 from table" und übergebe die Abfrage dann mittels "TempProvider.DataSet := TempQuery; TempCDS.Data := TempProvider.Data" (dafür hab ich ne fertige Funktion) an das ClientDataSet. "Feld3" kann ich dann dort noch mit Zahlen füllen, bevor das ganze an den Report weitergeleitet wird.
Mit Delphi 5 funktioniert das Prozedere seit vielen Jahren völlig problemlos.
Jetzt hab ich das gleich mal mit Delphi 7 (Ent) probiert, und da ist mir was sehr seltsames aufgefallen:
Wenn ich die Abfrage wie oben als "Select feld1, feld2, 0.0 as feld3 from table" schreibe, kann ich in "feld3" nur Zahlen schreiben, die maximal eine Vorkomma- und eine Nachkommastelle haben (9.94 geht noch, 9.95 geht nimmer). Wenn ich größere Zahlen verwenden will, muss ich die Abfrage als "Select feld1, feld2, 0000000.00 as feld3 from table" schreiben. Sonst gibt es immer einen EDBClient-Error #9985 "Die Zahl ist außerhalb des gültigen Bereichs.". Und das egal, ob ich die Option "poIncFieldProps" in den Provider-Optionen setze oder nicht. Auch sind Delphi die Werte von MaxValue, MinValue usw. des entsprechenden Feldes anscheinend völlig wurscht. Auf was ich die auch setze, es wird alles ignoriert.
Ich weiß jetzt zwar, wie ich um die Meldung drumrumkomme, aber so ganz befriedigend ist das nicht. Zu
MIDAS.DLL (daher stammt die Meldung nämlich) scheint es irgendwie keinerlei Doku zu geben, und auch stundenlanges googlen hat mir nichts gebracht.