<?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[Kann Tabelle aus Datenbank nicht zweimal bearbeiten...]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe ein kleines(?!) Problem. Ich schreibe im Moment eine Anwendung die auf eine Datenbank zugreift, eine Tabelle anspricht und diese in ein Recordset lädt um sie zu bearbeiten. Das funktioniert auch alles Wunderbar, aber wenn die Spalte in der Tabelle die ich bearbeiten will, nicht &lt;NULL&gt; ist, also bereits einen Wert zugewiesen bekommen hat, dann bekomme ich folgenden Fehler:</p>
<p><strong>Debug Assertion Failed!</strong></p>
<p>Woran liegt denn das? Ich gebe zu ich bin absoluter Neuling auf dem Gebiet Datenbanken und genau deswegen treibt es mich in den Wahnsinn!</p>
<p>Hier ein wenig Source:</p>
<pre><code class="language-cpp">try{

//Datenbankverbindung
CDatabase pDB;
pDB.OpenEx(strConnect, CDatabase::useCursorLib);

//Recordset
KCPPFL1RSet CPPFL(&amp;pDB);
CPPFL.Open(KCPPFL1RSet::snapshot, _T(DynaSQL));

CPPFL.MoveNext();

do
{
CPPFL.Edit();
CPPFL.m_Spaltenname = NeuerInhalt;
CPPFL.Update();	
CPPFL.MoveNext();
} 
while (!CPPFL.IsEOF() &amp;&amp; ++i&lt;iMax &amp;&amp; c++&lt;iMax &amp;&amp; k++&lt;iMax+2);

if(CPPFL.IsEOF())
{
CPPFL.MovePrev();		
CPPFL.Edit();
CPPFL.m_Spaltenname = NeuerInhalt;
CPPFL.Update();
}
//Schließe Recordset
CPPFL.Close();
//Trenne Verbindung zur Datenbank
pDB.Close();
}
catch( CDBException* p )
{
p-&gt;ReportError();
p-&gt;Delete();
}
</code></pre>
<p>So, lasse ich das Script nun einmal durchlaufen und in der Tabelle befindet sich in der Spalte &quot;Spaltenname&quot; (hier gek. durch m_Spaltenname) der Wert &lt;NULL&gt; in JEDER Zeile, dann läuft das Script einwandfrei durch. Ist nun aber die Spalte &quot;Spaltenname&quot; schon gefüllt, weil ich das Script vll. ein zweites Mal durchlaufen lasse, dann bekomme ich die o.g. Fehlermeldung und mein Script bricht ab. - Warum? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Vielen vielen Dank, das ihr euch mir annehmt, ich bin wirklich mit meinem Latein am Ende.</p>
<p>Liebe Grüße,</p>
<p>Julian.</p>
<p>IDE: Microsoft Visual Studio .NET 2003<br />
OS: MS Windows XP Professional<br />
DB: MS SQL</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/221199/kann-tabelle-aus-datenbank-nicht-zweimal-bearbeiten</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 05:54:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/221199.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 26 Aug 2008 10:29:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kann Tabelle aus Datenbank nicht zweimal bearbeiten... on Tue, 26 Aug 2008 10:29:21 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe ein kleines(?!) Problem. Ich schreibe im Moment eine Anwendung die auf eine Datenbank zugreift, eine Tabelle anspricht und diese in ein Recordset lädt um sie zu bearbeiten. Das funktioniert auch alles Wunderbar, aber wenn die Spalte in der Tabelle die ich bearbeiten will, nicht &lt;NULL&gt; ist, also bereits einen Wert zugewiesen bekommen hat, dann bekomme ich folgenden Fehler:</p>
<p><strong>Debug Assertion Failed!</strong></p>
<p>Woran liegt denn das? Ich gebe zu ich bin absoluter Neuling auf dem Gebiet Datenbanken und genau deswegen treibt es mich in den Wahnsinn!</p>
<p>Hier ein wenig Source:</p>
<pre><code class="language-cpp">try{

//Datenbankverbindung
CDatabase pDB;
pDB.OpenEx(strConnect, CDatabase::useCursorLib);

//Recordset
KCPPFL1RSet CPPFL(&amp;pDB);
CPPFL.Open(KCPPFL1RSet::snapshot, _T(DynaSQL));

CPPFL.MoveNext();

do
{
CPPFL.Edit();
CPPFL.m_Spaltenname = NeuerInhalt;
CPPFL.Update();	
CPPFL.MoveNext();
} 
while (!CPPFL.IsEOF() &amp;&amp; ++i&lt;iMax &amp;&amp; c++&lt;iMax &amp;&amp; k++&lt;iMax+2);

if(CPPFL.IsEOF())
{
CPPFL.MovePrev();		
CPPFL.Edit();
CPPFL.m_Spaltenname = NeuerInhalt;
CPPFL.Update();
}
//Schließe Recordset
CPPFL.Close();
//Trenne Verbindung zur Datenbank
pDB.Close();
}
catch( CDBException* p )
{
p-&gt;ReportError();
p-&gt;Delete();
}
</code></pre>
<p>So, lasse ich das Script nun einmal durchlaufen und in der Tabelle befindet sich in der Spalte &quot;Spaltenname&quot; (hier gek. durch m_Spaltenname) der Wert &lt;NULL&gt; in JEDER Zeile, dann läuft das Script einwandfrei durch. Ist nun aber die Spalte &quot;Spaltenname&quot; schon gefüllt, weil ich das Script vll. ein zweites Mal durchlaufen lasse, dann bekomme ich die o.g. Fehlermeldung und mein Script bricht ab. - Warum? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Vielen vielen Dank, das ihr euch mir annehmt, ich bin wirklich mit meinem Latein am Ende.</p>
<p>Liebe Grüße,</p>
<p>Julian.</p>
<p>IDE: Microsoft Visual Studio .NET 2003<br />
OS: MS Windows XP Professional<br />
DB: MS SQL</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1571613</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571613</guid><dc:creator><![CDATA[JulianB]]></dc:creator><pubDate>Tue, 26 Aug 2008 10:29:21 GMT</pubDate></item><item><title><![CDATA[Reply to Kann Tabelle aus Datenbank nicht zweimal bearbeiten... on Tue, 26 Aug 2008 18:05:17 GMT]]></title><description><![CDATA[<p>Geh das mal mit dem Debugger durch. Den Umgang mit dem kannst du nie zu früh lernen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1571861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571861</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 26 Aug 2008 18:05:17 GMT</pubDate></item><item><title><![CDATA[Reply to Kann Tabelle aus Datenbank nicht zweimal bearbeiten... on Wed, 27 Aug 2008 06:45:08 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich kenne mich mit &quot;MS SQL&quot; gar nicht aus .... aber ein Problem (das ich von DB2 her kenne) könnte auch sein, dass das Schreiben auf der Tabelle den dahinterliegenden Cursor ungültig macht (entweder prinzipiell oder man muss ihn mit &quot;for update&quot; deklarieren/öffnen).</p>
<p>JulianB schrieb:</p>
<blockquote>
<p>...</p>
<pre><code class="language-cpp">...
do
{
...
CPPFL.Update();	
CPPFL.MoveNext();
} 
...
</code></pre>
</blockquote>
<p>Dazu müsstest Du die Doku wälzen (und wahrscheinlich nicht mal ein Debugger würde Dir dabei helfen).</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1572022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1572022</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 27 Aug 2008 06:45:08 GMT</pubDate></item><item><title><![CDATA[Reply to Kann Tabelle aus Datenbank nicht zweimal bearbeiten... on Wed, 27 Aug 2008 07:08:15 GMT]]></title><description><![CDATA[<p>Okay, dann fang ich mal an zu wälzen. Vielen vielen Dank ich melde mich wenns voran geht.</p>
<p>Liebe Grüße,</p>
<p>Julian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1572028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1572028</guid><dc:creator><![CDATA[JulianB]]></dc:creator><pubDate>Wed, 27 Aug 2008 07:08:15 GMT</pubDate></item><item><title><![CDATA[Reply to Kann Tabelle aus Datenbank nicht zweimal bearbeiten... on Thu, 28 Aug 2008 07:12:47 GMT]]></title><description><![CDATA[<p>So ich habs hinbekommen, die Lösung war eigentlich nicht schwer, nur schwer zu finden.</p>
<p>Also ich habe eine Tabelle in der jede Zeile einer Spalte als char(4096) deklariert wird.<br />
CRecordset, reserviert automatisch aber immer nur char(255) pro Zeile, was heißen soll, wenn man im Recordset mehr Speicherplatz reserviert, ist alles so wie es sein soll.</p>
<pre><code class="language-cpp">RFX_Text(pFX, _T(&quot;[Spaltenname]&quot;), m_Spaltenname, 5000);
</code></pre>
<p>Auf die 5000 kommt es an, damit reserviere ich nun char(5000) und mein Datensatz wird beim zweiten mal Bearbeiten nicht mehr abgeschnitten, ergo mein Programm stürzt nicht mehr ab.</p>
<p>So jedenfalls meine Theorie! Doch siehe da, sie geht! Ich weiß nur nicht ob meine Erklärung so stimmt, ich bin ziemlich schlecht wenns ums Erklären geht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Vielen vielen Dank an euch!!!</p>
<p>Liebe Grüße,</p>
<p>Julian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1572693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1572693</guid><dc:creator><![CDATA[JulianB]]></dc:creator><pubDate>Thu, 28 Aug 2008 07:12:47 GMT</pubDate></item><item><title><![CDATA[Reply to Kann Tabelle aus Datenbank nicht zweimal bearbeiten... on Thu, 28 Aug 2008 07:17:37 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>also spätestens bei</p>
<p>JulianB schrieb:</p>
<blockquote>
<p>...jede Zeile einer Spalte ...</p>
</blockquote>
<p>hängst Du mich ab.<br />
&quot;Spalten&quot; haben üblicherweise keine &quot;Zeilen&quot; ...</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1572696</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1572696</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 28 Aug 2008 07:17:37 GMT</pubDate></item></channel></rss>