• 0

[DELPHI] Invalid Parameter


Question

Gentlemen,

I'm trying to copy one TClientDataSet into another TClientDataset using a TDataSetProvider

constructor TDataSetIteratorItem.Create(aName: String; aDataSet: TDataSet);
var
  TempProvider : TDataSetProvider;
  Bookmark : TBookmark;
begin

  FName := aName;
  FDataSet := TClientDataSet.Create(nil);

  // Copy the dataset in the clientdataset
  TempProvider := TDataSetProvider.Create(nil);
  aDataSet.DisableControls;

  try
    Bookmark := aDataSet.GetBookmark;
    aDataSet.First;
    TempProvider.DataSet := aDataSet;
    FDataSet.Data := TempProvider.Data;

    if assigned ( Bookmark ) and ( aDataSet.BookmarkValid( Bookmark ) ) then
      aDataSet.GotoBookmark(Bookmark);

  finally
    FreeAndNil( TempProvider );
    aDataSet.EnableControls;
  end;
end;

FDataSet.Data := TempProvider.Data; raises a "EDBCLient invalid parameter" error

Does anybody know how to resolve this problem?

Thx in advance.

Link to comment
https://www.neowin.net/forum/topic/286344-delphi-invalid-parameter/
Share on other sites

6 answers to this question

Recommended Posts

  • 0

the API says that Data is readonly and you are trying to assign a value to the property.

FDataSet.Data := TempProvider.Data;

try

FDataSet.DataSet := TempProvider.DataSet;

  Quote

TCustomProvider.Data

Denotes a data packet created by the provider.

property Data: OleVariant;

Description

Data is a read-only property that is provides access to a data packet containing all records. Reading Data calls GetRecords with a parameter of -1.

As implemented in TCustomProvider, GetRecords returns NULL. Descendants of TCustomProvider reimplement the GetRecords method to implement the Data property.

  • 0

Thanks for your reply.

The strange thing about this is that I have a couple more TClientDataSets that work perfectly this way.

Maybe it has something to do with a onchange event? some fields have onchange events.

Maybe the TClientDataSet needs to be in a specific state?

Anybody any clues?

Thx in advance.

  • 0

Hi,

Sorry for my delayed anwser.

I'm working with a DataSetIterator, a Iterator for...well...Datasets.

In the code I posted a DataSetIteratorItem is being created but fails.

Because of the "Invalid parameter" exception.

You see this DataSetIterator is part of our framework so i can't adjust the framework for my problem.

I think it has something to do with the dataset I'm trying to store in this Iterator.

Any clues ?

Thanks in advance.

  • 0

sorry I have know idea how a DataSetIteratorItem works, never used it.

I dont think anybody on neowin is going to be able to help you with this one.

... why would you have a DataSetIterator, when all you need to traverse a dataset is next, first, last, previous which is built into TClientDataSet?

sorry I havent been much help.

  • 0

Hi,

I resolved the problem.

It had something to do with a lookupfield on the clientdataset.

Once I deleted the "corrupt" lookup and added it again, it didn't give the exception.

Altough it is the same lookup with the same keyfield etc.. :cry:

Oh well thanks anyways.

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.