🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: borland.public.cppbuilder.database.ado
Article #1842

Re: Index search method to use

#1842
From: Alain M. Dube
Date: Thu, 22 Jan 2004 14:10
188 lines
7833 bytes
Hi Vassiliev;

Thanks for the info.

You said below: "May be you need explicitely set name to connection and
every table components that you create."  I'm not sure what you are telling
me to do.  Could you elaborate on this, please?

Thanks again.

Regards;

Al Dube

"Viatcheslav V. Vassiliev" <support@oledbdirect.com> wrote in message
news:400fcfe0$1@newsgroups.borland.com...
> This method works.
>
> void __fastcall TForm1::Button1Click(TObject *Sender)
> {
>  ADOConnection1->Connected = true;
>  ADOTable1->Connection = ADOConnection1;
>  ADOTable1->CursorLocation = clUseServer;
>  ADOTable1->TableDirect = true;
>  ADOTable1->TableName = "country";
>  ADOTable1->IndexName = "PrimaryKey";
>  ADOTable1->Active = true;
>
>  ADOTable1->Seek(WideString("Cuba"), soAfterEQ);
> }
>
>
> The error you get ("A component named 'ContainerByParent' already
exists.")
> is raised from TNamedItem.SetDisplayName function and says that component
> with name 'ContainerByParent' exists. May be you need explicitely set name
> to connection and every table components that you create.
>
> //------------------------------------------
> Regards,
> Vassiliev V. V.
> http://www.managed-vcl.com - using .Net objects in Delphi + ADO.Net
> http://www.oledbdirect.com - The fastest way to access MS SQL Server,
> MS Jet (Access) and Interbase (through OLEDB)
>
> "Alain M. Dube" <adube@cadencesoftware.com> �������/�������� � ��������
> ���������: news:400e95ed$1@newsgroups.borland.com...
> > As you can see from the sample code I included in my first post, there
is
> no
> > IndexDefs or IndexField code, only IndexName = INDEX_NAME_PRIMARY.  The
> > EDatabaseError occurs after the ->Active = true statement executes.
> >
> > Regards;
> >
> > Al
> >
> > "Viatcheslav V. Vassiliev" <support@oledbdirect.com> wrote in message
> > news:400e9347$1@newsgroups.borland.com...
> > > Index is available only on server-side cursor. Do not add IndexDefs or
> > > IndexFields, just set IndexName property.
> > >
> > > //------------------------------------------
> > > Regards,
> > > Vassiliev V. V.
> > > http://www.managed-vcl.com - using .Net objects in Delphi + ADO.Net
> > > http://www.oledbdirect.com - The fastest way to access MS SQL Server,
> > > MS Jet (Access) and Interbase (through OLEDB)
> > >
> > > "Alain M. Dube" <adube@cadencesoftware.com> �������/�������� �
��������
> > > ���������: news:400e87ea$1@newsgroups.borland.com...
> > > > Thanks for the info.
> > > >
> > > > When opening the TADOTable object after having set the
> > > > Connection->CursorLocation = clUseServer, an EDatabaseError is
> generated
> > > > stating "A component named 'ContainerByParent' already exists."  The
> > > > 'ContainerByParent' component is an index within the just opened
> table.
> > > If
> > > > I use the clUseClient CursorLocation option, the Table Open
succeeds,
> > but
> > > > Seeks fail.
> > > >
> > > > Any thoughts?
> > > >
> > > > Regards;
> > > >
> > > > Al Dube
> > > >
> > > >
> > > > "Viatcheslav V. Vassiliev" <support@oledbdirect.com> wrote in
message
> > > > news:400e20a7$1@newsgroups.borland.com...
> > > > > With indeces you should use Seek() method. This requires
> > CursorLocation
> > > =
> > > > > clUseServer and TableDirect = True.
> > > > >
> > > > > //------------------------------------------
> > > > > Regards,
> > > > > Vassiliev V. V.
> > > > > http://www.managed-vcl.com - using .Net objects in Delphi +
ADO.Net
> > > > > http://www.oledbdirect.com - The fastest way to access MS SQL
> Server,
> > > > > MS Jet (Access) and Interbase (through OLEDB)
> > > > >
> > > > > "Alain M. Dube" <adube@cadencesoftware.com> �������/�������� �
> > ��������
> > > > > ���������: news:400e1da8$1@newsgroups.borland.com...
> > > > > > I've encountered a problem with ADO and Access:
> > > > > >
> > > > > > My access database has five tables, each table as multiple
> indices.
> > > > > >
> > > > > > I'm using a TADOConnection and a TADOTable to access the MS
Access
> > DB;
> > > > > code
> > > > > > below used to setup the objects:
> > > > > >
> > > > > > #define CONNECT_STRING_FMT
> > "Provider=Microsoft.Jet.OLEDB.4.0;Data
> > > > > > Source=%s;User Id=admin;Password="
> > > > > >
> > > > > >             // Create a DB Connection COM Object Instance
> > > > > >             mpConnection = new TADOConnection(NULL);
> > > > > >             mpConnection->ConnectOptions = coConnectUnspecified;
> > > > > >             mpConnection->CursorLocation = clUseClient;
> > > > > >             mpConnection->IsolationLevel = ilCursorStability;
> > > > > >             mpConnection->LoginPrompt = false;
> > > > > >             mpConnection->Mode = cmShareDenyNone;
> > > > > >             strConnectionString = Format(CONNECT_STRING_FMT,
> > > > > > OPENARRAY(TVarRec, (strMediaLibraryDBPath)));
> > > > > >             mpConnection->ConnectionString =
strConnectionString;
> > > > > >             mpConnection->Connected = true;
> > > > > >
> > > > > >             // Create a Table Object Instance for the Container
> > Table
> > > > > >             mpContainerTable = new TADOTable(NULL);
> > > > > >             mpContainerTable->Active = false;
> > > > > >             mpContainerTable->Connection = mpConnection;
> > > > > >             mpContainerTable->CursorType = ctKeyset;
> > > > > >             mpContainerTable->TableName  = TABLE_NAME_CONTAINER;
> > > > > >             mpContainerTable->IndexName  = INDEX_NAME_PRIMARY;
> > > > > >             mpContainerTable->Active = true;
> > > > > >
> > > > > >             {  ... repeat for each addition table...  }
> > > > > >
> > > > > > I intend on doing all of the normal database management stuff:
a)
> > > add,
> > > > > > modify and delete records, b) search tables using various
indices,
> > c)
> > > > > > transaction bracketing, etc.  What method is recommended for
doing
> > > > > > index-based search using a relational operator?
> > > > > >
> > > > > > example:  get record whose parentID >= 10
> > > > > >
> > > > > > In DAO, the recordset.seek() allows a relational operator on one
> or
> > > more
> > > > > key
> > > > > > values against the current index.  Is there an equivalent?
> > > > > >
> > > > > > Thanks in advance for your help.
> > > > > >
> > > > > > Regards;
> > > > > >
> > > > > > Al Dube
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>
Technical Details
Message-ID: <400fd9d1$1@newsgroups.borland.com>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!newsgroups.borland.com!not-for-mail
References: <400e1da8$1@newsgroups.borland.com> <400e20a7$1@newsgroups.borland.com> <400e87ea$1@newsgroups.borland.com> <400e9347$1@newsgroups.borland.com> <400e95ed$1@newsgroups.borland.com> <400fcfe0$1@newsgroups.borland.com>

Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII
X-Google-Thread: 10698b,cb3d0ba8006d975c
X-Google-Attributes: gid10698b,public
X-Google-ArrivalTime: 2004-01-22 06:40:33 PST
From: "Alain M. Dube" <adube@cadencesoftware.com>
Newsgroups: borland.public.cppbuilder.database.ado
References: <400e1da8$1@newsgroups.borland.com> <400e20a7$1@newsgroups.borland.com> <400e87ea$1@newsgroups.borland.com> <400e9347$1@newsgroups.borland.com> <400e95ed$1@newsgroups.borland.com> <400fcfe0$1@newsgroups.borland.com>
Subject: Re: Index search method to use
Date: Thu, 22 Jan 2004 09:10:21 -0500
Lines: 190
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
X-MIMEOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
NNTP-Posting-Host: 24.2.157.230
Message-ID: <400fd9d1$1@newsgroups.borland.com>
X-Trace: newsgroups.borland.com 1074780625 24.2.157.230 (22 Jan 2004 06:10:25 -0700)
Path: arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!newsgroups.borland.com!not-for-mail