Entwickler-Ecke
Datenbanken - Ausgabe von Paradox7 Tabelle
Grafix - Di 28.04.09 16:14
Titel: Ausgabe von Paradox7 Tabelle
Hey,
also, wie gewünscht, neues Thema ;)
Wie kann ich meine Tabelle in tabelleform (lol) ausgeben? So ähnlich wie bei PHP hab ich mir das vorgestellt, DBGrid ist mir jedoch zu plumb und unflexibel (oder kann man das visuell anpassen?!), gibts da andere Möglichkeiten (kein Memo^^)?
lg
mkinzler - Di 28.04.09 16:39
Was verstehst du unter visuell anpassen?
Grafix - Di 28.04.09 16:40
es sollen nur bestimmte Spalten ausgegeben werden, die dann einzeln angeklickt werden können um weitere Details der gewählten Zeile zu zeigen...
mkinzler - Di 28.04.09 16:49
Schau dir mal die Eigenschaft .Columns an. Dort kannst du du anzuzeigenden Spalten auswählen.
Nähere Informationen könnte man per Hint anzeigen lassen
Grafix - Di 28.04.09 16:50
mhm ok, dass könnte schon mal helfen.
Kann ich dynamisch labels erzeugen?
mkinzler - Di 28.04.09 16:53
Was meinst du mit Labels? Spalten?
Grafix - Di 28.04.09 16:54
naja ein TLabel, dass ich mit einer Schleife zur Laufzeit erstelle und positioniere... ist sowas möglich?
mkinzler - Di 28.04.09 17:02
Ja.
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| Label := TLabel.Create(<Owner>); Label.Parent := Parent; Label.Top := <Oberer Rand>; Label.Left :=<Linker Rand>: Label.Caption := '<Text>'; ... |
Grafix - Di 28.04.09 17:05
yeah, dass war was ich gesucht hab =) thx!
Grafix - Do 30.04.09 12:35
mhm dein Code hat einen Fehler in Zeile 1 oder? Es kommt folgende Meldung:
[Error]statement expected but 'label' found
Delete - Do 30.04.09 12:45
Wie heißt denn Dein Label?
Grafix - Do 30.04.09 12:46
naja, ich habe es nicht gesetzt, es soll ja zur Laufzeit erst erstellt werden...
Delete - Do 30.04.09 12:49
Ich meinte ja auch die Variable. Hoffentlich nicht einfach "Label", oder?
Grafix - Do 30.04.09 12:58
... erwischt, wie dumm von mir... Nagut, ich habs jetzt verbessert, als was muss ich die Variable denn deklarieren? Als TLabel? oder als TQRLabel?
Und er akzeptiert es jetzt, aber ich kann es nicht sehen, nachdem er es eigentlich erstellt hat -.-
Delete - Do 30.04.09 13:00
TQRLabel ist ja von Quickreport. TLabel sollte richtig sein, wenn Du den nicht nutzt. Und zur Sichtbarkeit: hast Du auch den richtigen Parent angegeben?
Grafix - Do 30.04.09 13:08
habs hinbekommen, irgendwie funktionierts nicht, wenn ich Visible nicht auf True setzte..
Nochwas^^: kann ich ein Array als Variable für TLabel nehmen?
Delete - Do 30.04.09 13:11
Wie meinst Du das? Ein Array of TLabel oder wie?
Grafix - Do 30.04.09 13:12
ich möchte soviele TLabels erzeugen, wie Datensätze in der Datenbank sind. Da dass ja dynamisch sein muss, brauche ich auch X Labels, die ich ja nicht alle vorher deklarieren kann. Mir fällt nur leider keine möglichkeit ein, dass zu realisieren...
Delete - Do 30.04.09 13:17
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| var MyLabel: TLabel; oben: integer; begin Dataset.Open; oben := 10; while not Dataset.EOF do begin MyLabel := TLabel.Create(self); MyLabel.Top := oben; inc(oben,10); Dataset.Next; end; end; |
So legst Du entsprechend viele Labels an, die mit einem Abstand von 10 Pixeln untereinander liegen.
Grafix - Do 30.04.09 13:21
klasse funktioniert!! Danke!
Grafix - Do 30.04.09 13:25
gibt es eine möglichkeit die Datenbank vor abruf zu sortieren?
Delete - Do 30.04.09 13:26
Man sortiert doch keine Datenbank, sondern die abzufragende Datenmenge (z.B. per SQL mit ORDER BY).
Grafix - 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; |
Delete - 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 - 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^^
Delete - 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 - 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?
Delete - 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; |
Delete - 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 - 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 - 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...
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 := 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 - Fr 01.05.09 11:36
Label war auch nur als Platzhalter für den Variablennamen gemeint
Delete - 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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!