<?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[Create View mit ADO]]></title><description><![CDATA[<p>Kann ich mit ADO Views od. zumindesten Tabellen erstellen?<br />
Geht das mit dem was MFC bietet oder nur mit Erweiterungen von dritten?<br />
Wenn das nicht geht, heisst das, dass ich in diesen String, den man für das Select verwendet, auch wirklich nur Selects reinschreiben kann? Die anderen Befehle ruft man ja anders aus.<br />
Welche von den eventuellen Erweiterungen wäre zu empfehlen?<br />
Was für Alternativen gibt es generell?</p>
<p>Hier noch etwas möchtgern-code:</p>
<pre><code class="language-cpp">::CoInitialize(NULL);

	// Variablen XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
	CString strConnect,strQuery[10];

	_CommandPtr cmd;		//command object
	_RecordsetPtr rs;		//recordset object
	_ConnectionPtr conn;	//connection object
	// NULL vom Typ Variant erzeugen
	_variant_t vNull;
	vNull.vt = VT_ERROR;
	vNull.scode = DISP_E_PARAMNOTFOUND;

	//create instance of Command, Connection and Recordset.
	cmd.CreateInstance( __uuidof(Command));
	rs.CreateInstance(__uuidof(Recordset));
	conn.CreateInstance(__uuidof(Connection));

	// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

	strConnect=&quot;Data Source=PostgreSQL&quot;;

	strQuery[2]=&quot;CREATE VIEW test2 (arg int, brg int)&quot;; //&lt;-- das da soll gehen :-)
	strQuery[3]=&quot;SELECT * FROM test&quot;;

	conn-&gt;CursorLocation = adUseClient;
	conn-&gt;Open(_bstr_t( strConnect.GetBuffer(0)),L&quot;&quot;, L&quot;&quot;, -1);
	cmd-&gt;ActiveConnection = conn;	

	cmd-&gt;CommandText = strQuery[2].GetBuffer(0);
	cmd-&gt;CommandText = strQuery[3].GetBuffer(0);		

	// Commanobjekt festlegen
	rs-&gt;PutRefSource(cmd); 
	// Recordset öffnen
	rs-&gt;Open(vNull, vNull, adOpenDynamic, adLockOptimistic, adCmdUnknown); 

	m_DG2.SetRefDataSource(NULL);
	m_DG2.SetRefDataSource( (LPUNKNOWN) rs );
	m_DG2.Refresh();
	UpdateData(FALSE);

	//rs-&gt;Close(); 
	//conn-&gt;Close();
	::CoUninitialize();
</code></pre>
<p>Mach ich hier generell &quot;ungute&quot; Sachen?</p>
<p>wow, das waren jetzt ne menge fragen</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/82899/create-view-mit-ado</link><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Apr 2026 05:08:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/82899.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 15 Aug 2004 20:33:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Create View mit ADO on Sun, 15 Aug 2004 20:33:43 GMT]]></title><description><![CDATA[<p>Kann ich mit ADO Views od. zumindesten Tabellen erstellen?<br />
Geht das mit dem was MFC bietet oder nur mit Erweiterungen von dritten?<br />
Wenn das nicht geht, heisst das, dass ich in diesen String, den man für das Select verwendet, auch wirklich nur Selects reinschreiben kann? Die anderen Befehle ruft man ja anders aus.<br />
Welche von den eventuellen Erweiterungen wäre zu empfehlen?<br />
Was für Alternativen gibt es generell?</p>
<p>Hier noch etwas möchtgern-code:</p>
<pre><code class="language-cpp">::CoInitialize(NULL);

	// Variablen XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
	CString strConnect,strQuery[10];

	_CommandPtr cmd;		//command object
	_RecordsetPtr rs;		//recordset object
	_ConnectionPtr conn;	//connection object
	// NULL vom Typ Variant erzeugen
	_variant_t vNull;
	vNull.vt = VT_ERROR;
	vNull.scode = DISP_E_PARAMNOTFOUND;

	//create instance of Command, Connection and Recordset.
	cmd.CreateInstance( __uuidof(Command));
	rs.CreateInstance(__uuidof(Recordset));
	conn.CreateInstance(__uuidof(Connection));

	// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

	strConnect=&quot;Data Source=PostgreSQL&quot;;

	strQuery[2]=&quot;CREATE VIEW test2 (arg int, brg int)&quot;; //&lt;-- das da soll gehen :-)
	strQuery[3]=&quot;SELECT * FROM test&quot;;

	conn-&gt;CursorLocation = adUseClient;
	conn-&gt;Open(_bstr_t( strConnect.GetBuffer(0)),L&quot;&quot;, L&quot;&quot;, -1);
	cmd-&gt;ActiveConnection = conn;	

	cmd-&gt;CommandText = strQuery[2].GetBuffer(0);
	cmd-&gt;CommandText = strQuery[3].GetBuffer(0);		

	// Commanobjekt festlegen
	rs-&gt;PutRefSource(cmd); 
	// Recordset öffnen
	rs-&gt;Open(vNull, vNull, adOpenDynamic, adLockOptimistic, adCmdUnknown); 

	m_DG2.SetRefDataSource(NULL);
	m_DG2.SetRefDataSource( (LPUNKNOWN) rs );
	m_DG2.Refresh();
	UpdateData(FALSE);

	//rs-&gt;Close(); 
	//conn-&gt;Close();
	::CoUninitialize();
</code></pre>
<p>Mach ich hier generell &quot;ungute&quot; Sachen?</p>
<p>wow, das waren jetzt ne menge fragen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/583361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/583361</guid><dc:creator><![CDATA[guelling]]></dc:creator><pubDate>Sun, 15 Aug 2004 20:33:43 GMT</pubDate></item><item><title><![CDATA[Reply to Create View mit ADO on Mon, 16 Aug 2004 12:27:16 GMT]]></title><description><![CDATA[<p>Ich antworte mir mal.<br />
Man muss in dem Code oben bloss zulassen, das er die Abfragen auch bearbeiten kann (ohrfeig). Also ein wenig die Zeilen vertauschen:</p>
<pre><code class="language-cpp">cmd-&gt;CommandText = strQuery[0].GetBuffer(0);	
	rs-&gt;PutRefSource(cmd); 
	rs-&gt;Open(vNull, vNull, adOpenDynamic, adLockOptimistic, adCmdUnknown);

	cmd-&gt;CommandText = strQuery[1].GetBuffer(0);	
	rs-&gt;PutRefSource(cmd); 
	rs-&gt;Open(vNull, vNull, adOpenDynamic, adLockOptimistic, adCmdUnknown);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/583715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/583715</guid><dc:creator><![CDATA[guelling]]></dc:creator><pubDate>Mon, 16 Aug 2004 12:27:16 GMT</pubDate></item></channel></rss>