OK, at this point, any information that leads in some way to my success in constructing this program will be accepted!!
Main Topics
Browse All TopicsWhen I get my other question refunded I will boost this one to 500.
I've got a reasonable amount of C++ experience, but I am new to Builder and am having a lot of trouble...
I'm trying to write a program in Borland C++ Builder 6 Enterprise that will work with a simple database. I want to store a few hundred entries, each with a 3 bools, a short string, and several very long strings. I want to use the data-aware controls to view and modify the values. I have set up a DBCtrlGrid and put the interface how I want it, but after an entire day of going through the thoroughly unhelpful help files and working through both tutorials, I still am no closer to knowing how to work with the database tools.
I know this is a little much to ask on an EE post, but if anyone's up to it, I really need a step-by-step explanation of how to do this.
*I need to store about 500 entries with several text fields
*I want to use Borland's Data-Aware Controls to view and modify certain fields
*I want to store all of the data in a local file (or files)
*I plan to distribute this program to several people with different systems, so it has to be handled from within the program and can't require any external database drivers
*I have created the interface on a DBCtrlGrid, but have no idea where to go from here
I hope somebody can help me!
Thanks
-Greg Courville
This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.
Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.
If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.
Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.
Access the answers to your technology questions today.
30-day free trial. Register in 60 seconds.
Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Try it out and discover for yourself.
30-day free trial. Register in 60 seconds.
Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.
> "*I plan to distribute this program to several people with different systems, so it has to be handled from within the program and can't require any external database drivers"
this is what concerns me most. if you wanna use bde, you'll have to install at least paradox. it can be via an installation program but it is still going to be separate db drivers... the alternative is to use a 3rd party component but i am not sure if you wanna go that route
if you are happy with the paradox solution, i can give you a full recipe
-- ba
this is the quickest way but not the best way
step 1. use database desktop software to create the tables you want. put all the fields, etc. once you are done, create a copy of these empty tables. you'll distribute these files with your app
step 2. create a new data module. put a ttable component in the module for every table you have ( sounds like you only have one ). put a tdatasource and link it to ttable ( all these are done via the property inspector; no code to write )
step 3. link your tdatasource to your dbgrid and you are done. the grid will by default show all your fields. you can customize the look of the grid and the fields to be shown using the property inspector ( still no code )
step 4. other db components work the same way; just put the component, link it to the tdatasource and then pick the field you want to edit
step 5. using installshield ( this comes with c++ builder ), create an installation. Installshield will create all the db aliases for you. make sure you copy the empty table files you created into the db directory via installshield
step 6. you are done
you can also replace steps 2 - 4 using the database wizard in c++ builder
let me know how much more detail you need 'cause i don't know how much you know about c++ builder. i actually wrote all this from my mind. if you can give more specifics, i can build a project for you and write more detailed steps ( hey, anything for 500 points ;-) )
-- ba
Hi, thanks for posting.
My issue is that I really don't want to use some commercial-strength database just to store a bunch of text fields locally. I really want the program just to look in its own little file and put in/pull out a few pieces of data. I'd like it to be able to just run anywhere in just a folder with its data file and not have to have databases registered with the system. Is there a way to do something like this and still use the Data Controls? I noticed the "STANDARD" driver had a ttASCII mode. Could I use this? Or am I going in the wrong direction? Maybe I should write my own simple little engine to store values in a text file? I've done file access, BIOS calls, etc., but all this crazy database stuff is way over my head. I'm really not an experienced programmer.
If you could try to fill me in a little on how these things work, and reccommend what I should do, that would be great. I don't necessarily need the quickest way, but I need something that a learning programmer can understand (of course, I understand if no such explanation exists!).
Thanks!
-Greg Courville
Hi,
Not sure if this helps but you're describing kbmmemtable perfectly... http://www.components4prog
It's a really powerful memory based database component.
You can use it perfectly for what you require. The data can be saved in binary format, simple comma delimited format, or you can customise it youself. I use it in BCB5 and BCB6 - nice and straightforward.
Drop the component onto your form (all Borland database enabled controls are fully compatible - makes data entry even easier)
Next, double click on the component so that you can enter your fields, and what type of field they are.
Here are some coding examples...
Load database...
kbmMyDatabase->LoadFromFil
Save...
kbmMyDatabase->SaveToFileV
Add data to the database...
kbmTransmission->Append();
kbmTransmission->Lock();
kbmTransmission->Edit();
kbmTransmission->FieldByNa
kbmTransmission->FieldByNa
kbmTransmission->FieldByNa
kbmTransmission->FieldByNa
kbmTransmission->Unlock();
kbmTransmission->Post();
Example of reading string based data from the current record...
AnsiString Name = kbmTransmission->FieldByNa
Delete a record...
kbmTransmission->Delete();
Find a record...
TLocateOptions SearchOptions;
SearchOptions << loCaseInsensitive;
if (Partial)
SearchOptions << loPartialKey;
bool Found = kbmBrowseData->Locate("LAS
For more info, look up the help on TTable - very similar usage.
It's a very powerful and fast component - should be just the ticket.
-Loz
My suggestion is: use TClientDataSet (it is in Data Access Pallete, beside TDataSource)
I suggest this because:
Vantages
1) It already comes with C++ Builder (and with Delphi too)
2) You can create local database without to need any SGBD
3) The database created can be in XML format, then you can import these data even outside your application
4) It works with Data Aware components as well as TTable
Disavantage:
You need to distribute one little DLL (midas.dll) with your application
The price is low if you use TClientDataSet .... take a look at its help in C++ Builder help, TClientDataSet section, look for tutorials in the Web and, if any doubt, as us : )
Fernando - Brasil
BlewItUp, sorry, i forgot about this question for a while. i did use lozherbert's suggestion, kbmmemtable in a project a while ago and s/he is right, the component serves your purpose well if you don't want to distribute anything with your app. it is not as advanced as some other db components you'll find but it serves the purpose
-- ba
BlewItUp,
No comment has been added lately (151 days), so it's time to clean up this TA.
I will leave a recommendation in the Cleanup topic area for this question:
RECOMMENDATION: Award points to lozherbert http:#8986137
Please leave any comments here within the next seven days.
Experts: Silence means you don't care. Grading recommendations are made in light
of the posted grading guidlines (http://www.experts-exchan
PLEASE DO NOT ACCEPT THIS COMMENT AS AN ANSWER!
Thanks,
bcladd
EE Cleanup Volunteer
I've accepted Lozherbert's answer because kbmmemtable looks perfect for what I'm trying to do; unfortunately, though, I spent days and couldn't get it to install, and ended up writing my own database classes. Then, in my frustration I dumped Windows completely and converted all my computers to Linux! :)
Business Accounts
Answer for Membership
by: BlewItUpPosted on 2003-07-21 at 12:20:47ID: 8970125
Uh, by the way...
Please don't wait until the value actually goes up to 500. I promise I will raise it to 500 before I accept your answer. Trust me!
This is rather urgent...