Thoughts from Dan Miser RSS 2.0
 Wednesday, May 12, 2004
The new Delphi 7.1 update contains a new version of MIDAS.DLL (version 7.1.1692.666). Dave Rowntree did some digging and came up with this list of fixes in MIDAS in Delphi 7.1. (Thanks, Dave!!!) Note that he cross-referenced the fixes to the QualityCentral entries. So I would say this is (yet) more proof that QC is working. You can download the newest version of the dll from my web site. It should be backwards compatible with Delphi 5 and 6. I will update this entry with any fixes that were missed, or any new issues that got introduced.

Fixed in Midas.dll
1712 - TFieldAggregate returns incorrect value
2019 - nested CDS Edit/Post twice, master ApplyUpdates, Delta incorrect
2027 - Edit/Post on nested CDS InternalCalc field causes ChangeCount to increase
2333 - Incorrect Delta after ApplyUpdates(0) with poPropogateChanges
2529 - Opening .XML files using D7 Midas.dll that were created using D6 Midas.dll fails
2626 - Inability to use ftLargeInt as an index with a tClientDataset
2717 - Incorrect ChangeCount with TWideStringField
3777 - InternalCalc fields are reset to null by ApplyUpdates when using poPropogateChanges
4301 - CancelRange on nested ClientDataset breaks link with masterrecord
4508 - ChangeCount being incremented when data has not changed.
4676 - Size of Blobfields not adjusted when using RefreshRecord
5319 - Client Dataset Locate method on a Word field always returns false
5509 - MIDAS allocates values against nested dataset AutoInc fields.
5646 - Nested TClientDataSet deletion fails if child has CloneCursor has been invoked
6591 - TBlobfield looses value when LogChanges = False
6849 - ClientDataSet insert duplicate's details record's with NestedDataSet

Fixed in Midas.dll + VCL
2011 - 'key violation' - InternalCalc field in nested CDS/poFetchDetailsOnDemand
3786 - ClientDataSet.FindKey on cloned cursor fails
3496 - ClientDataSet Filter on a LargeIntField - Design / Run Time Errors.
7543 - MIDAS corrupts indices

Wednesday, May 12, 2004 8:56:00 AM (Central Standard Time, UTC-06:00)  #    Comments [14] -
Delphi
Tracked by:
http://9nt-information.info/55396768/index.html [Pingback]
http://9ng-information.info/60859849/index.html [Pingback]
http://9ns-information.info/54524388/relevance-of-biochemistry-to-food-safety.ht... [Pingback]
http://9nl-information.info/54933105/index.html [Pingback]
http://9ns-information.info/74657104/index.html [Pingback]
http://9na-information.info/50563168/index.html [Pingback]
http://9nx-information.info/71486603/horse-jobs-california.html [Pingback]
http://9np-information.info/12898021/index.html [Pingback]
http://9nq-information.info/95121794/index.html [Pingback]
http://9qm-information.info/58526469/index.html [Pingback]
http://9qc-information.info/83871299/index.html [Pingback]
http://9qb-information.info/42095463/index.html [Pingback]
http://9oq-information.info/21255871/dvd-drive-is-not-working.html [Pingback]
http://9qt-information.info/09761807/classifiche-campionati-provinciali.html [Pingback]
http://9qd-information.info/38604658/index.html [Pingback]
http://9ob-information.info/23938988/porta-nuova-and-around-travel-guide.html [Pingback]
http://9op-information.info/59800011/guy-self-blow-job.html [Pingback]
http://9qd-information.info/28024240/corea-giappone-2002.html [Pingback]
http://9or-information.info/92873756/index.html [Pingback]
http://9sp-information.info/75814474/ninja-tune-records.html [Pingback]
http://9sl-information.info/57671930/aspirapolvere-aspiraliquidi.html [Pingback]
http://9ra-information.info/00007218/index.html [Pingback]
http://9se-information.info/19666109/index.html [Pingback]
http://9sk-information.info/28870586/index.html [Pingback]
http://9rw-information.info/04763151/deer-park-tx-real-estate.html [Pingback]
http://9re-information.info/61855592/index.html [Pingback]
http://9sg-information.info/32293902/revisione-compressore-climatizzatore-auto.h... [Pingback]
http://9re-information.info/28362499/index.html [Pingback]
http://9uaeo-le-informazioni.info/67036472/cucina-gas-fuoco.html [Pingback]
http://9uafe-le-informazioni.info/32567856/index.html [Pingback]
http://9uafj-le-informazioni.info/01271618/index.html [Pingback]
http://9uafp-le-informazioni.info/16081134/index.html [Pingback]
http://9uaea-le-informazioni.info/60875745/index.html [Pingback]
http://9uaee-le-informazioni.info/87477087/index.html [Pingback]
http://9uaee-le-informazioni.info/65148044/costo-variabili-business-plan.html [Pingback]
http://9uaef-le-informazioni.info/81002181/index.html [Pingback]
http://9uaft-le-informazioni.info/56096210/index.html [Pingback]
http://9uafo-le-informazioni.info/25520520/index.html [Pingback]
http://9uaet-le-informazioni.info/52485957/index.html [Pingback]
http://9uahg-le-informazioni.info/72067122/incidenza-canone-affitto.html [Pingback]
http://9uags-le-informazioni.info/76177318/index.html [Pingback]
http://9uagj-le-informazioni.info/16203628/index.html [Pingback]
http://9uagl-le-informazioni.info/58539783/index.html [Pingback]
http://9uahn-le-informazioni.info/96952263/index.html [Pingback]
http://9uahe-le-informazioni.info/31672003/dettato-quinta-elementare.html [Pingback]
http://9uahk-le-informazioni.info/17434821/rito-matrimoniale-cavaliere-malta.htm... [Pingback]
http://9uagi-le-informazioni.info/89352665/index.html [Pingback]
http://9uahq-le-informazioni.info/91930446/index.html [Pingback]
http://9uahf-le-informazioni.info/33869823/traghetto-cagliari-napoli.html [Pingback]
Wednesday, May 12, 2004 9:01:00 AM (Central Standard Time, UTC-06:00)
Dan, are you allowed to distribute MIDAS.dll?

Wednesday, May 12, 2004 2:15:00 PM (Central Standard Time, UTC-06:00)
Sure. MIDAS.DLL is freely redistributable (redployable?). My position has always been if Borland is going to have a problem with me just distributing the DLL, then I'll write a simple single-tier app that uses a ClientDataset - which means I will need to redistribute MIDAS.DLL. That was what John Kaster and I agreed upon ages ago when I started doing this, and with MIDAS now being royalty-free, there is even less concern from my perspective.



Of course, if Borland would just make MIDAS.DLL available from their web site, I could get out of the "Hosting MIDAS.DLL" business altogether. :-)
Wednesday, May 12, 2004 3:13:00 PM (Central Standard Time, UTC-06:00)
That's all the fixes? Sheesh. If that's all Borland is going to do, I'm going back to Logo.



[Pen up]



Wednesday, May 12, 2004 3:23:00 PM (Central Standard Time, UTC-06:00)
:-) You crack me up, Chris.
Wednesday, May 12, 2004 3:41:00 PM (Central Standard Time, UTC-06:00)
Virtually all of the fixes to midas.dll came directly from reports and test cases in QC. If you look at the readme file you can see that most of the DataSnap entries have the QC number as well. So yes, absolutely it is working!



I entered comments into Raid about where the fix was made (midas.dll only or vcl only or both) and Dave aggregated that back into QC and the list you and he posted.
Mark Edington
Thursday, May 20, 2004 4:39:00 AM (Central Standard Time, UTC-06:00)
New bug introduced in D7.1 : see the QC report # 8101. It's a serious bug when you work with two levels of nested datasets.
Tuesday, June 08, 2004 9:17:00 AM (Central Standard Time, UTC-06:00)
I'm using a special TClientDataSet component based on yours from the incremental fetching sample. With Delphi 7.1 I found a problem: I'm using a DBGrid to show data. With a resolution of 1024x768 the DBGrid can display 30 or 31 records, depending on the horizontal scrollbar. So I decided to use 30 as PacketRecords value. To refresh data I close and open the ClientDataSet but this generates a Key Violation error when DBGrid is showing more than 30 records at once (31 - so the ClientDataSet has to fetch 2 packets). The error is raised when fetching the second packet.

Whe opening the ClientDataSet for the first time everyting works ok.

I have fixed the problem and I want you to take a look to the solution. This is the code: (my lines with //#PR)



function TDSClientDataSet.DoGetRecords(Count: Integer;

out RecsOut: Integer; Options: Integer; const CommandText: WideString;

Params: OleVariant): OleVariant;

var

OwnerData, v: OleVariant;

iRecordCount: integer; //#PR

begin

iRecordCount := 0; //#PR

if Assigned(DSCursor) then // #PR

Check(DSCursor.GetRecordCount(iRecordCount)); //#PR

if (not Active and (iRecordCount = 0)) or //#PR

(grReset in TGetRecordOptions(Byte(Options))) then //#PR

// if not Active or (grReset in TGetRecordOptions(Byte(Options))) then

ResetIncFetch;

DoBeforeGetRecords(OwnerData);

if ((not Active) and (Count > 0))

or (Active and not ProviderEOF) then

PutIncFetchVar(OwnerData, MakeIncFetchVar(FIncFetchFields, FIncFetchValues));

Result := AppServer.AS_GetRecords(ProviderName, Count, RecsOut, Options,

CommandText, Params, OwnerData);

UnPackParams(Params, Self.Params);

v := ExtractIncFetchVar(OwnerData);

if VarIsArray(v) then

begin

FIncFetchFields := v[1];

FIncFetchValues := v[2];

end;

DoAfterGetRecords(OwnerData);

end;



For the second packet (not the firt time you open the ClientDataSet) the value of Active is False so ResetIncFetch is called and the value of FIncFetchValues is Unassigned when calling PutIncFecthVar.



Thanks, Pablo Reyes

preyes@excite.com

Pablo Reyes
Thursday, July 01, 2004 3:14:00 AM (Central Standard Time, UTC-06:00)
I am using MS SQL Server 2000...

When I try to locate a record in the database using KEYVALUE more then 255 CHAR the locate function dose not work. and alwayes return false...
kifah najem
Friday, July 02, 2004 5:53:00 AM (Central Standard Time, UTC-06:00)
Hello all,



I am working on an old project written by others in D5 and is extended by

me. The program works fine when compiled in D5.

I decided to upgrade the whole project in Delphi 7 (also all updates of D7

have been installed) in the hope to get the last improvements made by

Borland.



After changing some small things like including variants in my uses lists

and converting the parameters in functions like OnReconcileError i was able

to compile the application in D7. At first the application seemed to work

fine. Unfortunatelly doing some more tests i got AV exceptions in the

following situations:



At FreeAndNil of 2 datamodules i get the error "Privileged instruction" or

just access violations.

After doing some debugging i found out that something goes wrong on

ApplyUpdates(-1) of the clientdatasets that are in these datamodules.

Remarking ApplyUpdates(-1) solves the problem but doesn't save of cource in

the Database (ORACLE 9i)!!



All of the ClientDatasets are connected to providers and the providers to

Sql queries, are using NestedDatasets, Internal calculated fieles and

aggregate fields.



In one of the datamodules it was relative easy to change the structure of

the nestedDatasets in Master-Detail relationships which actually didn't

solve the problem. Also i tried to change the order that the objects of the

datamodules are getting freed. No difference. I wrote an onFree handler

where i destroyed the objects alone. For some uknown reasons to me some

objects are pointing to nothing or to wrong addresses. So trying to free

them gives the "privileged instruction" exception or an AV. Changing the

order when the objects of the datamodule are getting freed just destroyed

other ones. An idea of mine is that maybe something internally on the

ClientDataset is writting over the address space of some other objects. I

took a better look at the code written in the ClientDatasets by my old

colleges (events and so on) in the hope to find some buggy memory

allocations or buggy use of pointers. Nothing there...



So i done the following. I created new ClientDatasets and i build them

exactly as the old ones (100% exactly). After throwing away the old ones and

renaming the new ones in the name of the old ones i didn't get again the

exceptions from this datamodule. Well it seems that it works fine but i am

not sure if this will be stable enough after some time!? And of course this

is not a workaround in such a big project.



The 2. datamodule has so many ClientDatasets so that i can not do it in the

same way and of course i am not sure that it will solve the problem!.



So before starting investing so much time on this i would like to ask the

following :



1) Is there a known bug in the last update of Delphi in TClientDatasets on

ApplyUpdates which match my situation?

2) Is there a workaround that i can do in order to solve my problem or do i

have to remake the whole datamodules?

3) After remaking the datamodules can somebody be sure that the program will

be stable enough in order to give it in our clients or could happen that at

first the problem is solved but sometimes it crashes ?



I would be very pleased if someone could give me an answer.



Thanks in advance

Kostas

Kostas
Thursday, June 09, 2005 5:49:00 AM (Central Standard Time, UTC-06:00)
When applying updates from the client, i get this error: Record not found or Changed by another user.
Anthony Gachango
Thursday, June 16, 2005 8:13:00 PM (Central Standard Time, UTC-06:00)
When applying updates from the client, i get this error: Record not found or Changed by another user.
Friday, January 13, 2006 3:59:00 AM (Central Standard Time, UTC-06:00)
error midas with dbexpress
Tuesday, September 05, 2006 12:21:00 PM (Central Standard Time, UTC-06:00)
dsfdfdf
gordfds
Thursday, November 23, 2006 1:24:00 PM (Central Standard Time, UTC-06:00)
When using more than 13 (15 in Delphi7) nested datasets in TClientDataSet in any order (sequentally or in "one layer") occurs an error "Operation not applicable" when saving data.
Pantor
Comments are closed.
Navigation
Archive
<September 2010>
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789
About the author/Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2010
Dan Miser
Sign In
Statistics
Total Posts: 339
This Year: 5
This Month: 0
This Week: 0
Comments: 618
All Content © 2010, Dan Miser
DasBlog theme 'Business' created by Christoph De Baene (delarou)