| Autor |
Beitrag |
Grafix 
      
Beiträge: 122
Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
|
Verfasst: Do 30.04.09 13:25
gibt es eine möglichkeit die Datenbank vor abruf zu sortieren?
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 30.04.09 13:26
Man sortiert doch keine Datenbank, sondern die abzufragende Datenmenge (z.B. per SQL mit ORDER BY).
|
|
Grafix 
      
Beiträge: 122
Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
|
Verfasst: Do 30.04.09 13:45
jep schon klar. Kann man das ohne SQL hier einbauen?
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
|
Verfasst: 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 
      
Beiträge: 122
Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
|
Verfasst: Do 30.04.09 13:50
das kommt davon wenn man seinen code kürzt^^ nagut:
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
|
Verfasst: 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 
      
Beiträge: 122
Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
|
Verfasst: 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:
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
|
Verfasst: Do 30.04.09 15:56
Na so wie bei einer Table auch. 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 QAbfrage.Next; end; |
|
|
Grafix 
      
Beiträge: 122
Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
|
Verfasst: 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
|
Verfasst: 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: 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 
      
Beiträge: 122
Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
|
Verfasst: 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 
      
Beiträge: 122
Windows 7 Professional
Delphi 2009, PHP, Prolog, Python, Java
|
Verfasst: 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...
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 := 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
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: 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
|
Verfasst: 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.
|
|