<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[CRecordset::Update() Exception]]></title><description><![CDATA[<p>Hi Leuts!<br />
ich weiß dieses Problem wurde schon öffter mal im Forum angesprochen aber leider noch nie beantwortet! Hiermit versuche ich es nochmal!<br />
Also. Beim Ausführen von Update() (vorher natürlich Edit() ausgeführt) wird ein Exceprion geworfen AFX_SQL_ERROR_NO_ROWS_AFFECTED! Hab das schon im MSDN usw. nachgelesen<br />
<em>AFX_SQL_ERROR_NO_ROWS_AFFECTED You called CRecordset::Update or Delete, but when the operation began the record could no longer be found.</em><br />
So heißt für mich der Record ist nicht mehr da! Um sicher zu gehen mache ich bor dem Update m_pSet-&gt;GetRowsFetched() und auch m_pSet-&gt;GetRecordCount() beide male krieg ich 1 zurück! Das heißt für mich er hat ein record und Row!<br />
Wenn ich m_pSet überprüfe hat er die neuen Daten drin stehen!<br />
Kann es an der Datenbank connection liegen?? Das die verbindung von CDatabase irgendwie getrennt ist?? konnte das bischer nicht ganz auschließen!</p>
<p>Hier etwas Code</p>
<pre><code class="language-cpp">CRecordset* CStam_Mit_View::OnGetRecordset()
{
	if (m_pSet != NULL)
		return m_pSet;

	m_pSet = new CStam_Mit_Set(NULL);
	m_pSet-&gt;Open();

	return m_pSet;
}

CStam_Mit_Set* CStam_Mit_View::GetRecordset()
{
	CStam_Mit_Set* pData = (CStam_Mit_Set*) OnGetRecordset();
	ASSERT(pData == NULL || pData-&gt;IsKindOf(RUNTIME_CLASS(CStam_Mit_Set)));
	return pData;
}

void CStam_Mit_View::OnInitialUpdate()
{
	BeginWaitCursor();
	GetRecordset();
	CRecordView::OnInitialUpdate();
	if (m_pSet-&gt;IsOpen())
	{
		CString strTitle = m_pSet-&gt;m_pDatabase-&gt;GetDatabaseName();
		CString strTable = m_pSet-&gt;GetTableName();
		if (!strTable.IsEmpty())
			strTitle += _T(&quot;:&quot;) + strTable;
		GetDocument()-&gt;SetTitle(strTitle);
	}
	EndWaitCursor();
	m_pSet-&gt;GetRecordCount();

}

void CStam_Mit_View::EditRow(CString szId)
{	

	//CDatabase db;
	OnInitialUpdate();
	bool bCheck;

	CString szQuery;
	szQuery.Format(&quot;Select * from Vereinsmitglieder where Mitglieds_Id = '%s';&quot;,szId);

	m_pSet-&gt;Close();
	bCheck = 	((CVerein_ProjektDoc*)(this-&gt;GetDocument()))-&gt;GetQueryResult(szQuery,m_pSet);

	if(bCheck == TRUE)
	{
		UpdateData(FALSE);
	}

}

void CStam_Mit_View::OnButtonOk() 
{
	// TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
	CString string;
	string.Format(&quot;%i&quot;,m_pSet-&gt;GetRowsFetched());
	AfxMessageBox(string);
	m_pSet-&gt;Edit();
	UpdateData();
	m_pSet-&gt;Update();

}
/////////////////////////////////////////////////////////////////////////

bool CVerein_ProjektDoc::GetQueryResult(CString szQuery, CStam_Mit_Set* DBSet)
{
	if(!DBSet-&gt;IsOpen())	
	{
		DBSet-&gt;Open(CRecordset::snapshot, szQuery); 
		if(DBSet-&gt;IsOpen())	
		{
			if(!DBSet-&gt;IsEOF())		return TRUE;
		}
		else return FALSE;
	}
	if (DBSet-&gt;IsBOF()) 
	{ 
		return FALSE;
	} 
	else if ( !DBSet-&gt;IsEOF() )
	{
		DBSet-&gt;MoveNext();
		if(!DBSet-&gt;IsEOF())	return TRUE;
		else	return FALSE;
	}
	else 
	{
		return FALSE;
	}
	return FALSE;
}
</code></pre>
<p>Ich hoffe ihr könnt mir helfen! Sitze schon seit 2 Tagen dran! Sorry für den hässligen Code, aberich hab das schon soviel ausprobiert,....</p>
<p>Danke</p>
<p>Gruß Andi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/68723/crecordset-update-exception</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Apr 2026 02:09:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/68723.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 20 Mar 2004 16:20:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CRecordset::Update() Exception on Sat, 20 Mar 2004 16:20:10 GMT]]></title><description><![CDATA[<p>Hi Leuts!<br />
ich weiß dieses Problem wurde schon öffter mal im Forum angesprochen aber leider noch nie beantwortet! Hiermit versuche ich es nochmal!<br />
Also. Beim Ausführen von Update() (vorher natürlich Edit() ausgeführt) wird ein Exceprion geworfen AFX_SQL_ERROR_NO_ROWS_AFFECTED! Hab das schon im MSDN usw. nachgelesen<br />
<em>AFX_SQL_ERROR_NO_ROWS_AFFECTED You called CRecordset::Update or Delete, but when the operation began the record could no longer be found.</em><br />
So heißt für mich der Record ist nicht mehr da! Um sicher zu gehen mache ich bor dem Update m_pSet-&gt;GetRowsFetched() und auch m_pSet-&gt;GetRecordCount() beide male krieg ich 1 zurück! Das heißt für mich er hat ein record und Row!<br />
Wenn ich m_pSet überprüfe hat er die neuen Daten drin stehen!<br />
Kann es an der Datenbank connection liegen?? Das die verbindung von CDatabase irgendwie getrennt ist?? konnte das bischer nicht ganz auschließen!</p>
<p>Hier etwas Code</p>
<pre><code class="language-cpp">CRecordset* CStam_Mit_View::OnGetRecordset()
{
	if (m_pSet != NULL)
		return m_pSet;

	m_pSet = new CStam_Mit_Set(NULL);
	m_pSet-&gt;Open();

	return m_pSet;
}

CStam_Mit_Set* CStam_Mit_View::GetRecordset()
{
	CStam_Mit_Set* pData = (CStam_Mit_Set*) OnGetRecordset();
	ASSERT(pData == NULL || pData-&gt;IsKindOf(RUNTIME_CLASS(CStam_Mit_Set)));
	return pData;
}

void CStam_Mit_View::OnInitialUpdate()
{
	BeginWaitCursor();
	GetRecordset();
	CRecordView::OnInitialUpdate();
	if (m_pSet-&gt;IsOpen())
	{
		CString strTitle = m_pSet-&gt;m_pDatabase-&gt;GetDatabaseName();
		CString strTable = m_pSet-&gt;GetTableName();
		if (!strTable.IsEmpty())
			strTitle += _T(&quot;:&quot;) + strTable;
		GetDocument()-&gt;SetTitle(strTitle);
	}
	EndWaitCursor();
	m_pSet-&gt;GetRecordCount();

}

void CStam_Mit_View::EditRow(CString szId)
{	

	//CDatabase db;
	OnInitialUpdate();
	bool bCheck;

	CString szQuery;
	szQuery.Format(&quot;Select * from Vereinsmitglieder where Mitglieds_Id = '%s';&quot;,szId);

	m_pSet-&gt;Close();
	bCheck = 	((CVerein_ProjektDoc*)(this-&gt;GetDocument()))-&gt;GetQueryResult(szQuery,m_pSet);

	if(bCheck == TRUE)
	{
		UpdateData(FALSE);
	}

}

void CStam_Mit_View::OnButtonOk() 
{
	// TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
	CString string;
	string.Format(&quot;%i&quot;,m_pSet-&gt;GetRowsFetched());
	AfxMessageBox(string);
	m_pSet-&gt;Edit();
	UpdateData();
	m_pSet-&gt;Update();

}
/////////////////////////////////////////////////////////////////////////

bool CVerein_ProjektDoc::GetQueryResult(CString szQuery, CStam_Mit_Set* DBSet)
{
	if(!DBSet-&gt;IsOpen())	
	{
		DBSet-&gt;Open(CRecordset::snapshot, szQuery); 
		if(DBSet-&gt;IsOpen())	
		{
			if(!DBSet-&gt;IsEOF())		return TRUE;
		}
		else return FALSE;
	}
	if (DBSet-&gt;IsBOF()) 
	{ 
		return FALSE;
	} 
	else if ( !DBSet-&gt;IsEOF() )
	{
		DBSet-&gt;MoveNext();
		if(!DBSet-&gt;IsEOF())	return TRUE;
		else	return FALSE;
	}
	else 
	{
		return FALSE;
	}
	return FALSE;
}
</code></pre>
<p>Ich hoffe ihr könnt mir helfen! Sitze schon seit 2 Tagen dran! Sorry für den hässligen Code, aberich hab das schon soviel ausprobiert,....</p>
<p>Danke</p>
<p>Gruß Andi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/485002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/485002</guid><dc:creator><![CDATA[Dragon2004]]></dc:creator><pubDate>Sat, 20 Mar 2004 16:20:10 GMT</pubDate></item><item><title><![CDATA[Reply to CRecordset::Update() Exception on Sun, 21 Mar 2004 19:35:44 GMT]]></title><description><![CDATA[<p>So da wohl keiner dieses Problem vor mir hatte versuche ich es mit en paar Details die ich bischer rausgefunden habe!</p>
<p>Also ich glaube ich habe eine mögliche fehlerquelle gefunden!</p>
<pre><code class="language-cpp">void CRecordset::ExecuteUpdateSQL()
{
	RETCODE nRetCode;

	if(!(m_dwOptions &amp; optimizeBulkAdd))
	{
		USES_CONVERSION;
		AFX_ODBC_CALL(::SQLExecDirect(m_hstmtUpdate,
			(UCHAR*)T2A((LPTSTR)(LPCTSTR)m_strUpdateSQL), SQL_NTS));
		if (!Check(nRetCode))
			ThrowDBException(nRetCode, m_hstmtUpdate);
	}
	else
	{
		AFX_ODBC_CALL(::SQLExecute(m_hstmtUpdate));
		if (!Check(nRetCode))
			ThrowDBException(nRetCode, m_hstmtUpdate);
	}
</code></pre>
<p>Hier</p>
<pre><code class="language-cpp">AFX_ODBC_CALL(::SQLExecDirect(m_hstmtUpdate,
			(UCHAR*)T2A((LPTSTR)(LPCTSTR)m_strUpdateSQL),SQL_NTS));
</code></pre>
<p>wird das axception geworfen!<br />
Und zwar wird in dem Makro davor ein SQL Statement generiert!<br />
&quot;{&quot;UPDATE `vereinsmitglieder` SET `Name`=?,`Vorname`=?,`ort`=?,`str_nr`=?,`geschlecht`=?,`aktiv_passiv`=?,`kontoinhaber`=?,`bankinstitut`=? WHERE CURRENT OF SQL_CUR0&quot;}&quot;<br />
Nach der verarbeitung dieses Strings wird das exception geworfen!<br />
komisch ist das ich im Dialog viel mehr Felder habe!<br />
Kann es sein das der String zu lang ist und somit einen Fehler verursacht???</p>
<p>Währe sehr sehr dankbar für anregungen!</p>
<p>Gruß Andi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/485668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/485668</guid><dc:creator><![CDATA[Dragon2004]]></dc:creator><pubDate>Sun, 21 Mar 2004 19:35:44 GMT</pubDate></item><item><title><![CDATA[Reply to CRecordset::Update() Exception on Mon, 22 Mar 2004 10:54:20 GMT]]></title><description><![CDATA[<p>Deine SQL-Anweisung sieht irgendwie komisch aus. Seit wann muss der Tabellenname mit Apostrophen angegeben werden (genau genommen sind das noch nicht mal welche...) ? Und die anderen Apostroph gehören doch wohl eher um den Inhalt und nicht um die Feldnamen. Vielleicht liegt es daran ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/485919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/485919</guid><dc:creator><![CDATA[isabeau]]></dc:creator><pubDate>Mon, 22 Mar 2004 10:54:20 GMT</pubDate></item><item><title><![CDATA[Reply to CRecordset::Update() Exception on Tue, 13 Apr 2004 10:55:38 GMT]]></title><description><![CDATA[<p>ich genaudasselbe problem, bei mir kommt die meldung no rows affected und ich find den fehler nicht, meinst das liegt an den ODBC treibern?</p>
<p>MfG<br />
T1c4L</p>
]]></description><link>https://www.c-plusplus.net/forum/post/500352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/500352</guid><dc:creator><![CDATA[T1c4L]]></dc:creator><pubDate>Tue, 13 Apr 2004 10:55:38 GMT</pubDate></item></channel></rss>