<?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[TDBComboBox per ADO dynamisch füllen]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich fülle per ADO aus einer Access-Datenbank eine TDBComboBox (ist im Formular<br />
vorhanden) über einen Button-Event. Dies erzeugt jedoch eine EAccessViolation bei dem Ausdruck cmbA-&gt;DataSource = dsMonate;<br />
Habe schon alles versucht... Mit dem Wizzard von C++Builder6 klappt es, aber ich benötige es dynamisch, da ich die Combobox immer unterschiedlich befülle (je nach Kategorie). Der Code steht in der Main.cpp nicht im Header-File.</p>
<p>Code:</p>
<p>TADOQuery *ADOQuery;<br />
TDataSource *dsMonate;</p>
<p>void __fastcall TMainForm::cmdCalClick(TObject *Sender)<br />
{</p>
<p>// Verbindung zur DB<br />
AnsiString connStr;<br />
connStr = &quot;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\\timeorg.mdb&quot;;<br />
ADOQuery-&gt;ConnectionString = connStr;<br />
ADOQuery-&gt;SQL-&gt;Add(&quot;SELECT DISTINCT monat FROM projektdaten&quot;);<br />
ADOQuery-&gt;Active = true;<br />
ADOQuery-&gt;Open();</p>
<p>// Combo anbinden<br />
TDBComboBox *cmbA; // Combo nochmals deklariert für Main Form<br />
dsMonate-&gt;DataSet = ADOQuery;<br />
cmbA-&gt;DataSource = dsMonate; // hier ist der Fehler<br />
cmbA-&gt;DataField = &quot;monat&quot;;</p>
<p>}</p>
<p>Eine weitere Frage:<br />
Im Header File werden alle GUI Komponenten (Labels, Textboxen, Buttons) deklariert.<br />
Sofern man jedoch in der .cpp Datei darauf zugreifen will, muß man sie dort neu<br />
deklarieren. Warum ? Der Header-File wird doch dort included. Hängt das mit dem Compiler zusammen?</p>
<p>Danke für alle Antworten</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/154492/tdbcombobox-per-ado-dynamisch-füllen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 09 Aug 2026 17:38:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/154492.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 27 Jul 2006 16:09:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to TDBComboBox per ADO dynamisch füllen on Thu, 27 Jul 2006 16:09:24 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich fülle per ADO aus einer Access-Datenbank eine TDBComboBox (ist im Formular<br />
vorhanden) über einen Button-Event. Dies erzeugt jedoch eine EAccessViolation bei dem Ausdruck cmbA-&gt;DataSource = dsMonate;<br />
Habe schon alles versucht... Mit dem Wizzard von C++Builder6 klappt es, aber ich benötige es dynamisch, da ich die Combobox immer unterschiedlich befülle (je nach Kategorie). Der Code steht in der Main.cpp nicht im Header-File.</p>
<p>Code:</p>
<p>TADOQuery *ADOQuery;<br />
TDataSource *dsMonate;</p>
<p>void __fastcall TMainForm::cmdCalClick(TObject *Sender)<br />
{</p>
<p>// Verbindung zur DB<br />
AnsiString connStr;<br />
connStr = &quot;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\\timeorg.mdb&quot;;<br />
ADOQuery-&gt;ConnectionString = connStr;<br />
ADOQuery-&gt;SQL-&gt;Add(&quot;SELECT DISTINCT monat FROM projektdaten&quot;);<br />
ADOQuery-&gt;Active = true;<br />
ADOQuery-&gt;Open();</p>
<p>// Combo anbinden<br />
TDBComboBox *cmbA; // Combo nochmals deklariert für Main Form<br />
dsMonate-&gt;DataSet = ADOQuery;<br />
cmbA-&gt;DataSource = dsMonate; // hier ist der Fehler<br />
cmbA-&gt;DataField = &quot;monat&quot;;</p>
<p>}</p>
<p>Eine weitere Frage:<br />
Im Header File werden alle GUI Komponenten (Labels, Textboxen, Buttons) deklariert.<br />
Sofern man jedoch in der .cpp Datei darauf zugreifen will, muß man sie dort neu<br />
deklarieren. Warum ? Der Header-File wird doch dort included. Hängt das mit dem Compiler zusammen?</p>
<p>Danke für alle Antworten</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1105530</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1105530</guid><dc:creator><![CDATA[javad]]></dc:creator><pubDate>Thu, 27 Jul 2006 16:09:24 GMT</pubDate></item><item><title><![CDATA[Reply to TDBComboBox per ADO dynamisch füllen on Thu, 27 Jul 2006 16:37:31 GMT]]></title><description><![CDATA[<p>Man muß diese GUI-Komponenten nicht neu deklarieren. Da machst du irgendwas falsch. Laß diese Deklarationen dort wieder weg. Da muß ja eine Access-Violation kommen.<br />
Welche Fehlermeldung hattest du vorher?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1105548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1105548</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 27 Jul 2006 16:37:31 GMT</pubDate></item><item><title><![CDATA[Reply to TDBComboBox per ADO dynamisch füllen on Thu, 27 Jul 2006 20:16:00 GMT]]></title><description><![CDATA[<p>Die TADOQuery und TDataSource sind nicht auf der MainForm, also erzeuge ich sie hier.</p>
<p>Auf der MainForm sind mehrere TDBComboBoxen.<br />
Wenn ich Sie nicht neu deklariere mit &quot;TDBComboBox *cmbA;&quot;<br />
bekomme ich die Fehlermeldung:<br />
[C++ Fehler] Tmcpp.cpp(257): E2451 Undefiniertes Symbol 'cmbA'</p>
<p>Wenn ich sie deklariere, kommt als Warnung:<br />
[C++ Warnung] Tmcpp.cpp(257): W8013 Wahrscheinliche Verwendung von 'cmbA' vor Definition<br />
und bei Programmausführung als Exception:<br />
Eaccesviolation an Adresse ... mit Zugriffsverletzung.</p>
<p>Ich wundere mich ja selbst darüber, denn im Header sind ja alle auf der MainForm plazierten Komponenten schon definiert, und der wird ja schließlich included.</p>
<p>Da ich neu in C++ bin, bin ich von C++ sehr erstaunt alles nochmals deklarieren zu müssen, und kann es eigentlich nicht glauben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1105668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1105668</guid><dc:creator><![CDATA[javad]]></dc:creator><pubDate>Thu, 27 Jul 2006 20:16:00 GMT</pubDate></item><item><title><![CDATA[Reply to TDBComboBox per ADO dynamisch füllen on Fri, 28 Jul 2006 05:10:13 GMT]]></title><description><![CDATA[<p>schau mal bitte in die <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39305.html" rel="nofollow">FAQ</a> unter Forms -&gt; &quot;Variablenübergabe an andere Form&quot;<br />
das geht ebenso mit Komponenten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1105782</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1105782</guid><dc:creator><![CDATA[Linnea]]></dc:creator><pubDate>Fri, 28 Jul 2006 05:10:13 GMT</pubDate></item><item><title><![CDATA[Reply to TDBComboBox per ADO dynamisch füllen on Fri, 28 Jul 2006 08:12:56 GMT]]></title><description><![CDATA[<p>javad schrieb:</p>
<blockquote>
<p>Da ich neu in C++ bin, bin ich von C++ sehr erstaunt alles nochmals deklarieren zu müssen, und kann es eigentlich nicht glauben.</p>
</blockquote>
<p>Ich hatte es zwar vorher schon gesagt, aber ich machs lieber nochmal. Du mußt/darfst die im Header einer Form deklarierten Variablen nicht neu deklarieren. Damit erzeugst du neue, uninitialiserte, lokale Variablen. Bitte lies dir ein C++-Tutorial zum Thema Variablen und Pointer durch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1105907</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1105907</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 28 Jul 2006 08:12:56 GMT</pubDate></item><item><title><![CDATA[Reply to TDBComboBox per ADO dynamisch füllen on Fri, 28 Jul 2006 14:24:40 GMT]]></title><description><![CDATA[<p>Erstmal Danke für die Antwort.</p>
<p>Genau so sehe ich es auch, dazu wird der Header ja included.</p>
<p>Es geht eigentlich nicht um ADO, sondern darum.</p>
<p>Ich habe einen Button-Event. Wenn ich darin eine Combobox ändere, geht es.<br />
Wenn ich im Event eine weitere Funktion aufrufe, die die Combobox ändern soll,<br />
geht es nicht.</p>
<p>// Deklaration der Funktion<br />
void setComboA();</p>
<p>//Button-Event<br />
void __fastcall TMainForm::cmdCalClick(TObject *Sender)<br />
{<br />
// DBComboBox leeren<br />
cmbA-&gt;Clear();</p>
<p>// Aufruf Funktion<br />
setComboA();<br />
}</p>
<p>void setComboA() {<br />
// weitere Anweisungen für ComboBoxA<br />
cmbA-&gt;Visible = true;<br />
// hier kommt als Fehler: E2451 Undefiniertes Symbol 'cmbA'<br />
}</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1106198</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1106198</guid><dc:creator><![CDATA[javad]]></dc:creator><pubDate>Fri, 28 Jul 2006 14:24:40 GMT</pubDate></item><item><title><![CDATA[Reply to TDBComboBox per ADO dynamisch füllen on Fri, 28 Jul 2006 14:37:37 GMT]]></title><description><![CDATA[<p>setComboA ist keine Memberfunktion von TMainForm und kann somit auch nicht auf deren Member zugreifen. Entweder du machst setComboA zur Memberfunktion oder du übergibst ihr noch einen Pointer auf die Mainform.</p>
<pre><code class="language-cpp">void setComboA(TMainForm* form) {
// weitere Anweisungen für ComboBoxA
  form-&gt;cmbA-&gt;Visible = true;
// hier kommt als Fehler: E2451 Undefiniertes Symbol 'cmbA' - jetzt nicht mehr
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1106205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1106205</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 28 Jul 2006 14:37:37 GMT</pubDate></item><item><title><![CDATA[Reply to TDBComboBox per ADO dynamisch füllen on Fri, 28 Jul 2006 15:40:13 GMT]]></title><description><![CDATA[<p>YEP!</p>
<p>Es geht so:</p>
<p>//Deklar. Funktion<br />
void setComboA(TMainForm* MainForm);</p>
<p>//Aufruf:<br />
setComboA(MainForm);</p>
<p>void setComboA(TMainForm* MainForm) {<br />
MainForm-&gt;cmbA-&gt;Clear();<br />
}</p>
<p>oder so:</p>
<p>//Deklar. Funktion<br />
void setComboA();</p>
<p>Aufruf:<br />
setComboA();</p>
<p>void setComboA() {<br />
MainForm-&gt;cmbA-&gt;Clear();<br />
}</p>
<p>Ich habe keine Ahnung, was der Unterschied ist <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="😉"
    /><br />
Werde mir jetzt ansehen, was Member-Variablen sind, und wieso<br />
C++ das bei einer TForm braucht. In Java oder <a href="http://VB.Net" rel="nofollow">VB.Net</a> ist der Zugriff<br />
auf Komponenten ohne Ableitung über den Container möglich.</p>
<p>Endlich klappts, und ich kann einen Großteil des GUI erstellen.</p>
<p>Vielen, vielen Dank für deine raschen Antworten.<br />
Ich sitze schon einige Tage daran. War wohl die Hitze <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/1106238</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1106238</guid><dc:creator><![CDATA[javad]]></dc:creator><pubDate>Fri, 28 Jul 2006 15:40:13 GMT</pubDate></item><item><title><![CDATA[Reply to TDBComboBox per ADO dynamisch füllen on Fri, 28 Jul 2006 16:06:33 GMT]]></title><description><![CDATA[<p>Ich kenn zwar Java jetzt nicht, kann mir aber kaum vorstellen, dass man dort auf Klassenmember ohne Klassen instanz zugreifen kann (es sei denn sie sind statisch).<br />
Dir fehlen anscheinend noch die OOP-Grundlagen.<br />
<a href="http://tutorial.schornboeck.net/oop2.htm" rel="nofollow">http://tutorial.schornboeck.net/oop2.htm</a><br />
Außerdem wurden hier keine Container abgeleitet. Oder sind Container in Java sowas wie hier Instanzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1106264</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1106264</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 28 Jul 2006 16:06:33 GMT</pubDate></item><item><title><![CDATA[Reply to TDBComboBox per ADO dynamisch füllen on Fri, 28 Jul 2006 17:41:40 GMT]]></title><description><![CDATA[<p>In Java oder <a href="http://VB.Net" rel="nofollow">VB.Net</a> ist es nur nötig vor einer<br />
GUI Komponente die Form anzugeben, wie bei<br />
MainForm-&gt;cmbA-&gt;Clear(), wenn eine Klasseninstanz<br />
in einer andereren Klasse erzeugt wurde.</p>
<p>Sonst genügt: cmbA.setVisible(true);</p>
<p>Unter Container verstehe ich hier die MainForm als Owner der ComboBox.<br />
Es wird kein Container abgeleitet, sondern von einem Container...<br />
Das Ding, wo Die Combo draufsitzt ...</p>
<p>Im Sinne der OOP verwende ich eine neue Funktion ... denk mal nach über die Punkte Wiederverwendbarkeit, Geheimnisprinzip und Kapselung von Funktionen (in Java übrigens Methoden genannt)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1106317</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1106317</guid><dc:creator><![CDATA[javad]]></dc:creator><pubDate>Fri, 28 Jul 2006 17:41:40 GMT</pubDate></item><item><title><![CDATA[Reply to TDBComboBox per ADO dynamisch füllen on Fri, 28 Jul 2006 17:46:22 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Das istin C++ alles genauso. Das wirst du schon merken, wenn du ein Tutorial zum Thema OOP in C++ durchgenommen hast.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1106320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1106320</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Fri, 28 Jul 2006 17:46:22 GMT</pubDate></item><item><title><![CDATA[Reply to TDBComboBox per ADO dynamisch füllen on Fri, 28 Jul 2006 18:03:25 GMT]]></title><description><![CDATA[<p>Ja Danke...<br />
mich nervt nur unwahrscheinlich, das ich einen Ausdruck wie:</p>
<p>void __fastcall TMainForm::cmdClientsClick(TObject *Sender)</p>
<p>überhaupt nicht kapiere.</p>
<p>_fastcall mit einem Unterstrich oder 2 ???<br />
2 Doppelpunkte ????</p>
<p>Dieser Synthax ist mir aus anderen Sprachen nicht bekannt.</p>
<p>Den Zuweisungsoperator &quot;-&gt;&quot; gibts sonst auch nirgends <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>
<p>Und Zeiger / Pointer kenne ich bisher auch nicht.<br />
Muß man sich halt draufschaffen.</p>
<p>Aber dafür, daß ich in einer Woche eine Datenbankanwendung zum Laufen gebracht habe, läuft es ganz gut.</p>
<p>Bin schon gespannt, was kommt wenn Combos ins Grid sollen etc ...</p>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1106330</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1106330</guid><dc:creator><![CDATA[javad]]></dc:creator><pubDate>Fri, 28 Jul 2006 18:03:25 GMT</pubDate></item><item><title><![CDATA[Reply to TDBComboBox per ADO dynamisch füllen on Fri, 28 Jul 2006 18:49:36 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Es stimmt schon das C++ umständlicher als java erscheint, wenn man Java gewöhnt ist. Nichtsdestrotrotz ist des Objektmodell fast dasselbe. Die <a href="http://tutorial.schornboeck.net/inhalt.htm" rel="nofollow">Syntax und die Grundlagen</a> solltest du aber unbedingt verstehen, wenn du mit der VCL solche Sachenn machen willst.</p>
<blockquote>
<p>_fastcall mit einem Unterstrich oder 2 ???</p>
</blockquote>
<p><em>__fastcall</em> ist ein VCL-spezifisches Schlüsselwort. Und wird dort immer mit zwei Unterstrichen geschrieben. Es ist für Optimierungszwecke bei den Methdoenaufrufen da.</p>
<blockquote>
<p>2 Doppelpunkte ????</p>
</blockquote>
<p>Die bezeichnen das die folgende Methode eine Implementaion der vorher genannten Klasse ist.</p>
<blockquote>
<p>Den Zuweisungsoperator &quot;-&gt;&quot; gibts sonst auch nirgends <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>
</blockquote>
<p><em>a-&gt;b</em> ist äquivalent zu<br />
*(<em>a).b</em>. Das heißt a ist ein Pointer auf eine Klasseninstanz, deren Element b aufgerufen werden soll.</p>
<blockquote>
<p>Und Zeiger / Pointer kenne ich bisher auch nicht.</p>
</blockquote>
<p>Das solltest du aber unbedingt beherschen, denn grad in der VCL wirst du viel mit Pointern arbeiten.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1106348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1106348</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Fri, 28 Jul 2006 18:49:36 GMT</pubDate></item><item><title><![CDATA[Reply to TDBComboBox per ADO dynamisch füllen on Fri, 28 Jul 2006 18:58:19 GMT]]></title><description><![CDATA[<p>Wer nicht fragt, bleibt dumm <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 Dir <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="🙂"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1106357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1106357</guid><dc:creator><![CDATA[javad]]></dc:creator><pubDate>Fri, 28 Jul 2006 18:58:19 GMT</pubDate></item></channel></rss>