![]() |
Datenbank: Access • Zugriff über: Datenzugriff/ADO
DBGrid sortieren
hi leutz
ich prog. datenbanken erst seit 2 wochen und jetzt hab ich ein problem. :( ich hab eine datenbank, in der ist eine "bundesliga tabelle" und ich möchte, dass die sich (per Button oder per klick auf den title) sortiert. dazu hab ich mir den code von ![]() wenn ich das jetzt compiliere und das teste, dann kommt immer so ne doofe fehlermeldung: Zitat:
2. ich wäre froh, wenn mir jemand dabei helfen könnte. 3.(ich weiß das es hier schon mal solche fragen gab, die konnten mir aber nicht weiterhelfen) mfg Chamb |
Re: DBGrid sortieren
Vielleicht sollte es
SQL-Code:
heißen
order by
|
Re: DBGrid sortieren
hier der Quelltext
Delphi-Quellcode:
@mkinzler: Ist das "order by" hier falsch gesetzt???
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin if Column.FieldName <> sSortColumn then begin sSortColumn := Column.FieldName; end else begin bSortOrder := not bSortOrder; end; ADODataSet1.Close; if bSortOrder then begin ADODataSet1.CommandText := 'SELECT * FROM TTabelle ORDER BY ' + sSortColumn; end else begin ADODataSet1.CommandText := 'SELECT * FROM TTabelle ORDER BY '+ sSortColumn + ' DESC'; end; ADODataSet1.Open; end; |
Re: DBGrid sortieren
Hallo,
sieht richtig aus. Vielleicht heisst deine Tabelle ja nicht TTabelle ?? Heiko |
Re: DBGrid sortieren
@hoika:
ich glaube sehr stark daran, das die tabelle "TTabelle" heißt. |
Re: DBGrid sortieren
Häng' doch mal deine Access Datenbank (*.mdb-Datei) an.
Zuvor aber bitte in Access zuerst packen (im Menu Extras ->Datenbank-Dienstprogramme -> Datenbank komprimieren & reparieren) und dann als Zip-Archiv hochladen. |
Re: DBGrid sortieren
Liste der Anhänge anzeigen (Anzahl: 1)
hier die datenbank.
@shmia: danke für diesen ratschlag(das mit dem komprimieren)hat die datenbank sehr verkleinert |
Re: DBGrid sortieren
Zitat:
Sie ist also komplett leer! Du musst zuerst in Access eine neue Tabelle anlegen, um sie benützen zu können. Später kannst du das auch mit CREATE TABLE aus dem Programm raus erledigen. Du solltest deine Datenbank nicht Kreuztabelle(1.).mdb nennen, sondern z.B. Bundesliga2008.mdb. Man muss mit den Worten "Datenbank" und "Tabelle" sehr genau aufpassen; eine Datenbank kann mehrere Tabellen enthalten. |
Re: DBGrid sortieren
Zitat:
Die TKreuztabelle sieht doch nett aus... |
Re: DBGrid sortieren
Zitat:
@stifflersmom: Danke für das Lob. Zitat:
Zitat:
Zitat:
|
Re: DBGrid sortieren
Stimmt der Connectionstring?
|
Re: DBGrid sortieren
in wie weit??
Was sollte das stehen?? Also mom. steht da Zitat:
|
Re: DBGrid sortieren
damit meinte ich,ob auch die richtige mdb connectiert wird.
da offensichtlich die tabelle nicht gefunden wird und du den richtigen namen angegeben hast. Oder hast du vllt. einen alten String in der Registry stehen? |
Re: DBGrid sortieren
Zitat:
Der ConnectionString müsste so aussehen:
Code:
Die Tabelle TKreuztabelle gefällt mir allerdings überhaupt nicht, da sie als Feldnamen die Namen der Vereine trägt.
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Fussball2008.mdb;Persist Security Info=False
Ich würde eine TSpiel Tabelle einführen:
Code:
SpielNr|VereinA |VereinB | ToreA | ToreB | Datum | Bemerkung
===================================================================== 23|VFB Stuttgart |Bayern München | 5 | 1 | 05.08.2007 | 5 Min Nachspielzeit 24| .... |
Re: DBGrid sortieren
Zitat:
Zitat:
Jetzt konnt zwar nicht mehr die Fehlermeldung, aba es wird auch nix sortiert! Zitat:
Der sieht jetzt so aus:
Delphi-Quellcode:
Könnte es vllt. jetzt daran liegen, das ich den Code etwas verändert habe, dass jetzt nichts sortiert wird?
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin if Column.FieldName <> sSortColumn then begin sSortColumn := Column.FieldName; end else begin bSortOrder := not bSortOrder; end; ADODataSet1.Close; ADODataSet1.CommandText := 'SELECT * FROM TTabelle ORDER BY ' + sSortColumn; if not bSortOrder then begin ADODataSet1.CommandText := ADODataSet1.CommandText + ' DESC'; end; ADODataSet1.active := true; end; Zitat:
![]() Allerdings find ich, es ist geschmackssache, wie die aussieht. |
Re: DBGrid sortieren
Zitat:
Du solltest schon aus Gründen der Flexibilität (stell Dir eine neue Saison mit neuen/anderen Vereinen vor) schon mit Zuordnungstabellen arbeiten: Deine Manschaftstabelle könnte folgendermaßen aussehen: ID Name Ort Trallala (und was noch an Detailfeldern so interessan sein könnte) Deine Spieltabelle so ID Manschaft1 Manschaft2 Datum Ergebnis_zur_Halbzeit Endergebnis Dann die Manschaften aus der Manschaftstabelle ind der Spieltabelle referenzieren und schon bist Du wesentlich unabhängiger und flexibler. Irgendwo findest Du hier bestimmt ein Tutorial zum (sinnvollen) Einsatz/Aufbau von Datenbanken Moin |
Re: DBGrid sortieren
Hallo,
Delphi-Quellcode:
Das ist aber nicht die Ursache.var sComamndText: String; begin if Column.FieldName <> sSortColumn then begin sSortColumn := Column.FieldName; bSortOrder := True; // das hier ist neu end else begin bSortOrder := not bSortOrder; end; sCommandText := 'SELECT * FROM TTabelle ORDER BY ' + sSortColumn; if not bSortOrder then begin sCommandText:= sCommandText + ' DESC'; end; ADODataSet1.CommandText:= sCommandText; // mit F5 breakpoint drauf uns sCommandText ansehen ... Sorgt nur dafür das eine neu ausgewählte Spalte immer aufsteigend sortiert wird und ausserdem kannst du den CommandString besser debuggen Ausserdem würde ich das bSortOrder := True; auch ins FormCreate packen. Heiko |
Re: DBGrid sortieren
Liste der Anhänge anzeigen (Anzahl: 1)
@stifflersmom:
kann ich verstehen das argument von dir, aba!!:(Bitte das hier nicht als kritik auffassen)Es ist ein programm für mich, das ich mir selbst schreibe und es aus sehr warscheinlich selber benutzen werde. @hoika: ich glaube, es ist besser, wenn ich jetzt mal das programm mit source reinstelle, damit man mir sagen kann, wo ich genau fehler mache, den trotz deinem bemühens(wo ich mich hier bedanke) hat das an der situation leider nicht viel geändert. (bitte wegen dem aussehen und dem ausbau nicht beschweren(Typs zur verbesserung werden immer danken angenommen :-D ) |
Re: DBGrid sortieren
Hallo,
der Grund ist 1. kein AdoDataSet1.Close / Open mehr ich hatte dir da noch ... angegeben
Delphi-Quellcode:
Das ist aber nur die Spitze des Eis-Berges .. ;)
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var sCommandText : String; begin if Column.FieldName <> sSortColumn then begin sSortColumn := Column.FieldName; bSortOrder := True; end else begin bSortOrder := not bSortOrder; end; sCommandText := 'SELECT * FROM TTabelle ORDER BY ' + sSortColumn; if not bSortOrder then begin sCommandText:= sCommandText + ' DESC'; end; ADODataSet1.Close; ADODataSet1.CommandText:= sCommandText; ADODataSet1.Open; end; DBGrid1.DataSource -> DataSource1.DataSet -> TAdoDataSet So muss es aussehen. Bei dir steht TADoTable1 statt dem AdoDataset Bei der Gelegenheit kannst du auch im OI einen ersten CommandText eintragen und dann das Active auf true setzen. Heiko PS: Falls das AdoDataSet nicht als DataSet angezeigt wird, mache das erst mal mit em ComamndText und dem Active True |
Re: DBGrid sortieren
Zitat:
Zitat:
Heißt das: Das DBGrid bei "Eigentschaften" im Feld "datasource" datasource1 stehen hat,wodann im Feld "DataSet" Adodataset1 drinsteht? PS: Entschuldige wenn ich das net sofort verstehe, es ist mom. noch totales neuland für mich. |
Re: DBGrid sortieren
Hallo,
ja, ist nicht einfach ... ;( Also Hintergrund, dem DBGrid ist es egal, woher es seine Daten bakommt (TTable, Query, AdoDataSet). Das DataSource "versteckt" die Quelle also DBGrid.DataSource -> DataSource1 (bei dir) -> im OI schon richtig gesetzt Dem DataSource ist es auch egal, woher es seine Daten bekommt, es muss nur ein Nachkomme von TDataSet sein (TTable, Query, AdoDataSet). DataSource.DataSet -> AdoDataSet1 (bei dir) im OI noch zu setzen Falls du bei den DataSets dein AdoDataSet nicht findest, liegt das daran, dass es nicht Active=True ist (muss es aber weil die darüberliegende Eigenschaft "AutoEdit" oder so ähnlich das so haben will). Also muss das AdoDaset auf Active=True und jetzt will er nicht, weil dein CommandText kein sinnvolles SQL enthält -> Ändern siehe oben (Select * From TTable order by was_weiss_ich) Dann active auf True, im OI DataSource1 für DataSet das AdoDataSet auswählen -->> *freu* Heiko |
Re: DBGrid sortieren
@hoika
Danke für diese erkläreung :thumb: . :dancer: :dancer: Jetzt klappt es :dancer: :dancer: Vielen, vielen dank für deine gedult und hilfe. @all Vielen dank auch euch, für eure zeit, die ihr verwendet hab, mir zu helfen. :thumb: |
Re: DBGrid sortieren
Hallo,
tja, so sind wir, wir helfen auch Anfängern auch ohne ein Anfänger-Forum ... :cheers: Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz