Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBGrid sortieren (https://www.delphipraxis.net/116158-dbgrid-sortieren.html)

Privateer3000 25. Jun 2008 10:36

Re: DBGrid sortieren
 
Stimmt der Connectionstring?

Chamb 25. Jun 2008 10:41

Re: DBGrid sortieren
 
in wie weit??

Was sollte das stehen??

Also mom. steht da
Zitat:

Provider=MSDASQL.1;Password="";Persist Security Info=True;Data Source=Liga
(soweit ich weiß sollte das stimmen)

Privateer3000 25. Jun 2008 11:00

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?

shmia 25. Jun 2008 11:10

Re: DBGrid sortieren
 
Zitat:

Zitat von stifflersmom
Zitat:

Zitat von shmia
Sie ist also komplett leer!

Nö, stimmt nicht

Oh, hoppla, ich war in Access nur auf Seite "Abfragen" und habe so die Tabellen übersehen.

Der ConnectionString müsste so aussehen:
Code:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Fussball2008.mdb;Persist Security Info=False
Die Tabelle TKreuztabelle gefällt mir allerdings überhaupt nicht, da sie als Feldnamen die Namen der Vereine trägt.
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| ....

Chamb 25. Jun 2008 12:18

Re: DBGrid sortieren
 
Zitat:

Zitat von shmia
Der ConnectionString müsste so aussehen:
Code:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Fussball2008.mdb;Persist Security Info=False

okay, sehe ich ein, dass der etwas anders sein soll.

Zitat:

1:0 für programmierer
jetzt ist allerdings ein neuer Fehler aufgetretten.

Jetzt konnt zwar nicht mehr die Fehlermeldung, aba es wird auch nix sortiert!

Zitat:

1:1 ausgleich
Allerdings habe ich den Source ertwas verändert.

Der sieht jetzt so aus:

Delphi-Quellcode:
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;
Könnte es vllt. jetzt daran liegen, das ich den Code etwas verändert habe, dass jetzt nichts sortiert wird?

Zitat:

Die Tabelle TKreuztabelle gefällt mir allerdings überhaupt nicht, da sie als Feldnamen die Namen der Vereine trägt.
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| ....

ich hab mir eine "Kreuztabelle"(so ähnlich sah die auch im Kicker letztes jahr aus und so sieht die auch bei wikipedia aus) so vorgestellt.

Allerdings find ich, es ist geschmackssache, wie die aussieht.

stifflersmom 25. Jun 2008 12:27

Re: DBGrid sortieren
 
Zitat:

Zitat von Chamb
Allerdings find ich, es ist geschmackssache, wie die aussieht.

Nö,das ist nicht wirklich eine Geschmacksfrage.
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

hoika 25. Jun 2008 12:32

Re: DBGrid sortieren
 
Hallo,



Delphi-Quellcode:

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

  ...
Das ist aber nicht die Ursache.
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

Chamb 25. Jun 2008 12:56

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 )

hoika 25. Jun 2008 13:26

Re: DBGrid sortieren
 
Hallo,

der Grund ist

1. kein AdoDataSet1.Close / Open mehr

ich hatte dir da noch ... angegeben

Delphi-Quellcode:
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;
Das ist aber nur die Spitze des Eis-Berges .. ;)

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

Chamb 25. Jun 2008 13:57

Re: DBGrid sortieren
 
Zitat:

Zitat von hoika
Das ist aber nur die Spitze des Eis-Berges .. ;)

Tja, daran kann ich nix mom. ändern. Ich möcht ja noch lernen.

Zitat:

Zitat von hoika
DBGrid1.DataSource -> DataSource1.DataSet -> TAdoDataSet
So muss es aussehen.
Bei dir steht TADoTable1 statt dem AdoDataset

das versteh ich nicht ganz.

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:41 Uhr.
Seite 2 von 3     12 3      

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