Главная страница | назад





Article #16929: How do I do a locate on a non-indexed field?

 Question and Answer Database

FAQ1929C.txt   How do I do a locate on a non-indexed field?
Category   :Database Issues
Platform    :All
Product    :C++Builder  1.x

Question:
How do I do a locate on a non-indexed field?

Answer:
The following function can be added to your to your unit and 
called as follows:

   bool __fastcall Locate(const TTable *oTable, const TField *oField, 
                          const Char* SvALUE);

Table1 is your table component, Table1LName is TField you've 
added with the fields editor (double click on the table 
component) and 'Beman' is the name you want to find.

   // Locate will find SValue in a non-indexed table
   bool __fastcall Locate(const TTable *oTable, const TField *oField, 
                          const Char* SvALUE)
   {
      TBookMark bmPos;
      bool Locate, bFound;

      Locate = false;
      bFound = false;

      if (!oTable->Active)
         return;

      if (oTable->FieldDefs->IndexOf(oField->FieldName) < 0)
         return;

      bmPos = oTable->GetBookMark;

      oTable->DisableControls;
      oTable->First;

      while(!oTable->EOF)
      {
         if(oField->AsString == sValue)
         {
            Locate = true;
            bFound = true;
            break;
         }
         else
            oTable->Next;
      }

      if (!bFound)
         oTable->GotoBookMark(bmPos);

      oTable->FreeBookMark(bmPos);
      oTable->EnableControls;
   }

7/2/98 10:32:32 AM
 

Last Modified: 01-SEP-99