Table->First() ohne gewünschten Ansichtseffekt im DBGrid?
-
Danke erstmal für die Vorschläge. Habe beide Vorschläge gleich getestet, aber es will irgendwie nichts werden.
Ich frage mich wozu es First() überhaupt gibt. *grrr* Ich meine in meiner Routine zum Durchsuchen der Datensätze funktionierte das ja auch mit First(), aber scheinbar bezieht sich das nicht auf die Visuellen Komponenten wie DBGrid... frage mich daher nur wie das bei dem NavigationsButton des DBNavigators funzt, ich denke dort wird auch First() gekapselt * *
SetFocus() und DataSource->DataSet->First() leider nicht funzten nicht.
Danke trotzdem.
Noch jemand ne andere Idee? Kann ich DBNavigation::nbFirst simulieren?mfg
Steffen
-
also bei mir funktioniert es wunderbar :
DataSource->DataSet->Active = false;
DataSource->DataSet->Active = true;oder :
DS->DataSet->Active = false;
DS->DataSet->Active = true;
DS->DataSet->Last();bzw :
DS->DataSet->Active = false;
DS->DataSet->Active = true;
DS->DataSet->First();
-
Schau dir mal TCustomDBGrid::SelectedIndex an.
-
mmmh funzt alles nix.
DS->DataSet = false/true und dann First keine Wirkung, und
SelectedIndex gibt mir die Markierung der Spalten nicht der Zeilen. Und SelectedRows schreibt den Wert auf eine TBookmarkList und da blick grad überhaupt nicht durch, wie man da zugreifen kann. *grübel*
sehr merkwürdig.... hat einer schonmal den DBNavigation auseinander genommen, wie es dort gehandhabt wird?
mfg
Steffen
-
und wenn du es mittels den navigator machst ?
also :
DBNavigator->DataSource->DataSet->FindFirst();
muss doch gehen !!!!
-
wie ist denn Dein Dataset (oder Table) oder ??? aufgebaut ?
ich benutze zur Laufzeit generierte Query, die funktionieren eigentlich problemlos.. Kann Deine Abfrage das Problem sein
Wilfrid
-
Jetzt versteh ich gar nix mehr
Er bring mir eine Fehlermeldung, dass DataSource kein Member von DbCtrls::TDbNavigator ist:
*merkwürdig, merkwürdig* dabei steht DataSource doch als Eigenschaft in der Hilfe *guckwieBahnhof*
hier mal mein OpenCode für die DB, vielleicht stehts ja auch an der falschen Stelle.
try { Tab_Db->Active = false; //ComboListen als Auswahlliste für Alias und die tabellen Tab_Db->DatabaseName = Combo_AliasList->Text; Tab_Db->TableType = ttParadox; Tab_Db->TableName = Combo_Dbnamen->Text; Tab_Db->Active = true; if ((DBNavigator1->DataS_db->DataSet->FindFirst()) == true) Status->SimpleText = "DB geöffnet"; //TreeView Aktualisieren TreeV_aktualisieren(); } catch(EDatabaseError &e) { Status->SimpleText = "DB konnte nicht geöffnet werden!"; }
da wo jetzt die Zeile mit DBNavigator1 steht, hatte ich vorher immer das andere getestet, also nachdem Tab_Db->Active auf true gesetzt hat, weil sonst hat er mir immer gesagt, dass es an einer nicht geöffneten Tabelle nicht funzt.
Ich versteh nun gar nix mehr, wieso ist DataSource kein Member von Navigator ist doch eine Eigenschaft?!??
[edit]
hab nichts mit SQL oder so gemacht, nur ne Table,DataSource und nen DBGrid mit Navigator und übergebe nur dann den Alias auf DatabaseName der Table und die Tabelle auf TableName der Table... ganz einfach... nur ich verstehs nicht, NavigatorClick auf First funzt ohne Probleme... warum er jetzt meckert weiß ich net.
[/edit][ Dieser Beitrag wurde am 16.01.2003 um 10:35 Uhr von skho editiert. ]
-
hab mir jetzt noch mal die Hilfe der Fehlermeldung angesehen, BezeichnerÜbergabe sagte die, also hab ich mal folgendes geschrieben:
if ((DBNavigator1->DataSource->DataSet->FindFirst()) == true) Status->SimpleText = "Db geöffnet";
nun compiliert er wieder richtig, aber er ist dennoch auf dem letzten Datensatz. Hab nun mal debuggt an der Stelle und festgestellt, dass FindFirst()auf true steht, er deshlab auch status ausgibt, aber gesetzt hat er trotzdem nicht. ich blick net mehr durch.
navigatorClick funzt nach wie vor ... bin irgendwie ratlos.
[ Dieser Beitrag wurde am 16.01.2003 um 13:31 Uhr von skho editiert. ]
-
*hochschieb*
*grummel* --> will net gehen was ich auch mache!
-
Hi,
table->First();
muss gehen. Wenn nicht, machst du was anderes Falsch !
§1: Such de Fehelr nicht in den Komponenten sondern in dein Quellcode. 99,99 % aller Fehler sind Hausgemacht.
Überprüfe:
- Arbeitest du auf der richtigen TTable rum oder zeigst du eine andere an ?
- Hast du irgendwas verwechselt ?
-
@Andreas
Ich habe nur eine TTable, ein DBGrid, eine DataSource. Ich wähle einen Alias aus einer ComboBox aus. Daraufhin bekommen ich in einer zweiten ComboBox die Tabellen zu dem Alias angezeigt. Mit einem ButtonClick lege ich den Alias auf DatabaseName der Tabelle und den Tabellennamen auf TableName. Die Tabelle wird ordnungsgemäß geöffnet.meine Table heißt Tab_db. Ich habe Tab_db->First() mit in ButtonClick geschrieben und zwar direkt nachdem dem Tab_db->Active auf true gesetzt worden ist.Ich kann gar nicht auf eine andere Tabelle verweisen, hab ja nur eine. Unmöglich. Hab ja auch schon die o.g. Möglichkeiten probiert und nichts haut hin.Immer steht der Cursor auf dem letzten Datensatz im DBGrid. Wenn ich auf dem DBNavigator1 auf [symbol] |< [/symbol] springt er anstandslos den ersten Datensatz an.
Tab_db->First() haut bei mir nur intern hin, wenn ich z.B. meine Datensätze in einer Schleife abhandeln tue und beim Ersten anfange, das funktioniert, aber das hat keine Auswirkungen auf das DbGrid und dessen Cursor.
Habe meine Quellcode schon x-mal angeschaut und halb neu geschrieben. Kann ich dir meine .cpp und .h vll mal zuschicken? hängt das vll. an der BCB Version? hab die 3.0 ...
mfg
Steffen---totally confused---
-
lalala ... äähm Andreas *hust* ich muss dir leider recht geben :p
hatte folgendes ja geschrieben: :p
try { Tab_Db->Active = false; //ComboListen als Auswahlliste für Alias und die tabellen Tab_Db->DatabaseName = Combo_AliasList->Text; Tab_Db->TableType = ttParadox; Tab_Db->TableName = Combo_Dbnamen->Text; Tab_Db->Active = true; Tab_Db->First(); //TreeView Aktualisieren TreeV_aktualisieren(); } catch(EDatabaseError &e) { Status->SimpleText = "DB konnte nicht geöffnet werden!"; }
Nun ist mir ein Licht aufgegangen ... wie man sieht rufe ich nach dem First() ja noch eine Funktion auf und in dieser geht er der Reihe nach alle Werte in der Table durch, zum Schluß dieser Funktion ist der Cursor also auf dem letzten Datensatz. (o:
nun habe ich einfach Table_Db->First() ans Ende des Try-Blocks also nach TreeV_aktualisieren() gesetzt und Voilá es funktioniert *DummDummDumm*
Ich hoffe ihr könnt mir vergeben (o:
mfg und thx for ure mühes
Steffen[ Dieser Beitrag wurde am 20.01.2003 um 13:20 Uhr von skho editiert. ]
-