Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

BDE DATA LOSS?

Posted on 2000-02-18
4
Medium Priority
?
231 Views
Last Modified: 2010-04-04
DEAR SIRS/LADIES,

MY PROBLEM IS WITH THE BDE.

BDE CACHES ALMOST ALL DATA UPDATES
UNTIL THE TABLE IS CLOSED. THIS CAUSE
DATA LOSS WHEN THERE IS A SYSTEM CRASH
OR A POWER FAILURE.

LOCAL SHARE DONT WORK WELL. IT ONLY APPENDS BLANK RECORDS. BUT THE CONTENTS ARE LOST. SOMETIMES CONTENTS ARE FILLED WITH GARBAGE WHICH CAUSE "VALUE TRANSLATE ERRORS". IN ADDITION INDEXES ARE DAMAGED.

ARE THERE A WAY TO REALLY FORCE BDE TO SAVE ALL CHANGES IMMEDIATELY AFTER AN UPDATE OPERATION.

I HAVE CLOSED ALL WRITE BACK BUFFERS OF THE OPERATING SYSTEM (WINDOWS).

MY SOLUTION TO THIS PROBLEM IS TOO SLOW.
WHENEVER I DO AN APPEND OR UPDATE OPERATION I OPEN THE TABLE MAKE CHANGES AND CLOSE IMMEDIATELY.

SHOULD I USE A BDE ALTERNATIVE SUCH AS APOLLO?
ARE THERE A BDE ALTERNATIVE WHICH DO NOT HAVE THE PROBLEMS I MENTIONED ABOVE.
CAN YOU SUGGEST ONE.

TANKS FOR YOUR SUPPORT
0
Comment
Question by:huseyin
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
4 Comments
 
LVL 6

Expert Comment

by:edey
ID: 2536443
how about:

FlushBuffers posts all changes that have been written to the record buffer.

procedure FlushBuffers;

Description

Call FlushBuffers to cause the dataset to post all pending changes to the database, including any cached updates. Use FlushBuffers instead of CheckBrowseMode if it is important that cached record buffers are posted.



GL
Mike
0
 

Author Comment

by:huseyin
ID: 2536506
FLUSH BUFFER DOES NOT MAKE THE JOB.

I HAVE CREATED A CUSTOM TTABLE COMPONENT WHICH FUSHES ITS BUFFER AFTER ALL POST OPERATIONS.

BUT IT DOES NOT HAVE ANY EFFECT.

0
 
LVL 1

Accepted Solution

by:
fulvio_brasil earned 600 total points
ID: 2537289
Hi huseyin,

I had this problem too and solved this using BDE API function DBISaveChanges, on evente OnAfterPost of tables, like this:

procedure TdmdCad.tblAfterPost(DataSet: TDataSet);
begin
  DBISaveChanges((DataSet as TBDEDataSet).Handle);
end;

and direct all my table's AfterPost to this.

-------------

About BDE alternative, I used DBISAM (but, my problem was the size of BDE installation). You can find a try in www.elevate.com - it's very good. It have a FlushBuffer to prevent data loss and a good Repair to re-arrange table index.
0
 
LVL 1

Expert Comment

by:fulvio_brasil
ID: 2537293
PS: You need to put 'BDE' in uses clause

0

Featured Post

New feature and membership benefit!

New feature! Upgrade and increase expert visibility of your issues with Priority Questions.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Creating an auto free TStringList The TStringList is a basic and frequently used object in Delphi. On many occasions, you may want to create a temporary list, process some items in the list and be done with the list. In such cases, you have to…
Hello everybody This Article will show you how to validate number with TEdit control, What's the TEdit control? TEdit is a standard Windows edit control on a form, it allows to user to write, read and copy/paste single line of text. Usua…
In this video, Percona Solution Engineer Dimitri Vanoverbeke discusses why you want to use at least three nodes in a database cluster. To discuss how Percona Consulting can help with your design and architecture needs for your database and infras…
In this video, Percona Solution Engineer Rick Golba discuss how (and why) you implement high availability in a database environment. To discuss how Percona Consulting can help with your design and architecture needs for your database and infrastr…
Suggested Courses

721 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question