| Autor |
Beitrag |
Luncustaf
      
Beiträge: 324
Win 2k
D7 Ent.
|
Verfasst: So 19.01.03 03:24
...in verschiedenen spalten füllen.
hi ich bin irgendwie zu doof dazu hab nu alles ausprobiert und nichts geht
wie bekomm ich die datenaus ner datenbank in nen dbgrid?
hoffe auf hilfe.
thx.
gr€€tz
|
|
grayfox
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: So 19.01.03 10:05
hallo luncustaf!
hast du auch alle benötigten komponenten auf dein form gezogen und sie miteinander verknüpft?
du brauchst einen TTable, oder ein TQuery, eine TDataSource. einen TDBNavigator und ein TDBGrid.
in TTable trägst du in der Eigenschafte 'Databasename' das verzeichnis ein, in dem sich deine daten befinden, bzw deinen aliasnamen für das datenverzeichnis, in 'Tablename' kannst dann die tabelle auswählen, die du anzeigen willst.
in der TDataSource wählst in 'Dataset' auf deinen table
im TDBGrid und im TDBNavigator stellst als 'Datasource' den namen deiner datasource ein.
sobald du nun im TTable das property 'active' auf true stellst, zeigt das DBGrid bereits den inhalt deiner tabelle an...
schau mal in die tutorials:
einstieg
und
fortgeschrittene
dort findest dazu genaue anleitungen
viel spass!
mfg, stefan
|
|
Luncustaf 
      
Beiträge: 324
Win 2k
D7 Ent.
|
Verfasst: So 19.01.03 10:41
hi grayfox,
vielen dank für die tuts haben mir sehr geholfen  nur hab ich noch das problem das es bei den TColumns keine eigenschaft datafield gibt.
wo ich angeben kann welches feld angezeigt werden soll  kannst du mir da vllt auch nochmal helfen
thx
gr€€tz
|
|
bis11
      
Beiträge: 1247
Erhaltene Danke: 2
Apple Mac OSX 10.11
|
Verfasst: So 19.01.03 10:45
Hi,
wenn Du die Komponente TQuery benutzt, kannst Du durch den SQL-Befehl
Quelltext 1:
| SELECT feld1,feld2,feld3 FROM Tabelle |
benutzen und so dir nur bestimmte Felder aus der Datenbank anzeigen lassen. Bei der Komponente TTable weiß ich das garnicht mehr, da ich die überhaupt nichtmehr benutze. 
|
|
Luncustaf 
      
Beiträge: 324
Win 2k
D7 Ent.
|
Verfasst: So 19.01.03 10:50
jo das mit dem sql weis ich mein code sieht so aus
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| sqlq.Sql.Clear; sqlq.Sql.Add('SELECT Name FROM user'); sqlq.Open; while not sqlq.Eof do begin [color=red]frmh_gridf.Columns[0].FieldName := sqlq.FieldByName('Name').AsVariant;[/color] sqlq.Next; end; sqlq.Close; |
die rote zeile ist mein problem - ich weis net wie ich die einzelnen der felder der columns füllen kann
gr€€tz
|
|
grayfox
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: So 19.01.03 10:53
bitte, bitte. gern geschehen!
aus der OH von Delphi:
| Zitat: |
Jede TDBGridColumns-Komponente enthält eine Kollektion von TColumn-Objekten in einem Datengitter (TDBGrid). TDBGridColumns verwaltet einen Index der Spalten im Array Items. Die Eigenschaft Count enthält die Anzahl der Spalten in der Kollektion. Während des Entwurfs können im Spalteneditor des Datengitters Spalten hinzugefügt, entfernt oder geändert werden.
|
einfach das TDBGrid doppelklicken, doppelklick auf Columns und du kannst schon die spalten anlegen und bearbeiten, die du im grid anzeigen willst
mfg, stefan
|
|
bis11
      
Beiträge: 1247
Erhaltene Danke: 2
Apple Mac OSX 10.11
|
Verfasst: So 19.01.03 10:56
Hi,
und wenn Du mal die while-Schleife ganz wegläßt ? Du mußt aber dazu das DBGrid mit der Datasource verbunden haben und die Datasource mit der TQuery, so wie es grayfox beschrieben hat.
|
|
grayfox
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: So 19.01.03 11:20
luncustaf, das grid übernimmt die namen aus der tabelle automatisch, dazu brauchst das
Quelltext 1:
| frmh_gridf.Columns[0].FieldName := sqlq.FieldByName('Name').AsVariant; |
nicht. ein
SELECT * from 'tabellenname' reicht vollkommen aus, um die tabelle anzuzeigen...
warum verwendest überhaupt 'variant'? ist dir der feldtyp nicht bekannt?
es geht doch schneller, wenn du gleich den richtigen typen angibst, als wenn delphi die typen erst umwandeln muss
mfg, stefan
|
|
Luncustaf 
      
Beiträge: 324
Win 2k
D7 Ent.
|
Verfasst: So 19.01.03 13:55
hi,
thx für eure antworten.
ich hab das variant genommen weil ich nen bissrl rumprobiert habe das hat aber net gefunkt stand halt gerade so da wo ich den post gemacht habe - wenn ich das mit dem stern mache funktioniert das auch net
ich weis auch net
Quelltext 1: 2: 3: 4:
| sqlq.Sql.Clear; sqlq.Sql.Add('SELECT * FROM user'); sqlq.Open; sqlq.Close; |
ich hab das nun so dastehen aber da regt sich nix - woher weis das grid in welche spalte es welche datensätze schreiben muss?
ich blick diese komponente net
gr€€tz
|
|
grayfox
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: So 19.01.03 14:15
hast in der TQuery den 'Databasename' ausgefüllt?
entweder einen alias oder den verzeichnisnamen?
dann deaktivier deinen code mal
und trag in der TQuery bei der eigenschaft 'SQL'
| Zitat: | | SELECT * from den_namen_deiner_tabelle_ohne_punkt_endung |
wenn du nun das property active auf true stellst, dann sollte dein grid bereits im entwurfsmodus gefüllt werden.
hast du ganz sicher bei der TDataSource als 'dataset' den namen deiner query eingetragen? und beim grid steht auch als datasource der name deiner datasource?
das grid weiss deshalb welche felder es anzeigen soll, weil du es ihm sagst. '*' heisst 'alle felder'...
du kannst ja auch sagen 'SELECT zuname, vorname FROM adressen' zb...
mfg, stefan
ps: hast dir schon einige beiträge im forum über queries durchgelesen? vielleicht kommst so auf die lösung?
|
|
grayfox
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: So 19.01.03 14:35
komisch, bei mir tut sich was
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm1.AnzeigeBtnClick(Sender: TObject); begin Query1.Close; Query1.Sql.Clear; Query1.Sql.Add('SELECT * FROM tblKontakt'); Query1.Open; end;
procedure TForm1.EndeBtnClick(Sender: TObject); begin Query1.Close; close; end; |
ich befasse mich zwar erst seit heute 10 uhr vormittags mit SQL, vermute aber stark, dass dein sqlq.Close die query schon wieder schliesst, bevor du sie noch sehen kannst  was meinst du?
mfg, stefan
Zuletzt bearbeitet von grayfox am So 19.01.03 15:04, insgesamt 1-mal bearbeitet
|
|
Luncustaf 
      
Beiträge: 324
Win 2k
D7 Ent.
|
Verfasst: So 19.01.03 14:35
hmm jetzt gehts auf einmal
*komisch  )*
naja egal trotzdem nen dickes thx  @ query's damit weis ich schon umzugehen hab schonmal ne db anwendung geschrieben nur das grid noch nie verwendet - trotzdem nen dickes thx an dich und bis11
gr€€tz
|
|
grayfox
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: So 19.01.03 14:51
na gott sei dank, dass es endlich klappt
und wo lag jetzt der fehler? hattest nicht alle sources, pfade, etc eingetragen?
ich bin bis heute immer mit tables ausgekommen, aber jetzt weiss ich auch, wie man mit queries hantiert *gg*
mfg, stefan
|
|
Luncustaf 
      
Beiträge: 324
Win 2k
D7 Ent.
|
Verfasst: So 19.01.03 15:17
der fehler lag da das man das query bei active auf true machen muss - da reicht nen open close net aus
gr€€tz
|
|