Autor Beitrag
Grafix Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122

Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
BeitragVerfasst: Do 30.04.09 13:25 
gibt es eine möglichkeit die Datenbank vor abruf zu sortieren?
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 30.04.09 13:26 
Man sortiert doch keine Datenbank, sondern die abzufragende Datenmenge (z.B. per SQL mit ORDER BY).
Grafix Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122

Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
BeitragVerfasst: Do 30.04.09 13:45 
jep schon klar. Kann man das ohne SQL hier einbauen?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
 while not Tabel1.eof do
 begin
  Vorname.Caption := Tadressen_main.FieldByName('Vorname').AsString;
  Tadressen_main.next;
 end;
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 30.04.09 13:47 
Sicher, das hat mit SQL ja nichts zu tun. Allerdings überschreibst Du so die Caption ja immer wieder, das ist also ein sinnfreies Beispiel ;)
Grafix Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122

Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
BeitragVerfasst: Do 30.04.09 13:50 
das kommt davon wenn man seinen code kürzt^^ nagut:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
 while not Tabel1.eof do
 begin
  Vorname := TLabel.Create(self);
  Vorname.Parent := SBInhalt;
  Vorname.Top := top;
  Vorname.Left := 50;
  Vorname.Caption := Tadressen_main.FieldByName('Vorname').AsString;
  Tadressen_main.next;

  inc(top, 30);
 end;


wie kann ich dies nun sortieren? Nehme mal an man muss vor der While-Schleife einen befehl einfügen (z.B. Tabel1.Sort;). gehe jedoch mal davon aus, dass es nicht so einfach ist^^
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 30.04.09 13:59 
Ich weiß ehrlich gesagt gar nicht, ob TTable eine derartige Funktionalität besitzt. Was spricht denn dagegen, die Table durch eine Query zu ersetzen?
Grafix Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122

Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
BeitragVerfasst: Do 30.04.09 15:13 
hab jetzt versucht, SQL einzubinden. SQL Abfragen kann ich formulieren, jedoch weiß ich nicht, wie man dessen Ergebnis ausgibt?! Bisher habe ich:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
 QAbfrage.Active := False;
 QAbfrage.Sql.Clear;
 QAbfrage.Sql.Add('SELECT * FROM adressen ORDER BY Nachname');
 QAbfrage.Active := True;


Wie kann ich das nun in einer While Schleife alles ausgeben?
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 30.04.09 15:56 
Na so wie bei einer Table auch.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
QAbfrage.Close;
QAbfrage.Sql.Text := 'SELECT * FROM adressen ORDER BY Nachname';
QAbfrage.Open;
while not QAbfrage.EOF do
  begin
    //Daten ausgeben
    QAbfrage.Next;
  end;
Grafix Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122

Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
BeitragVerfasst: Do 30.04.09 16:00 
aber ich weiß nicht wie dieses Daten Ausgeben formuliert sein muss, QAbfrage.WAS?
Sry, ich habe in Delphi noch nie mit SQL gearbeitet, habe mir zwar dieses Tutorial durchgelesen (www.delphi-treff.de/...uer-fortgeschrittene), aber da kommts nicht wirklich raus... Und im Internet habe ich auch nichts brauchbares gefunden.

EDIT: URL eingefügt
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 30.04.09 16:05 
Der Kommentar war doch nur eine Abkürzung. Daten ausgegeben hast Du mit der TTable doch auch, das geht mit einer Query nicht anders. Beispiel:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
while not Query.EOF do
  begin
    Listboxnamen.Items.Add(Query.FieldByName('Name').Value + ', ' + Query.FieldByName('Vorname').Value);
    Query.Next;
  end;

Das würde Dir z.B. Namen von Personen aus der Tabelle in eine Listbox schreiben.
Grafix Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122

Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
BeitragVerfasst: Do 30.04.09 16:13 
klasse, jetzt funktionierts. Dass das eine Abkürzung war, ist mir schon klar, nur ich wusste nicht dass es mit einem TQuery genauso ist wie mit der TTable. Danke!
Grafix Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122

Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
BeitragVerfasst: Do 30.04.09 17:03 
Könnt ihr mir sagen, wieso ich den Quelltext Teil nicht in die Prozedur auslagern kann???
Die Fehlermeldung die kommt ist eine Access Violation...

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
procedure erstelle_Kontakte;
 var top: integer;
     QAbfrage: TQuery;
     SBInhalt: TScrollBox;
     Panel: TPanel;
     Name: TLabel;
begin
 top := 500;

 while not QAbfrage.Eof do
 begin
  //Panel erzeugen
  Panel := TPanel.Create(Form1);
  Panel.Parent := SBInhalt;
  Panel.Top := top;
  Panel.Left := 5;

  Name := TLabel.Create(Form1);
  Name.Parent := Panel;
  Name.Top := 10;
  Name.Left := 5;
  Name.Height := 26;
  Name.AutoSize := False;
  Name.Align := alBottom;
  Name.Alignment := taCenter;
  Name.Caption := QAbfrage.FieldByName('Vorname').AsString + (' ') + QAbfrage.FieldByName('Nachname').AsString;

  inc(top, 50);
  QAbfrage.next;
 end;

end;

procedure TForm1.ESucheClick(Sender: TObject);
begin
 ESuche.Clear;
end;

procedure TForm1.BSucheClick(Sender: TObject);
begin
 QSuche.Active := False;
 QSuche.SQL.Clear;
 QSuche.SQL.Text := ('SELECT * FROM adressen WHERE Nachname LIKE "%' + ESuche.Text + '%" OR Vorname LIKE "%' + ESuche.Text + '%"');
 QSuche.Active := True;

 erstelle_Kontakte;
end;
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Fr 01.05.09 11:36 
Label war auch nur als Platzhalter für den Variablennamen gemeint

_________________
Markus Kinzler.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 04.05.09 14:02 
QAbfrage ist ja auch weder erzeugt noch ausgeführt worden. Außerdem halte ich es für fragwürdig, die Komponenten auf diese Art und Weise dynamisch anzulegen. Gut, der Owner gibt sie später wieder frei, aber dolle ist das nicht.