<?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[ADOSql Problehm]]></title><description><![CDATA[<p>Also:<br />
ich habe 2 Methoden die Fast das gleiche machen, die eine ist für mehrere Tabellen ausgelegt, und die andere is abgespeckt und nur für eine. Das Problehm ist jetzt das bei der &quot;GetTableValues&quot; Methode etwas zurückgegeben wird und bei der &quot;Sql2DB&quot; immer NULL zurück gegeben wird. Ich verstehs langsam nicht mehr, sogar die SQL Anweisung selbst ähnelt sich</p>
<pre><code class="language-cpp">AnsiString __fastcall Tmod_DBase_con::Sql2DB(AnsiString Tabelle, AnsiString Feld, AnsiString SqlCommand)
/*
  Sendet einen SQL Befehl ( nur DDL ) an die DB und liefert das Ergebniss zurück
*/
{
  AnsiString tmpTable = &quot;&quot;;
  AnsiString tmpSrc = &quot;&quot;;
  try
  {
      tmpTable = ADOTable1-&gt;TableName;
      ADOTable1-&gt;TableName = Tabelle;
      ADOTable1-&gt;Active = false;
      ADOTable1-&gt;Active = true ; //ein/Ausschalten um die Table zu wechseln
      ADOQuery1-&gt;ConnectionString = ADOConnection1-&gt;ConnectionString;
      ADOQuery1-&gt;SQL-&gt;Clear();
      ADOQuery1-&gt;SQL-&gt;Add(SqlCommand);
      ADOQuery1-&gt;Active = true;

      ADOQuery1-&gt;Open();

      return mod_DBase_con-&gt;SqlZellen; //CommandText;

      ADOQuery1-&gt;Active = false;
      ADOTable1-&gt;TableName = tmpTable;
      ADOTable1-&gt;Active = false;
      ADOTable1-&gt;Active = true ; //ein/Ausschalten um die Table zu wechseln
  }
  catch(...)
  {
    ShowMessage(&quot;ERROR-&gt;Sql2DB&quot;);
  }
}
</code></pre>
<pre><code class="language-cpp">void __fastcall Tmod_DBase_con::GetTableValues(AnsiString SourceTable, /*AnsiString SourceFiel,*/ AnsiString CommandText, TStrings * dest)
{
  vector&lt;AnsiString&gt; SourceFields(1);
  //AnsiString SourceField;
  AnsiString tmpTable = &quot;&quot;;
  AnsiString tmpSrc = &quot;&quot;;
  try
  {
      tmpTable = ADOTable1-&gt;TableName;
      ADOTable1-&gt;TableName = SourceTable;
      ADOTable1-&gt;Active = false;
      ADOTable1-&gt;Active = true ; //ein/Ausschalten um die Table zu wechseln
      ADOQuery1-&gt;ConnectionString = ADOConnection1-&gt;ConnectionString;
      ADOQuery1-&gt;SQL-&gt;Clear();
      ADOQuery1-&gt;SQL-&gt;Add(CommandText);
      ADOQuery1-&gt;Active = true;

      ADOQuery1-&gt;Open();
      SourceFields[0] = mod_DBase_con-&gt;SqlZellen; //CommandText;
      //dest-&gt;Add(mod_DBase_con-&gt;ADOQuery1-&gt;FieldByName(SourceField)-&gt;AsString );
      if ( SourceFields[0].Pos(&quot;,&quot;) ) //prüfung ob es mehrere Zellen sind
      {
        AnsiString tmpStr = SourceFields[0];

        SourceFields[0] = &quot;&quot;;
        SourceFields.resize(0);
        while( tmpStr.Pos(&quot;,&quot;) )
        {
          SourceFields.push_back( tmpStr.SubString(1,tmpStr.Pos(&quot;,&quot;)-1) );
          tmpStr.Delete(1,tmpStr.Pos(&quot;,&quot;)+1);
          tmpSrc += &quot;&quot;+SourceFields.at( SourceFields.size()-1 )+&quot;\t&quot;;
        }

        SourceFields.push_back( tmpStr );
        tmpSrc += tmpStr;

        dest-&gt;Add(tmpSrc);
      }
      else
      {
        dest-&gt;Add(SourceFields[0]);
      }

      AnsiString xtmp2 = &quot;&quot;;
      mod_DBase_con-&gt;ADOQuery1-&gt;First();
      for ( int i = 0; i &lt; mod_DBase_con-&gt;ADOQuery1-&gt;RecordCount; i++)
      {
        for( int v = 0; v &lt; SourceFields.size(); v++ )
        {
          xtmp2 += AnsiString(mod_DBase_con-&gt;ADOQuery1-&gt;FieldByName(SourceFields.at(v))-&gt;AsString )+&quot;\t&quot;;
        }
        mod_DBase_con-&gt;ADOQuery1-&gt;Next(); //091943?10?
        dest-&gt;Add(xtmp2);
        xtmp2 = &quot;&quot;;
      }
      mod_DBase_con-&gt;ADOQuery1-&gt;Active = false;
      ADOTable1-&gt;TableName = tmpTable;
      ADOTable1-&gt;Active = false;
      ADOTable1-&gt;Active = true ; //ein/Ausschalten um die Table zu wechseln
  }
  catch(...)
  {
    ;
  }
}
</code></pre>
<p>der aufruf findet folgendermaßen statt:</p>
<pre><code class="language-cpp">mod_DBase_con-&gt;GetTableValues(TableListBox-&gt;Items-&gt;Strings[ TableListBox-&gt;ItemIndex ],
                                  /*cbx_Tabelle-&gt;Text,*/Edit1-&gt;Text, RichEdit1-&gt;Lines  );

AnsiString sqlerg = mod_DBase_con-&gt;Sql2DB(DBTabelle,Feld,&quot;SELECT ID FROM &quot;+DBTabelle+&quot; where &quot;+Feld+&quot;='&quot;+Artikel+&quot;'&quot;);
</code></pre>
<p>was kann da nicht stimmen? <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>mfg LordPsycho</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/81775/adosql-problehm</link><generator>RSS for Node</generator><lastBuildDate>Fri, 03 Jul 2026 14:39:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/81775.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Aug 2004 07:00:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ADOSql Problehm on Wed, 04 Aug 2004 07:01:50 GMT]]></title><description><![CDATA[<p>Also:<br />
ich habe 2 Methoden die Fast das gleiche machen, die eine ist für mehrere Tabellen ausgelegt, und die andere is abgespeckt und nur für eine. Das Problehm ist jetzt das bei der &quot;GetTableValues&quot; Methode etwas zurückgegeben wird und bei der &quot;Sql2DB&quot; immer NULL zurück gegeben wird. Ich verstehs langsam nicht mehr, sogar die SQL Anweisung selbst ähnelt sich</p>
<pre><code class="language-cpp">AnsiString __fastcall Tmod_DBase_con::Sql2DB(AnsiString Tabelle, AnsiString Feld, AnsiString SqlCommand)
/*
  Sendet einen SQL Befehl ( nur DDL ) an die DB und liefert das Ergebniss zurück
*/
{
  AnsiString tmpTable = &quot;&quot;;
  AnsiString tmpSrc = &quot;&quot;;
  try
  {
      tmpTable = ADOTable1-&gt;TableName;
      ADOTable1-&gt;TableName = Tabelle;
      ADOTable1-&gt;Active = false;
      ADOTable1-&gt;Active = true ; //ein/Ausschalten um die Table zu wechseln
      ADOQuery1-&gt;ConnectionString = ADOConnection1-&gt;ConnectionString;
      ADOQuery1-&gt;SQL-&gt;Clear();
      ADOQuery1-&gt;SQL-&gt;Add(SqlCommand);
      ADOQuery1-&gt;Active = true;

      ADOQuery1-&gt;Open();

      return mod_DBase_con-&gt;SqlZellen; //CommandText;

      ADOQuery1-&gt;Active = false;
      ADOTable1-&gt;TableName = tmpTable;
      ADOTable1-&gt;Active = false;
      ADOTable1-&gt;Active = true ; //ein/Ausschalten um die Table zu wechseln
  }
  catch(...)
  {
    ShowMessage(&quot;ERROR-&gt;Sql2DB&quot;);
  }
}
</code></pre>
<pre><code class="language-cpp">void __fastcall Tmod_DBase_con::GetTableValues(AnsiString SourceTable, /*AnsiString SourceFiel,*/ AnsiString CommandText, TStrings * dest)
{
  vector&lt;AnsiString&gt; SourceFields(1);
  //AnsiString SourceField;
  AnsiString tmpTable = &quot;&quot;;
  AnsiString tmpSrc = &quot;&quot;;
  try
  {
      tmpTable = ADOTable1-&gt;TableName;
      ADOTable1-&gt;TableName = SourceTable;
      ADOTable1-&gt;Active = false;
      ADOTable1-&gt;Active = true ; //ein/Ausschalten um die Table zu wechseln
      ADOQuery1-&gt;ConnectionString = ADOConnection1-&gt;ConnectionString;
      ADOQuery1-&gt;SQL-&gt;Clear();
      ADOQuery1-&gt;SQL-&gt;Add(CommandText);
      ADOQuery1-&gt;Active = true;

      ADOQuery1-&gt;Open();
      SourceFields[0] = mod_DBase_con-&gt;SqlZellen; //CommandText;
      //dest-&gt;Add(mod_DBase_con-&gt;ADOQuery1-&gt;FieldByName(SourceField)-&gt;AsString );
      if ( SourceFields[0].Pos(&quot;,&quot;) ) //prüfung ob es mehrere Zellen sind
      {
        AnsiString tmpStr = SourceFields[0];

        SourceFields[0] = &quot;&quot;;
        SourceFields.resize(0);
        while( tmpStr.Pos(&quot;,&quot;) )
        {
          SourceFields.push_back( tmpStr.SubString(1,tmpStr.Pos(&quot;,&quot;)-1) );
          tmpStr.Delete(1,tmpStr.Pos(&quot;,&quot;)+1);
          tmpSrc += &quot;&quot;+SourceFields.at( SourceFields.size()-1 )+&quot;\t&quot;;
        }

        SourceFields.push_back( tmpStr );
        tmpSrc += tmpStr;

        dest-&gt;Add(tmpSrc);
      }
      else
      {
        dest-&gt;Add(SourceFields[0]);
      }

      AnsiString xtmp2 = &quot;&quot;;
      mod_DBase_con-&gt;ADOQuery1-&gt;First();
      for ( int i = 0; i &lt; mod_DBase_con-&gt;ADOQuery1-&gt;RecordCount; i++)
      {
        for( int v = 0; v &lt; SourceFields.size(); v++ )
        {
          xtmp2 += AnsiString(mod_DBase_con-&gt;ADOQuery1-&gt;FieldByName(SourceFields.at(v))-&gt;AsString )+&quot;\t&quot;;
        }
        mod_DBase_con-&gt;ADOQuery1-&gt;Next(); //091943?10?
        dest-&gt;Add(xtmp2);
        xtmp2 = &quot;&quot;;
      }
      mod_DBase_con-&gt;ADOQuery1-&gt;Active = false;
      ADOTable1-&gt;TableName = tmpTable;
      ADOTable1-&gt;Active = false;
      ADOTable1-&gt;Active = true ; //ein/Ausschalten um die Table zu wechseln
  }
  catch(...)
  {
    ;
  }
}
</code></pre>
<p>der aufruf findet folgendermaßen statt:</p>
<pre><code class="language-cpp">mod_DBase_con-&gt;GetTableValues(TableListBox-&gt;Items-&gt;Strings[ TableListBox-&gt;ItemIndex ],
                                  /*cbx_Tabelle-&gt;Text,*/Edit1-&gt;Text, RichEdit1-&gt;Lines  );

AnsiString sqlerg = mod_DBase_con-&gt;Sql2DB(DBTabelle,Feld,&quot;SELECT ID FROM &quot;+DBTabelle+&quot; where &quot;+Feld+&quot;='&quot;+Artikel+&quot;'&quot;);
</code></pre>
<p>was kann da nicht stimmen? <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>mfg LordPsycho</p>
]]></description><link>https://www.c-plusplus.net/forum/post/574819</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/574819</guid><dc:creator><![CDATA[LordPsycho]]></dc:creator><pubDate>Wed, 04 Aug 2004 07:01:50 GMT</pubDate></item><item><title><![CDATA[Reply to ADOSql Problehm on Wed, 04 Aug 2004 07:32:43 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich hab' mir den Code nicht im Detail angesehen, aber viele Probleme lösen sich von selbst, wenn man auf die Verwendung von TxxxTable-Komponenten verzichtet. Abgesehen von TTable in Verbindung mit Paradox oder dBase macht der Einsatz von Tablekomponenten sowieso keinen Sinn. Alle Komponenten wie TADOTable oder TIBTable usw. sind meiner Erfahrung nach wenig mehr als Marketingkrücken. Sie funktionieren unzuverlässig und mit teilweise recht obskuren, nicht nachvollziehbaren Ergebnissen. Sogar die Hersteller raten im Regelfall von der Verwendung ab. Ihre Daseinsberechtigung ergibt sich aus der Notwendigkeit ein bestehendes Programm mit BDE und TTable ohne große Aufwand auf z.B. ADO umstellen zu können. Meiner Erfahrung nach funktioniert das aber im Regelfall nur mit Einschränkungen und einer Reihe 'lustiger' Nebeneffekte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/574842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/574842</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 04 Aug 2004 07:32:43 GMT</pubDate></item><item><title><![CDATA[Reply to ADOSql Problehm on Wed, 04 Aug 2004 07:38:05 GMT]]></title><description><![CDATA[<p>hab den Fehler gefunden,<br />
kommt davon wenn man einfach kopiert ohne großartig nach zu denken <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/574845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/574845</guid><dc:creator><![CDATA[LordPsycho]]></dc:creator><pubDate>Wed, 04 Aug 2004 07:38:05 GMT</pubDate></item><item><title><![CDATA[Reply to ADOSql Problehm on Wed, 04 Aug 2004 09:51:21 GMT]]></title><description><![CDATA[<p>Es gehört zum guten Ton, auch selbstgefundene und/oder triviale Lösungen bekanntzugeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/574957</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/574957</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Wed, 04 Aug 2004 09:51:21 GMT</pubDate></item><item><title><![CDATA[Reply to ADOSql Problehm on Wed, 15 Sep 2004 11:40:19 GMT]]></title><description><![CDATA[<p>könntes du noch sagen was der fehler gewesen ist und was mod_Dbase_con für ein element ist??<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>vielen dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/607733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/607733</guid><dc:creator><![CDATA[trade]]></dc:creator><pubDate>Wed, 15 Sep 2004 11:40:19 GMT</pubDate></item></channel></rss>