<?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[mit IBDataSet auf Index in fdb zugreifen]]></title><description><![CDATA[<p>Hallo habe ein Problem und finde keine Lösung,</p>
<p>also habe eine .fdb Datei auf die ich mit der IBDataSet Komponente zugreife. Soweit so gut kann im DBGrid Datensätze anzeigen, ändern oder löschen.<br />
Mein Problem ist wenn ich neue Datensätze anlege werden diese an's Ende geschrieben und nicht richtig einsortiert. Habe ein Index angelegt und wollte mit IBDataSet-&gt;IndexName diesen zuweisen doch dieses gibt es nur (laut Hilfe) bei TCustomClientDataSet! Habe extra da es eine neue Anwendung ist IBDataSet genommen und auf IBQuery und IBTabel verzichtet (dienen nur zur Portierung in bestehende apps) und nun das (bei IBTabel gibt es die Eigenschaft IndexName)!</p>
<p>Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/179188/mit-ibdataset-auf-index-in-fdb-zugreifen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 11:33:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/179188.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 19 Apr 2007 09:39:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to mit IBDataSet auf Index in fdb zugreifen on Thu, 19 Apr 2007 09:39:21 GMT]]></title><description><![CDATA[<p>Hallo habe ein Problem und finde keine Lösung,</p>
<p>also habe eine .fdb Datei auf die ich mit der IBDataSet Komponente zugreife. Soweit so gut kann im DBGrid Datensätze anzeigen, ändern oder löschen.<br />
Mein Problem ist wenn ich neue Datensätze anlege werden diese an's Ende geschrieben und nicht richtig einsortiert. Habe ein Index angelegt und wollte mit IBDataSet-&gt;IndexName diesen zuweisen doch dieses gibt es nur (laut Hilfe) bei TCustomClientDataSet! Habe extra da es eine neue Anwendung ist IBDataSet genommen und auf IBQuery und IBTabel verzichtet (dienen nur zur Portierung in bestehende apps) und nun das (bei IBTabel gibt es die Eigenschaft IndexName)!</p>
<p>Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269088</guid><dc:creator><![CDATA[hansi hinterseer]]></dc:creator><pubDate>Thu, 19 Apr 2007 09:39:21 GMT</pubDate></item><item><title><![CDATA[Reply to mit IBDataSet auf Index in fdb zugreifen on Thu, 19 Apr 2007 11:29:21 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>bei der Verwendung von IBDataset hast du sicherlich eine Select-SQL angegeben. Enthält die Anweisung kein &quot;Order by&quot; entspricht die Reihenfolge der Daten immer der physikalischen Reihenfolge in der Datenbank. Willst du die Datensätze sortiert haben ändere einfach den Select-String entsprechend ab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269168</guid><dc:creator><![CDATA[FireBirdPro]]></dc:creator><pubDate>Thu, 19 Apr 2007 11:29:21 GMT</pubDate></item><item><title><![CDATA[Reply to mit IBDataSet auf Index in fdb zugreifen on Thu, 19 Apr 2007 11:44:02 GMT]]></title><description><![CDATA[<p>Hallo,<br />
danke für die schnelle Antwort. Ich benutze schon die order by klausel in der Select-SQL bsp: &quot;SELECT * FROM T_REGISTER ORDER BY \&quot;Name\&quot;&quot;. Leider funktioniert das nur sobald ich die Abfrage mach (IBDataset Aktiv) wenn ich jetzt z.B. einen neuen Datensatz add'e dann steht der am ende vom dbGrid. Es muß doch ne möglichkeit geben das es automatisch geupdatet wird. Ich kann doch nicht jedesmal wenn ein datensatz geändert oder eingefügt wird IBDataset-&gt;Close und IBDataset-&gt;Aktiv aufrufen nur um den datensatz an der richtigen stelle zu haben das ist doch net gut für die performance! <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>Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269181</guid><dc:creator><![CDATA[hansi hinterseer]]></dc:creator><pubDate>Thu, 19 Apr 2007 11:44:02 GMT</pubDate></item><item><title><![CDATA[Reply to mit IBDataSet auf Index in fdb zugreifen on Thu, 19 Apr 2007 12:30:02 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Das DBGrid kann sich nicht automatisch updaten, denn es weiß ja gar nicht was für eine ORDER bei der Abfrage verwendet wurde. Du must in der Tat die alte Abfrage schließen und die Abfrage mit der gleichen ORDER-Anweisung neu ausführen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269231</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269231</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Thu, 19 Apr 2007 12:30:02 GMT</pubDate></item><item><title><![CDATA[Reply to mit IBDataSet auf Index in fdb zugreifen on Thu, 19 Apr 2007 12:42:25 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>was steht im RefreshSQL ? Ebenfalls order by ?<br />
Du kannst ausserdem mit der Eigenschaft - ForcedRefresh - eine Aktualisierung<br />
erzwingen. Ansonsten mit Dataset-&gt;Refresh manuell.<br />
Was die Perfomance angeht würde ich das von der Datenbankseite erstmal als nicht so gravierend ansehen. Du musst den Datenbankserver abfragen, da dieser für die Indexierung zuständig ist und diese auch durchführen sollte. Im anderen Fall mußt du auf der Clientseite selbst sortieren, was auch Resourcen kostet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269241</guid><dc:creator><![CDATA[FireBirdPro]]></dc:creator><pubDate>Thu, 19 Apr 2007 12:42:25 GMT</pubDate></item><item><title><![CDATA[Reply to mit IBDataSet auf Index in fdb zugreifen on Thu, 19 Apr 2007 13:17:39 GMT]]></title><description><![CDATA[<p>Also,</p>
<p>habe mal in RefreshSQL mit oder by und ohne ausprobiert und nix das ForcedRefresh=true bringt au genauso wenig wie wenn ich Dataset-&gt;Refresh() nach jeden Dataset-&gt;Post() aufrufe!</p>
<p>Was mach ich falsch??<br />
Das kann doch net so schwer sein!</p>
<p>PS: Bei der order by klausel gebe ich die tabelle an brauche ich da noch den aufsteigenden bzw. absteigenden index für die tabelle wenn ich den index eh net direkt ansprechen kann???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269274</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269274</guid><dc:creator><![CDATA[hansi hinterseer]]></dc:creator><pubDate>Thu, 19 Apr 2007 13:17:39 GMT</pubDate></item><item><title><![CDATA[Reply to mit IBDataSet auf Index in fdb zugreifen on Thu, 19 Apr 2007 13:45:40 GMT]]></title><description><![CDATA[<p>Hast du die Transaktion abgeschlossen ?<br />
(Commit bzw. CommitRetaining )</p>
<p>zum P.S.</p>
<p>Die komplette Indexverwaltung macht der Server. Wenn du eine Abfrage and den Server stellst schaut dieser selber nach, ob und was er sortieren muß oder ob ein Index vorhanden ist.<br />
Der Client braucht nichts über Indexe auf der Datenbank zu wissen. (Nur sollte der DB-Admin klugerweise die wichtigsten angelegt haben <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="😉"
    /> ). Durch das SQL Statement sagt der Client was er haben will und der Server versucht das schnellstmöglich zu liefern. Ist kein Index da, wird die Ergebnissmenge eben vom Server neu sortiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269290</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269290</guid><dc:creator><![CDATA[FireBirdPro]]></dc:creator><pubDate>Thu, 19 Apr 2007 13:45:40 GMT</pubDate></item><item><title><![CDATA[Reply to mit IBDataSet auf Index in fdb zugreifen on Thu, 19 Apr 2007 16:27:15 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>erstmal vielen dank für eurer mühe, aber es will immer noch net so recht also schreibe ich jetzt mal wie ich das mache:</p>
<p>Komponenten:</p>
<p>- IBDatabase verbunden mit IBTransaction<br />
- IBDataSet verbunden mit IBDatabase und IBTransaction<br />
- DataSource verbunden mit IBDataSet<br />
- DBGrid verbunden mit DataSource</p>
<p>IBDataSet DeleteSQL: delete from T_TEST where &quot;Test ID&quot; = :&quot;OLD_Test ID&quot;<br />
IBDataSet InsertSQL: insert into T_Test(&quot;Name&quot;, &quot;Test ID&quot;)values( :&quot;Name&quot;, :&quot;Test ID&quot;)<br />
IBDataSet ModifySQL: update T_TEST set &quot;Name&quot; = :&quot;Name&quot;,&quot;Test ID&quot; = :&quot;Test ID&quot; where &quot;Test ID&quot; = :&quot;OLD_Test ID&quot;<br />
IBDataSet RefreshSQL: SELECT * FROM T_TEST where &quot;Test ID&quot; = :&quot;Test ID&quot; ORDER BY &quot;Name&quot;<br />
IBDataSet SelectSQL: SELECT * FROM T_TEST ORDER BY &quot;Name&quot;</p>
<p>Bsp. code:</p>
<p>IBDataSet-&gt;Append(); // bei neuen eintrag<br />
IBDataSet-&gt;Edit();<br />
IBDataSet-&gt;FieldByName(&quot;Test ID&quot;)-&gt;AsString=char(ID); // bei neuen Eintrag<br />
IBDataSet-&gt;FieldByName(&quot;Name&quot;)-&gt;AsString=E_Caption-&gt;Text;<br />
IBDataSet-&gt;Post();<br />
IBDataSet-&gt;Refresh();<br />
IBTransaction-&gt;CommitRetaining();</p>
<p>Das sind die wichtigsten Einstellungen wie gesagt adden und ändern geht aber das DBGrid fügt es hinten an (beim adden) oder lässt den geänderten Eintrag unsortiert an der ursprünglichen stelle stehen!</p>
<p>Danke. <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/1269413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269413</guid><dc:creator><![CDATA[hansi hinterseer]]></dc:creator><pubDate>Thu, 19 Apr 2007 16:27:15 GMT</pubDate></item><item><title><![CDATA[Reply to mit IBDataSet auf Index in fdb zugreifen on Fri, 20 Apr 2007 07:41:49 GMT]]></title><description><![CDATA[<p>Ich kommentiere das einfach mal:</p>
<pre><code class="language-cpp">IBDataSet-&gt;Append();  // Datensatz anhängen und in Eingabemodus versetzen
IBDataSet-&gt;Edit();  // Datensatz erneut in Eingabemodus versetzen?
IBDataSet-&gt;FieldByName(&quot;Test ID&quot;)-&gt;AsString=char(ID);
IBDataSet-&gt;FieldByName(&quot;Name&quot;)-&gt;AsString=E_Caption-&gt;Text;
IBDataSet-&gt;Post();  // Änderungen an aktuellem Datensatz abschließen
IBDataSet-&gt;Refresh(); 
IBTransaction-&gt;CommitRetaining();  // Transaktion abschließen, erst jetzt wird der -&gt;Post() tatsächlich ausgeführt
</code></pre>
<p>Wieso eigentlich CommitRetaining und nicht Commit?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269768</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 20 Apr 2007 07:41:49 GMT</pubDate></item><item><title><![CDATA[Reply to mit IBDataSet auf Index in fdb zugreifen on Fri, 20 Apr 2007 09:11:14 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hab noch mal nachgeschaut. Soweit ich das jetzt sehe muß man im AfterPost Event des Datasets die Daten neu vom Server laden, damit im Grid die gewünschte Reihenfolge erscheint.</p>
<p>z.B. mit</p>
<pre><code class="language-cpp">void __fastcall TForm1::IBDataSet1AfterPost(TDataSet *DataSet)
{
   IBDataSet1-&gt;Active = false;
   IBDataSet1-&gt;Active = true;
}
</code></pre>
<p>Das -&gt;Edit() kann man sich sparen (Append setzt den neuenDatensatz in den Bearbeitungsmodus)<br />
Den -&gt;Refresh() Aufruf kann man sich auch sparen, da er normal nur den aktuellen Datensatz holt (siehe RefreshSQL).</p>
<p>Die Methode Post schreibt die Änderungen in die Datenbank. Solange die Transaktion noch nicht abgeschlossen ist, ist die Änderung für andere Transaktionen auch noch nicht sichtbar. Erst mit Commit oder CommitRetaining wird die Transaktion abgeschlossen und die Änderungen werden tatsächlich in der Datenbank für alle sichtbar. Der Unterschied zwischen Commit und Commit Retaining ist, dass beim 2.ten der Transaktionskontext erhalten bleibt. D.h. z.B das die aktuelle Position in der Datenmenge erhalten bleibt und nicht auf den ersten Datensatz wechselt.</p>
<p>Frage: Gibt es einen Primärschlüssel?<br />
Wo wird der erzeugt ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269823</guid><dc:creator><![CDATA[FireBirdPro]]></dc:creator><pubDate>Fri, 20 Apr 2007 09:11:14 GMT</pubDate></item><item><title><![CDATA[Reply to mit IBDataSet auf Index in fdb zugreifen on Sat, 21 Apr 2007 08:27:35 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>also Primärschlüssel ist die ID (vom type char da ich net mehr als 255 Datensätze erwarte und dafür 1 Byte reicht) und wird beim erzeugen der Tabelle angelegt.</p>
<p>Wenn ich das Refresh() weglasse kann ich mir au das RefreshSQL-SQL-Statement sparen! Richtig?</p>
<p>Das is doch alles blöd wenn ich nen Datensatz ändere und dann CommitRetaining() nutze (damit es aktualisiert wird ohne die Transaktion zu beenden und damit der Datensatzzeiger auf der aktuellen Position bleibt) und dann trotzdem:</p>
<pre><code class="language-cpp">void __fastcall TForm1::IBDataSet1AfterPost(TDataSet *DataSet)
{
   IBDataSet1-&gt;Active = false;
   IBDataSet1-&gt;Active = true;
}
</code></pre>
<p>aufrufen muß um den Datensatz im DBGrid richtig einsortieren zu lassen wobei mein Datensatzzeiger wider auf die erste Position fällt!<br />
Ergo: Für mich ist Commit=CommitRetaining da ich nach beiden den Datensatzzeiger wieder Händisch auf die aktuelle Position setzen muß!</p>
<p>Habe jetzt schon 2 Fachbücher durchsucht aber keine tolle andere Lösung gefunden um mein DBGrid auf den aktuellen zu halten! Hat vielleicht net jemand nen anderen Vorschlag???? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Es muß da doch was geben da es bei IBTable au die tolle Funktion IndexName() gibt und IBTable doch IBDataSet untergeordnet is!<br />
Die Funktion IndexName gibt es laut Hilfe in der Klasse TCustomClientDataSet die ja von IBDataSet abgeleitet sein müßte oder??? <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>Also am beste wär es für mich wenn ich irgendwie das IndexName von TCustomClientDataSet benutzen könnte aber ka ob und wie ich das auf mein IBDataSet beziehen kann!!! <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>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1270384</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1270384</guid><dc:creator><![CDATA[hansi hinterseer]]></dc:creator><pubDate>Sat, 21 Apr 2007 08:27:35 GMT</pubDate></item><item><title><![CDATA[Reply to mit IBDataSet auf Index in fdb zugreifen on Sat, 21 Apr 2007 10:12:21 GMT]]></title><description><![CDATA[<p>Commit vs. CommitRetaining geht hier weiter:<br />
<a href="http://c-plusplus.net/forum/viewtopic-var-t-is-179400.html" rel="nofollow">http://c-plusplus.net/forum/viewtopic-var-t-is-179400.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1270458</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1270458</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Sat, 21 Apr 2007 10:12:21 GMT</pubDate></item></channel></rss>