Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBGrid nach bestimmtem Feld sortieren.... (https://www.delphipraxis.net/5244-dbgrid-nach-bestimmtem-feld-sortieren.html)

Angelus 29. Mai 2003 13:24


DBGrid nach bestimmtem Feld sortieren....
 
Hallo ....

Ich lese eine Access Datenbank ohne Probleme in ein DBGrid ein .....
Die Datenbank weißt keinerlei Sortierungen auf .....
Unteranderem enthält meine Datenbank das Feld Name!
Und ich möchte wenn meine DBGrid die datenbank liest, dass alle Datensätze nach Namen geordnet angezeigt werden!!

Wie realisiere ich das??
thx angelus

Hansa 29. Mai 2003 13:49

von Access hört man wenig / nichts gutes. Befindet sich Dein Programm noch ziemlich am Anfang würde ich Dir davon abraten. Soviel schon mal vorweg. Kann man damit SQL machen? Dann mußt Du das ganze mit ORDER BY <Spaltenname> machen. Falls nicht, ja dann muß jemand anders Dir sagen wie.

torud 29. Mai 2003 13:55

Nimm ruhi die AccessDB
 
Hallo,

die Antwort war schon richtig. Nimm Orderby und alles wird gut. Wenn Du bisher keine Probleme hattest, rate ich Dir mit der Access-DB weiter zu machen. Ich habe auch schon in der Richtung was gemacht und kann nur sagen, das es einwandfrei und ohne Problem lief.

Und zu meinem Vorredner möchte ich nur kurz sagen, dass es ja sein kann, dass es hier und da Probleme mit Access-DB´s gibt. Aber es wäre doch auch fair diese Probleme beim Namen zu nennen.

Tom

Angelus 29. Mai 2003 13:59

Leider funktioniert es immer noch nicht .....
 
nein das funktioniert leider aucht nicht.....

ORDER BY <Kunde:> funkitioniert nicht ... :-(

woran könnte es noch liege?? kann es sein das mit der Datenbank was nicht in ordnung ist??

torud 29. Mai 2003 14:08

machs mit einem Filter
 
Nun Du könntest es auch über einen Filter probieren:

DataModule1.ADOTable2.Filtered:=False;//deaktivieren
DataModule1.ADOTable2.Filter:='MedienIndex ='+QuotedStr(DataModule1.ADOTable1.FieldByName('In dex').AsString);//sortiere den medienIndex nach dem Feld mit der Bezeichnung Index
DataModule1.ADOTable2.Filtered:=True;//aktivieren

Das sollte funzen
Tom

Angelus 29. Mai 2003 14:11

was ist ein datamodul?? und wo füge ich den code ein?
thx angelus

Hansa 29. Mai 2003 14:21

Re: Nimm ruhi die AccessDB
 
Zitat:

Zitat von torud
...Aber es wäre doch auch fair diese Probleme beim Namen zu nennen.

Die weiß ich ja nicht, habe wegen des schlechten Images von Access erst gar nicht damit angefangen. Gibts das überhaupt noch ? So, das DataModule ist bei File -> new -> Datamodule. Da kann man die ganzen DB-Sachen reinpacken. Ich benutze die eigentlich nur. Die die ich in einem Projekt brauche kommen in die uses-Liste und fertig. Dann braucht man nicht immer alle DB-Komponenten auf die Form zu legen und die Standardeinstellungen wie DB-Name, username von Hand einzustelen.

Gambit 30. Mai 2003 23:35

Moin!

Hab ein ähnliches Problem: Möchte im DBGrid ein Feld "Titel" aus einer Paradox Datenbank namens DVDBank sortieren. Hab dazu folgende Routine versucht:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
  Query1.close;
  Query1.Sql.Clear;
  Query1.Sql.Add('SELECT * FROM DVDBank order by Titel');
  Query1.open;
end;
Wenn ich nun den Button klicke passiert: Nichts! Gar nichts, auch keine Fehlermeldung.

Wie muss man das denn machen, damit es funzt?

Gruß

Gambit

Hansa 30. Mai 2003 23:52

hast Du da überhaupt irgendwelche visuellen Sachen in dem Programm ? DBgrid oder so ? Ist das alles auch richtig zugeordnet? Was ist mit DataSource (wegen Grid etc.) Ich sehe keinen Grund, warum es nicht gehen sollte.

Gambit 31. Mai 2003 01:53

Hallo,

ja, ich habe DBgrid drin. Also in den Properties von Query1 habe ich für DataSource und DatabaseName die gleichen Angaben wie in Table1 angegeben. Active auf true habe ich in Query1 nicht setzen können, dann kommt ne Fehlermeldung "Keine SQL Anweisung verfügbar".


Gruß

Gambit

Hansa 31. Mai 2003 02:11

dann ist ja alles klar

Gambit 31. Mai 2003 03:48

Wie meinst du denn das nu? Mir ist das eigentlich gar nicht so klar. Warum gehts denn nu nicht?`

Gambit

Hansa 31. Mai 2003 10:04

poste mal die DFM Deiner Form.

Gambit 31. Mai 2003 10:37

Mach ich glatt, wenn du mir sagst, was DFM ist. Sorry, bin noch leidlicher Anfänger in Delphi.

Gruß

Gambit

Hansa 31. Mai 2003 10:40

geh mit der rechten Maustaste auf die Form (nicht den Quelltext!), wähle "view as text", mach copy and passte und füge das ganze in Deinen Beitrag ein.

Gambit 31. Mai 2003 10:47

Aha, also doch...hab jetzt mal nur was die Form betrifft kopiert. Oder brauchst du alles?

Delphi-Quellcode:
object Form1: TForm1
  Left = 165
  Top = 107
  Width = 1139
  Height = 801
  Caption = 'DVD Datenbank Version 0.3'
  Color = clSkyBlue
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  Menu = MainMenu1
  OldCreateOrder = False
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
Gruß

Gambit

Gambit 31. Mai 2003 10:52

Liste der Anhänge anzeigen (Anzahl: 1)
Oder doch lieber alles?

Dann aber doch lieber als Attach, was?

Gruß

Gambit

Hansa 31. Mai 2003 11:09

Da steht zwar was mit einem Dateinamen, aber das wars dann schon, für Delphi ist das dann sozusogen eine untypisierte Datei. D.h. keinerlei Information, um was es sich handelt. Leider ist es Paradox, damit hab ich erst gar nicht angefangen. Versuche mal, ob Du mit der rechten Maustaste bei der Table oder der Query an so was wie SQL-Editor ran kommst.

Gambit 31. Mai 2003 11:56

Also da gibts einen SQL Builder, da kann ich auch Sortierungen mit durchführen. Und nu?

Gambit

Gambit 31. Mai 2003 12:05

Hmm, der Builder sagt mir, dass die SQL Anweisung so aussehen muss:

SELECT * FROM "d:\Delphi7\Projects\DVD Datenbank\DVDBank.db" Dvdbank
ORDER BY Titel

Kannst du das umsetzen für Delphi? Ich komm da immer so innen Tüddel mit den Hochkommata... :oops:

Gambit

r_kerber 31. Mai 2003 12:31

Zitat:

Zitat von Gambit
Kannst du das umsetzen für Delphi?

Hat eigentlich nichts mit Delphi zu tun. Ist eben SQL. Am besten in der TQuery die Eigenschaft Database auf d:\Delphi7\Projects\DVD Datenbank\DVDBank.db setzen. Dann unter SQL die Abfrage
SQL-Code:
SELECT * FROM DVDBank
ORDER BY Titel
eingeben. Ein Index auf das Feld Titel wäre natürlich sehr hilfreich (ich glaube bei Paradox auch erforderlich).

Gambit 31. Mai 2003 12:45

Ne, funzt auch nicht. Ich glaub, ich gebs auf. Montag mal noch ein Buch kaufen...trotzdem Danke!

Gambit

r_kerber 31. Mai 2003 13:19

Wer wird denn gleich die Flinte in's Korn werfen? :kotz: Was funktioniert nicht?

Gambit 31. Mai 2003 14:03

Es passiert nichts. Ich vermute, die SQL Anweisung läuft irgendwie ins Leere, als wenn sie nicht "weiß", dass sie dass Sortierergebnis im DBGrid ausgeben soll. Syntaktisch scheint mir der Befehl in Ordnung zu sein. Es gibt ja auch keine Fehlermeldung.

Gambit

r_kerber 31. Mai 2003 14:04

Hast Du die Query über eine DataSource mit dem dbGrid verknüpft?

Gambit 31. Mai 2003 14:26

Ja, glaub ich zumindest. Hab in der Property DataSource1 angegeben, was aderes geht auch nicht. Und die DataSource1 ist ja an die Tabelle angebunden.

Gambit

r_kerber 31. Mai 2003 14:28

Und das Query an eine TDatabase oder ähnliches?

Gambit 31. Mai 2003 14:55

An die TDataSource, da wo ich auch das DBGrid angebunden habe, also DataSource1. In der Property der Query "DataSource"

Ich weiß, ist etwas viel verlangt, aber könnte jemand nicht vielleicht über ein Kleinstprojekt das Ganze nachvollziehen? Viel braucht es ja nicht. Mit dem Tool Datenbankoberfläche ne kleine Paradox DB mit ein zwei Feldern und drei, vier Einträgen und ne Form mit dem DBGrid und die DataSource, Table und Query?

Will jetzt aber nicht unverschämt sein...


Gruß

Gambit

r_kerber 31. Mai 2003 16:26

1. TDataBase.DatabaseName: test
2. TQuery.Database: test
3. TDataSource.DataSet: Query1
4. TDBGrid.DataSource: DataSource1

TQuery.SQL wie bereits beschrieben. TQuery.Active: True.

Dann sollte es funktionieren.

Gambit 1. Jun 2003 11:16

Moin!

So, bin wieder da. Hab jetzt nochmal ein Testprogramm geschrieben, welches, wie sollte es anders sein, auch nicht funzt. Wieso kann es denn so schwer sein, mittels SQL auf die Tabelle zuzugreifen. Ich könnte ja über den Index sortieren, aber es geht mir darum SQL Abfragen zu lernen.
Habe jetzt auch noch eine TDatabase hinzugefügt. Die Eigenschaft Query Database gibts bei mir nicht, nur DatabaseName.

Ich raffs nicht...


Gambit

r_kerber 1. Jun 2003 11:48

Zitat:

Zitat von Gambit
Die Eigenschaft Query Database gibts bei mir nicht, nur DatabaseName.

Stimmt mein Fehler. :oops: Was raffst Du jetzt nicht?

Gambit 1. Jun 2003 12:08

Ich raffe nicht, warum es nicht funzt. Aber ich habe jetzt so eine Vermutung, dass man eine DBGrid, basierend auf einer TTable gar nicht mittels SQL so sortieren kann, wie ich mir das vorstelle. Vielleicht benötige ich eine zweite Ausgabe für die sortierten Datensätze? Oder können mittels SQL sortierte Datensätze auch in der selben DBGrid angezeigt werden, in der vor dem Sortieren die Datensätze aus der Paradox Tabelle angezeigt wurden?

Und, wenn es doch geht und du hast so ein Testproggy geschrieben, würdest du es mir evt. auch zur Ansicht zukommen lassen?

Gruß

Gambit

r_kerber 1. Jun 2003 12:31

Ich habe kein Testprogramm geschrieben aber es zumindest schon desöfteren gemacht. Beschreibe doch mal was passiert. Vielleicht schickst Du auch mal Dein Test-Projekt!

Gambit 1. Jun 2003 12:33

Kann ich machen, wohin soll ichs denn schicken?

r_kerber 1. Jun 2003 12:49

Liste der Anhänge anzeigen (Anzahl: 1)
Habe jetzt auch schnell mal was zusammengeklickt. Läuft problemlos!

Gambit 1. Jun 2003 12:59

Probier ich mal aus, Danke!

Hab versucht, dir auch was zu schicken, kommt aber zurück...

Gambit

Gambit 1. Jun 2003 13:24

Komisch kommt immer zurück, machs jetzt auch über PM

Gruß

Gambit


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz