Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 10 of 13 total
Thread TClientDataSet & TEDBTable.
Tue, Aug 6 2013 6:48 AMPermanent Link

Abdulaziz Al-Jasser

Hi,

What is the best/fastest way to move data between a client dataset and edbtable?  I am sure streams are not considered.
Regards,
Abdulaziz Jasser
Tue, Aug 6 2013 12:33 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Abdulaziz,

<< What is the best/fastest way to move data between a client dataset and
edbtable?  I am sure streams are not considered. >>

Unfortunately, the only way to do so is row-by-row.

If you have any other questions, please let me know.

Tim Young
Elevate Software
www.elevatesoft.com
Tue, Aug 6 2013 3:27 PMPermanent Link

Michael Riley

ZilchWorks

Avatar

Tim Young [Elevate Software] wrote:

> Abdulaziz,
>
> << What is the best/fastest way to move data between a client dataset
> and edbtable?  I am sure streams are not considered. >>
>
> Unfortunately, the only way to do so is row-by-row.
>
> If you have any other questions, please let me know.
>
> Tim Young
> Elevate Software
> www.elevatesoft.com

Tim,

What about importing from a store if the ClientDataSet was saved as a
file?

--
Michael Riley
GySgt USMC (Ret)
www.zilchworks.com
Mon, Aug 12 2013 4:47 PMPermanent Link

Barry

Michael Riley,

>What about importing from a store if the ClientDataSet was saved as a file?<
He would have to import and parse the stored ClientDataset file into a TEDBTable. It would of course be much slower because he would have to write the TClientDataset data to disk, then read it back in. Problems also arise if he doesn't have write access locally and if he did, he'd have to clean up the file contents when he's done because it may contain sensitive information. It is much better (more secure and faster) to work with the memory table directly.

TkbmMemTable has a SaveToDataset method that will copy rows in the TkbmMemTable memory table to any TDataset, including TEDBTable. Perhaps that would be better than using a TClientDataset. It also has a DeltaHandler so only modified rows can be copied back.

If Abdulaziz Jasser doesn't want to purchase TkbmMemTable (is there still a free version available?), he can look at edbmigrate.pas (\code\source subdirectory) to move data from a TClientDataset to an TEDBTable. It will take a bit of tweaking, but it is doable.

Barry
Tue, Aug 13 2013 1:25 PMPermanent Link

Abdulaziz Al-Jasser

Barry wrote:

<<He would have to import and parse the stored ClientDataset file into a TEDBTable. It would of course be much slower because he would have to write the TClientDataset data to disk, then read it back in. Problems also arise if he doesn't have write access locally and if he did, he'd have to clean up the file contents when he's done because it may contain sensitive information. It is much better (more secure and faster) to work with the memory table directly.>>


Thanks Barry for the comments.  However, I am facing a little problem with EDB memory tables since they are physically located on the server side.  I use them very much and they are very handy except when it comes to a remote server (Internet with slow connection).  I do a lot of data validations and manipulations before sending them back to the server.  Therefore I need to do them locally.  Clinetdataset should do the job (since I do that at the row/field level), but losing the SQL feature is a pain.

Regards,
Abdulaziz Jasser
Tue, Aug 13 2013 6:31 PMPermanent Link

Barry

Abdulaziz Jasser,

>Thanks Barry for the comments.  However, I am facing a little problem with EDB memory tables since they are physically located on the server side.  I use them very much and they are very handy except when it comes to a remote server (Internet with slow connection).  I do a lot of data validations and manipulations before sending them back to the server.  Therefore I need to do them locally.  Clinetdataset should do the job (since I do that at the row/field level), but losing the SQL feature is a pain.<

The EDB memory tables are only stored on the server if they are not temporary. Temporary EDB memory tables are stored locally on the client machine.

Even so, I believe a kbmMemTable will be much faster (5x to 10x) than a local EDBTable memory table. kbmMemTable also has (somewhat limited) SQL capabilities that are quite remarkable. (You can apply SQL to a kbmMemTable.)

Barry
Wed, Aug 14 2013 3:42 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

Abdulaziz

>but losing the SQL feature is a pain.

What sort of SQL are you needing?

Roy Lambert
Wed, Aug 14 2013 9:17 AMPermanent Link

Abdulaziz Al-Jasser

Barry,
<<EDB memory tables are only stored on the server if they are not temporary.>>

This is not what Tim said in the bellow link.  This a copy/paste from Tim comment:

"Just to clarify, temporary tables are never created on the local machine
with remote sessions.  They are created on the server, but isolated by  session."


http://www.elevatesoft.com/forums?action=view&category=edb&id=edb_general&msg=15351&start=1&keywords=CREATE Temporary&searchbody=True&forum=EDB_Announce&forum=EDB_General&forum=EDB_SQL&forum=EDB_Connect&forum=EDB_Extensions&forum=EDB_Beta&forum=EDB_Binaries&forum=EDB_Suggestions&forum=EDB_ThirdParty&forum=EDB_Discussion#15351




Roy,
<<What sort of SQL are you needing?>>

I use UPDATE, DELETE, and INSERT to manipulate the data locally before sending it back to the server.  I also use row/field manipulation.  

Regards,
Abdulaziz Jasser
Wed, Aug 14 2013 11:55 AMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Barry,

<< The EDB memory tables are only stored on the server if they are not
temporary. Temporary EDB memory tables are stored locally on the client
machine.  >>

Abdulaziz is correct - with remote sessions, all tables are stored on the
server, even temporary tables.

Tim Young
Elevate Software
www.elevatesoft.com
Wed, Aug 14 2013 11:57 AMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Abdulaziz,

<< Thanks Barry for the comments.  However, I am facing a little problem
with EDB memory tables since they are physically located on the server side.
I use them very much and they are very handy except when it comes to a
remote server (Internet with slow connection).  I do a lot of data
validations and manipulations before sending them back to the server.
Therefore I need to do them locally.  Clinetdataset should do the job (since
I do that at the row/field level), but losing the SQL feature is a pain. >>

Why aren't you just using a local session and local in-memory tables (all
EDB) for the memory storage on the client side ?  Then you can use any
number of techniques to get the data back and forth, and you have complete
SQL capabilities.

Tim Young
Elevate Software
www.elevatesoft.com
Page 1 of 2Next Page »
Jump to Page:  1 2
Image