Multiple access to Access Database using ODBC
Marco Valerio -- Marco.Valerio@italtel.it
Friday, March 21, 1997
Environment: Windows 95, VC++ 4.2b
I've a Access database on my NT server; if I try to add records
(CRecordSet->AddNew()) to the same table from two different clients I've
problems (of course). Which are the techniques available with ODBC to deal
with the update of the same database from multi user ?
the error is:
"Couldn't update currently locked by user '...' on machine '...' "
{
pRec->AddNew();
// Recorset variables
pRec->m_TipoDocumento = str;
pRec->m_TDDescrizione = "descr";
pRec->m_TDCategoria = "SEMPLICE";
pRec->m_TDApplicazione = "Word";
pRec->m_TDParametri = "R/W";
while (! pRec->CanUpate());
// I've tried to use SetLockingMode( CRecordset::optimistic )
before calling OnUpdate() // function, but the problem is the
same.
pRec->Update();
}
pRec->Requery();
Thank you in advance for your help
---------------------------------------------------------
Marco.Valerio@italtel.it
---------------------------------------------------------
---------------------------------------------------------
Marco.Valerio@italtel.it
---------------------------------------------------------
Ravi M. -- guentert@giasmd01.vsnl.net.in
Tuesday, March 25, 1997
Hi!
The problem here is not with the way the ODBC is being used. It is the =
way the Access database does locking of its tables. Access goes with the =
locking of a Pagesize of 2K in a table. Thus it always locks more than =
one record giving rise to the conflict. One way to solve this: Pad each =
record with empty field(s) so that the size is 2K and Access will not =
start a new record in part of a page.=20
Ravi M.
----------
From: Marco Valerio[SMTP:Marco.Valerio@italtel.it]
Sent: Friday, March 21, 1997 6:25 PM
To: MAIL MFC
Subject: Multiple access to Access Database using ODBC
Environment: Windows 95, VC++ 4.2b
I've a Access database on my NT server; if I try to add records
(CRecordSet->AddNew()) to the same table from two different clients I've
problems (of course). Which are the techniques available with ODBC to =
deal
with the update of the same database from multi user ?
the error is:
"Couldn't update currently locked by user '...' on machine '...' "
{
pRec->AddNew();
// Recorset variables
pRec->m_TipoDocumento =3D str;
pRec->m_TDDescrizione =3D "descr";
pRec->m_TDCategoria =3D "SEMPLICE";
pRec->m_TDApplicazione =3D "Word";
pRec->m_TDParametri =3D "R/W";
=09
while (! pRec->CanUpate());
// I've tried to use SetLockingMode( CRecordset::optimistic =
)
before calling OnUpdate() // function, but the problem is =
the
same.
pRec->Update();
}
pRec->Requery();
Thank you in advance for your help
---------------------------------------------------------
Marco.Valerio@italtel.it
---------------------------------------------------------
Mark Foley -- meftech@concentric.net
Thursday, March 27, 1997
Ravi M. wrote:
>
> Hi!
> The problem here is not with the way the ODBC is being used. It is the =
> way the Access database does locking of its tables. Access goes with the =
> locking of a Pagesize of 2K in a table. Thus it always locks more than =
> one record giving rise to the conflict. One way to solve this: Pad each =
> record with empty field(s) so that the size is 2K and Access will not =
> start a new record in part of a page.=20
>
> Ravi M.
>
> ----------
> From: Marco Valerio[SMTP:Marco.Valerio@italtel.it]
> Sent: Friday, March 21, 1997 6:25 PM
> To: MAIL MFC
> Subject: Multiple access to Access Database using ODBC
>
> Environment: Windows 95, VC++ 4.2b
>
> I've a Access database on my NT server; if I try to add records
> (CRecordSet->AddNew()) to the same table from two different clients I've
> problems (of course). Which are the techniques available with ODBC to =
> deal
> with the update of the same database from multi user ?
>
> the error is:
> "Couldn't update currently locked by user '...' on machine '...' "
>
> {
> pRec->AddNew();
>
> // Recorset variables
> pRec->m_TipoDocumento =3D str;
> pRec->m_TDDescrizione =3D "descr";
> pRec->m_TDCategoria =3D "SEMPLICE";
> pRec->m_TDApplicazione =3D "Word";
> pRec->m_TDParametri =3D "R/W";
> =09
> while (! pRec->CanUpate());
> // I've tried to use SetLockingMode( CRecordset::optimistic =
> )
> before calling OnUpdate() // function, but the problem is =
> the
> same.
> pRec->Update();
> }
>
> pRec->Requery();
>
> Thank you in advance for your help
>
> ---------------------------------------------------------
> Marco.Valerio@italtel.it
> ---------------------------------------------------------
Have you tried using Dynasets? I use these with Access for multiple
concurrent user access and do record locking on my own. Dynasets are
described in the MSDN documentation.
David Little -- dlittle@equinoxcorp.com
Friday, March 28, 1997
How do you do your own record locking in ODBC?
----------
From: meftech[SMTP:meftech@concentric.net]
Sent: Thursday, March 27, 1997 9:54 AM
To: mfc-l@netcom.com
Subject: Re: Multiple access to Access Database using ODBC
Ravi M. wrote:
>
> Hi!
> The problem here is not with the way the ODBC is being used. It is the =
> way the Access database does locking of its tables. Access goes with the =
> locking of a Pagesize of 2K in a table. Thus it always locks more than =
> one record giving rise to the conflict. One way to solve this: Pad each =
> record with empty field(s) so that the size is 2K and Access will not =
> start a new record in part of a page.=20
>
> Ravi M.
>
> ----------
> From: Marco Valerio[SMTP:Marco.Valerio@italtel.it]
> Sent: Friday, March 21, 1997 6:25 PM
> To: MAIL MFC
> Subject: Multiple access to Access Database using ODBC
>
> Environment: Windows 95, VC++ 4.2b
>
> I've a Access database on my NT server; if I try to add records
> (CRecordSet->AddNew()) to the same table from two different clients I've
> problems (of course). Which are the techniques available with ODBC to =
> deal
> with the update of the same database from multi user ?
>
> the error is:
> "Couldn't update currently locked by user '...' on machine '...' "
>
> {
> pRec->AddNew();
>
> // Recorset variables
> pRec->m_TipoDocumento =3D str;
> pRec->m_TDDescrizione =3D "descr";
> pRec->m_TDCategoria =3D "SEMPLICE";
> pRec->m_TDApplicazione =3D "Word";
> pRec->m_TDParametri =3D "R/W";
> =09
> while (! pRec->CanUpate());
> // I've tried to use SetLockingMode( CRecordset::optimistic =
> )
> before calling OnUpdate() // function, but the problem is =
> the
> same.
> pRec->Update();
> }
>
> pRec->Requery();
>
> Thank you in advance for your help
>
> ---------------------------------------------------------
> Marco.Valerio@italtel.it
> ---------------------------------------------------------
Have you tried using Dynasets? I use these with Access for multiple
concurrent user access and do record locking on my own. Dynasets are
described in the MSDN documentation.
Become an MFC-L member
| Вернуться в корень Архива
|