15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Multiple rows were updated

Wu Bin -- whelan@radiusplc.co.uk
Tuesday, February 25, 1997

Environment: VC++ 4.1, Win95

I am using the following code to delete records in Access,
but it always generate an error saying "Multiple rows were 
updated". Does anybody know why? Thanks in advance.

        .......
	while (!m_srvTmpBTable->IsEOF())
	{
	        m_srvTmpBTable->Delete();
		m_srvTmpBTable->MoveNext();
	}
        .......

Bin Wu
Radius Computer Service




Rondal C. Ellifritt -- rondal@mvision.com
Wednesday, February 26, 1997

Wu Bin wrote:
> 
> Environment: VC++ 4.1, Win95
> 
> I am using the following code to delete records in Access,
> but it always generate an error saying "Multiple rows were
> updated". Does anybody know why? Thanks in advance.
> 
>         .......
>         while (!m_srvTmpBTable->IsEOF())
>         {
>                 m_srvTmpBTable->Delete();
>                 m_srvTmpBTable->MoveNext();
>         }
>         .......
> 
> Bin Wu
> Radius Computer Service

ODBC doesn't keep track of what rows in your Access table correspond to what 
entries in your recordset. (I don't know a lot about DAO, but I suspect it 
works the same in this respect.) Thus, when you Delete() an entry in your 
recordset, ODBC has to figure out which rows in the Access table to delete 
by using the values of the fields in the recordset entry. If multiple rows 
in the table correspond to these field values you get multiple deletions.

Rondal
-- 
____________________________________________________________________________
Rondal C. Ellifritt                                       rondal@mvision.com
       When cryptography is outlawed, bayl bhgynjf jvyy unir cevinpl.



Mihir Dalal -- m_dalal@ECE.concordia.CA
Tuesday, February 25, 1997


On 25 Feb 1997, Wu Bin wrote:

> Environment: VC++ 4.1, Win95
> 
> I am using the following code to delete records in Access,
> but it always generate an error saying "Multiple rows were 
> updated". Does anybody know why? Thanks in advance.
> 
>         .......
> 	while (!m_srvTmpBTable->IsEOF())
> 	{
> 	        m_srvTmpBTable->Delete();
> 		m_srvTmpBTable->MoveNext();
> 	}
>         .......
> 
> Bin Wu
> Radius Computer Service
> 

The reason, is that some of your records do indeed have duplicate values. 
When you delete a record which has one or more fields having duplicate 
values in multiple records, such an error message pops up. 

What is not clear to me is that although the message box says, that 
multiple fields were updated, infact it is not true. Only the record you 
attempt to delete gets deleted. 

Mihir. 


 _________________________________________________________________________
     Mihir Dalal , M.Engg. (Electrical) Student
              Department of Electrical and Computer Engineering
                   Concordia University, Montreal, Canada
                http://www.ECE.Concordia.CA/~m_dalal/addr.html




Dan Kirby -- dkirby@accessone.com
Wednesday, February 26, 1997

Hi,
This is a result of using the cursor library and the fact that it uses SQL
updates to perform updating. If you use dynasets, you will not see this
problem because SQLSetPos will be used to perform direct updates on current
record.  Also, a faster way to delete a group of records is to perform a
Cdatabase::ExecuteSQL call where you pass it a 'Delete from table
where...." statement.

--dan


----------
> From: Rondal C. Ellifritt 
> To: mfc-l@netcom.com
> Subject: Re: Multiple rows were updated
> Date: Wednesday, February 26, 1997 6:41 AM
> 
> Wu Bin wrote:
> > 
> > Environment: VC++ 4.1, Win95
> > 
> > I am using the following code to delete records in Access,
> > but it always generate an error saying "Multiple rows were
> > updated". Does anybody know why? Thanks in advance.
> > 
> >         .......
> >         while (!m_srvTmpBTable->IsEOF())
> >         {
> >                 m_srvTmpBTable->Delete();
> >                 m_srvTmpBTable->MoveNext();
> >         }
> >         .......
> > 
> > Bin Wu
> > Radius Computer Service
> 
> ODBC doesn't keep track of what rows in your Access table correspond to
what 
> entries in your recordset. (I don't know a lot about DAO, but I suspect
it 
> works the same in this respect.) Thus, when you Delete() an entry in your

> recordset, ODBC has to figure out which rows in the Access table to
delete 
> by using the values of the fields in the recordset entry. If multiple
rows 
> in the table correspond to these field values you get multiple deletions.
> 
> Rondal
> -- 
>
____________________________________________________________________________

> Rondal C. Ellifritt                                      
rondal@mvision.com
>        When cryptography is outlawed, bayl bhgynjf jvyy unir cevinpl.



Wu Bin -- whelan@radiusplc.co.uk
Thursday, February 27, 1997

Mihir Dalal:
>> Environment: VC++ 4.1, Win95
>> 
>> I am using the following code to delete records in Access,
>> but it always generate an error saying "Multiple rows were 
>> updated". Does anybody know why? Thanks in advance.
>>         .......
>>      while (!m_srvTmpBTable->IsEOF())
>>      {
>>              m_srvTmpBTable->Delete();
>>              m_srvTmpBTable->MoveNext();
>>      }
>>         .......
>The reason, is that some of your records do indeed have duplicate values. 
>When you delete a record which has one or more fields having duplicate 
>values in multiple records, such an error message pops up. 
>
>What is not clear to me is that although the message box says, that 
>multiple fields were updated, infact it is not true. Only the record you 
>attempt to delete gets deleted. 
>
>Mihir. 

Thanks. Yes, there are indeed some records in the DB that do have 
duplicate values and they are NOT deleted after the call. The deleting
procedure stops after the error generates. How could I delete all the
records?

bin Wu,





Become an MFC-L member | Вернуться в корень Архива |