Search...

This question is easy. I'm developing a batabase system to my university and it must be FAST and ELEGANT. I know that there are a lot of ways to perform a search, but I'd like to know the best in this case:

    I have a form with several DBEdits linked to one table. The first DBEdit is the primary key of the table. I need to search the table to avoid key violations and notify the user. It's easy, but if the key is in the second DBEdit and I perform the search and a key violation ocurrs, the text of first BDEdit is lost. How solve it? I'd like to know your opinions about the best searchs and the right way to use CachedUpdates.

                              Tanks in advance.
oberdanAsked:
Who is Participating?
 
MatveyConnect With a Mentor Commented:
Here's something I wrote long time ago...

--Matvey
_____________________________________________________
procedure TForm1.Table1BeforePost(DataSet: TDataSet);
var t : TQuery;
begin
  t := TQuery.Create(self);
  t.DataBaseName := table1.DatabaseName;

  //change to your table name...
  t.SQL.Add('select * from animals where name = ''' +             table1.Fields[0].asstring + ''';');

  t.Open;
  if (t.RecordCount > 0) then
  Begin
    ShowMessage('Value exists!');
    Abort;
  end;
  t.close;
  t.free;
end;
0
 
chrismoCommented:
So you're creating a form that will link to any table in the database? Or is it fixed to a single table?
0
 
MatveyCommented:
Best in my opinion, if possible, is SQL queries.
TTable has two ways of searching: TTable.Locate, and the Setkey-gotokey sequence.

CachedUpdates should be used if you want to be able to cancel changes made to the table at some point.

-Please be a bit more detailed with the key violation problem. I can't fully see what causes what...

--Matvey
0
Cloud Class® Course: CompTIA Cloud+

The CompTIA Cloud+ Basic training course will teach you about cloud concepts and models, data storage, networking, and network infrastructure.

 
MatveyCommented:
CachedUpdates are also used in C/S dbs. This shouldn't apply to here, right?
0
 
MatveyCommented:
I think all search methods should be working at the same speed. It's the same BDE, so I don't see a reson for fundamental difference. Anyway, you can only see it in huge dbs. Is it the case here?
0
 
MatveyCommented:
I see SQL isn't the best idea here. I's use TTable.Locate...
0
 
oberdanAuthor Commented:
To chrismo:

At first, a single table, but is possible that the form needs to be linked to any table.
0
 
oberdanAuthor Commented:
To Matvey:

The system will be C/S. The key violation problems are referent to duplicated keys.
0
 
itamarCommented:
Hi all,

Key-violation in a search operation ? I thought key-violation was related to updating / inserting a record that causes a duplicate key entry or a null one ...

Am I wrong ?
0
 
333Commented:
oberdan,
if you use Paradox or dBase tables, the fastest way to search will be TTable.Locate (your tables must be indexed). If you use SQL tables or your Pdox or dBase tables aren't indexed, use TQuery instead.
0
 
oberdanAuthor Commented:
To Itamar:

      You're not wrong. I don't explain the question. My problem is at insertion. When the user insert data to a primary key field, I want to search to verify if thew data typed are not already present on the table. I'd not like to lost the data typed by user on the fields when I change the table state to perform the search. I hope it can help.


       
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.