Autor Beitrag
LowSkills
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 111

Windows XP
Delphi 6 Professional
BeitragVerfasst: Sa 16.06.07 17:14 
hi,

gibt es eine möglichkeit aus einem dbgrid einzelne felder auszulesen, ähnlich wie cells[a,b] beim stringgrid? oder alternativ eine möglichkeit ein stringgrid mit den einträgen aus dem dbgrid zu füllen?

danke im vorraus!

_________________
Verstand ist eines der am besten verteilten Güter. Jeder denkt, er hätte genug davon.
Kein Problem widersteht lange dem Angriff beharrlichen Denkens.
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Sa 16.06.07 21:00 
Ich würde die Felder der dahinterliegenden Datenmenge nehmen.

_________________
Markus Kinzler.
LowSkills Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 111

Windows XP
Delphi 6 Professional
BeitragVerfasst: Sa 16.06.07 21:26 
Also quasi das dreckelige recordset-dingsbums, nö?
Ganz ehrlich, ich hab den halben Tag damit verbracht, meinem Problem eine Lösung hinzuzuführen, aber leider mit ausbleibendem Erfolg. Und weil ich die Schleifen nicht peile, von wegen erster DS lesen, zweiter bla, versuch ich es glaub ich morgen "einfach" mal anders, so in die richtung per SQL-Tag direkt als xls speichern lassen und dann per OLE oder so excel in das Stringgrid laden.

Hoffe das ist so machbar... wird man dann ja sehn.
Schade eigentlich. Wer hatte eigentlich die Idee, ein DBGrid nur zum anzeigen zu etnwickeln? Daten ins DBGrid laden und dann damit nicht arbeiten zu können ist ja wie ins Auto steigen und nicht losfahren... ;)

Ich muss auf alle Fälle morgen den Durchbruch schaffen. Wär ganz schön, wenn sich jetzt schon vielleicht jemand den Thread vormerken kann, und morgen im verlaufe des späten morgens mal reinschneit...

Würde mich freuen...

Vielen lieben Dank schonmal im Vorraus!

_________________
Verstand ist eines der am besten verteilten Güter. Jeder denkt, er hätte genug davon.
Kein Problem widersteht lange dem Angriff beharrlichen Denkens.
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Sa 16.06.07 23:17 
Natürlich kannst du die datenbank auch in ein StringGrid laden, aber warum? Ein DBGrid ist eine Anzeigekomponente für eine DB, deshalb ist es besser auf sie selber zuzugreifen. Wenn man die Grundlagen von DB versteht ist der Zugriff auf Feldebene recht einfach.
Was hast du genau vor?

_________________
Markus Kinzler.
Agawain
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 460

win xp
D5, MySQL, devxpress
BeitragVerfasst: Sa 16.06.07 23:40 
eine Datenmenge zu durchlaufen ist doch ganz einfach.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
begin
  Dataset.open;
  Dataset.first; //setzt den Cursor auf den ersten Datensatz, ist zwar nicht notwendig, wenn das Dataset vorher geschlossen war, aber ich baus in solchen Fällen immer sicherheithalber ein
  while not Dataset.EOF do //EOF markiert das Dateiende, while als kopfgesteuerte Schleife prüft vor Schleifendurchgang auf diese Bedingung
     begin
        showmessage(dataset.fieldvalues['Feldname']); //sollte in dem Fall schon ein String sein  :wink: 
        dataset.next; //setzt den Cursor, den Satzzeiger auf den nächsten Datensatz
     end;
  Dataset.close;
end;


Um mal bei komischen Vergleichen zu bleiben, so wie sich das bei Dir anhöhrt, hast Du vor, von Brüssel über Timbuktu nach Paris zu fahren, oder von mir aus auch über Redmond :wink:

Gruß

Aga
LowSkills Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 111

Windows XP
Delphi 6 Professional
BeitragVerfasst: Mo 18.06.07 13:53 
Erstmal vielen Dank für eure Mühe :)

Aber:

Ich bekomme das im Kopf nicht ganz hin...

Also, der moved immer im dataset weiter. Wohin?
Zeile 1 Feld 1 -> Zeile 1 Feld 2 -> [...] ->Zeile 1 Feld letztes
Zeile 2 Feld 1 -> [...]
:?:

Wenn der so springt, durchläuft er ja alle Felder, klingt ja schonmal toll, wenn es so ist.
Dann das ganze ins StringGrid schreiben funktionierte dann wie?

dataset.fieldvalues['Feldname'] <- Übergibt automatisch den Wert des in der Schleife genannten Feldes, oder?

Jetzt muss ich ja dann, wenn alles, was bisher hier festgestellt wurde stimmt, den Kram jeweils ins StringGrid schubsen...

Aber wie?
Wie bringe ich dem bei, dass ich mich gerade im Feld (Cells[x,y]) befinde? Woher weiss die Schleife dass ich jetzt in der Zeile nach rechts wandere und oder nach unten oder wo ich überhaupt gerade bin???

Ich bin gleichermßen überfragt und hilflos.

Hilfe! :(

Ach ja: @Agawain: Ich fahre immer über Timbuktu. Ist schön da. Gibts denn noch ne andere Route? ;)

_________________
Verstand ist eines der am besten verteilten Güter. Jeder denkt, er hätte genug davon.
Kein Problem widersteht lange dem Angriff beharrlichen Denkens.
noidic
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: Mo 18.06.07 13:58 
Das Dataset wird zeilenweise, nicht feldweise durchlaufen.

Von einem Mechanismus wie Cell[x,y] muss man sich bei DB-Geschichten eh verabschieden, weil dort definierte Zeilenreihenfolgen eher nicht vorherrschen.

Wenn du also einen bestimmten Wert haben willst, suche per Dataset.locate den richtigen Datensatz mittels eines eindeutigen Schlüssels und frage dann das gewünschte Feld mit Dataset.FieldByName('feldname').asString o.ä. ab.

_________________
Bravery calls my name in the sound of the wind in the night...
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mo 18.06.07 13:58 
Ich verstehe immer noch nicht warum du den Umweg über das StringGrid machen willst.
Der recordzeiger steht auf dem markierten Datensatz. Ihn verscheiben kannst du mit .Prior, .Next usw.

_________________
Markus Kinzler.
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Mo 18.06.07 14:22 
Um zum eigentlich Problem zurückzukommen:

ausblenden SQL-Anweisung
1:
Select Marke, Farbe, Kosten from Auto oder by Marke					


Inhalt im DBGrid:
ausblenden Quelltext
1:
2:
3:
4:
Audi, rot, 12.000
Audi, gelb, 15.000
BMW, blau, 20.000
Toyoto, silber, 17.000


Spalten kannst du so ansprechen

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
for i:= 0 to DbGrid1.DataSource.DataSet.RecordCount do
begin
 showmessage('Marke: ' + dbgrid1.fields[0].asString);
 DBGrid1.DataSource.DataSet.MoveBy(1); //Nächste Zeile
end;


dann erhälst du diese Messages:

ausblenden Quelltext
1:
2:
3:
4:
Audi
Audi
BMW
Toyota


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
for i:= 0 to DbGrid1.DataSource.DataSet.RecordCount do
begin
 showmessage('Marke: ' +dbgrid1.fields[0].asstring + ' - Preis: ' + dbgrid1.fields[2].asString + ' Euro');
 DBGrid1.DataSource.DataSet.MoveBy(1); //Nächste Zeile
end;


ergeben diese Meldungen

ausblenden Quelltext
1:
2:
3:
4:
Marke: Audi - Preis: 12.000 Euro
Marke: Audi - Preis: 15.000 Euro
Marke: BMW - Preis: 20.000 Euro
Marke: Toyota - Preis: 17.000 Euro


Über 0 bis x kannst du also auf die Spalten des DBGrids zugreifen und zwar in der Reihenfolge, wie du sie im Select-Statement belegst.

Mit Moveby(x) sagst du deinem DBGrid, dass es den nächsten Datensatz (Zeile) markieren soll, d.h. der Zeiger steht auf der nächsten Zeile.

LG
Stefan

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
LowSkills Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 111

Windows XP
Delphi 6 Professional
BeitragVerfasst: Mo 18.06.07 14:53 
Sehr fein, ich blicke langsam durch... *grübel* denke ich. Ich werds heute abend mal ausprobieren.
Wenns klappt, werd ich mich dankbar zeigen... :)

Dankefön!

_________________
Verstand ist eines der am besten verteilten Güter. Jeder denkt, er hätte genug davon.
Kein Problem widersteht lange dem Angriff beharrlichen Denkens.
LowSkills Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 111

Windows XP
Delphi 6 Professional
BeitragVerfasst: Mo 18.06.07 23:32 
Hallo Ihr!

Ich muss mal groß...

groß Danke sagen ;)

Ich habe es tatsächlich umgesetzt bekommen. Es ist erstaunlich wie easy diese Schleife zu handlen ist, aber ohne die Beispiele hier gepostet wurden, wär ich nie auf nen grünen Zweig gekommen, und jetzt (um nochmal so nen Vergleich zu bringen) sitze ich geradezu auf einem tragenden, fruchtbaren Ast! ;) Waaahnsinn!

Ich weiß ja nicht, ob es irgendwo hier so ne Art StepByStep Erklärung gibt, aber ich denke ich werde meine Lösung morgen nochmal für alle anderen genauestens dokumentiert hier hochladen.

Vieeeeeeeeeelen Dank an alle, @Aga, @mkinzler, @ZeitGeist87 ganz besonders und auch @noidic!

Danke! *sich tief verbeug*

_________________
Verstand ist eines der am besten verteilten Güter. Jeder denkt, er hätte genug davon.
Kein Problem widersteht lange dem Angriff beharrlichen Denkens.
Agawain
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 460

win xp
D5, MySQL, devxpress
BeitragVerfasst: Mo 18.06.07 23:44 
*hust, was heißt das jetzt?

doch alles in ein Stringgrid gepackt?

Gruß

Aga
LowSkills Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 111

Windows XP
Delphi 6 Professional
BeitragVerfasst: Mo 18.06.07 23:55 
user profile iconAgawain hat folgendes geschrieben:
*hust, was heißt das jetzt?

doch alles in ein Stringgrid gepackt?

Gruß

Aga


Hey, nimm mir doch nicht den Wind aus den Segeln! :mrgreen:

;)

Ja, ich muss gestehen, dass es jetzt alles im StringGrid steht. Und: Ich kreise vor Freude um die Lampe... :mrgreen:

Mein Kollege hat da so nen Haufen Arrays gemacht (Ich habe keine Ahnung wie die funktionieren) aber ich glaube der hat sich da genug gedanken drum gemacht... Oder auch nicht.

Fakt ist halt, dass sein Gedankliches Konstrukt auf einer Schleife in nem StringGrid basiert, wo man dann halt irgendwie so Zelle für Zelle und so. Ich denke, dass diese Vorgehensweise unseren ansprüchen genügen sollte, um die Arrays zu befüllen. Ist mit Sicherheit nicht die schönste/eleganteste Lösung aber wenns funktioniert und das System nicht übermäßig Stresst/überlastet, dann soll uns das fürs erste reichen.

Ich denke man kann behaupten, dass wir beide nicht mehr unbedingt Newbies sind, aber die Masse an Funktionen und Proceduren, Uses-irgendwas und Komponenten die ich innerhalb der letzten sechs/sieben Wochen kennengelernt habe, ist so groß, dass es unmöglich sein dürfte, die alle in Perfektion zu beherschen. Und da ich unter einem gewissen Zeitdruck stehe, reicht es mir, wenns läuft.

Weist du, wenn ich genau wüsste, wie die Arrays funktionieren und welche funktion die Verfolgen, könnte ich das mit sicherheit auch aus dem Recordset rausstricken, aber ich habe da echt nicht die Zeit, und die Lust zu, mich auch noch damit zu beschäftigen.

Aber ich denke, wenn Version1 raus ist, kann ich immernoch ein halbes Jahr weiter dran feilen, und ne revision rausbringen, nö?

Und dann komm ich auf dich zurück und lass mir das nochmal erklären. Bei nem Bier? :mrgreen: Super, du zahlst! ;)

Ich denke, dass o. g. Gründe für die (vorläufige) Umsetzung durchaus akzeptabel sind, oder? :?:

Danke auf jeden Fall, dass du dich so aufopfernd um mich (uns alle) kümmerst!

_________________
Verstand ist eines der am besten verteilten Güter. Jeder denkt, er hätte genug davon.
Kein Problem widersteht lange dem Angriff beharrlichen Denkens.
Agawain
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 460

win xp
D5, MySQL, devxpress
BeitragVerfasst: Di 19.06.07 00:05 
hehe,

so ein klärendes Wort sagt doch mal alles.

Wie gesagt, Timbuktu, Redmond oder erstmal hauptsache lüppt.
Find ich akzeptabel, hättst ja mal eher sagen können, oder?

Da haben sicher alle Verständnis für, so auch ich.

Also viel Erfolg

Und danach gehste mal richtig ran, falls das Dich dann überhaupt noch betrifft und ja, von mir aus

:beer:

aber ich hoffe, Ihr habt nicht vor, was zu speichern in der DB, dann stehste nämlich morgen wieder auf der Matte, dann zahlst Du aber :lol:

Aber über die Klippen werden wir Dir wohl auch helfen...mit einem DBGrid wär das ja alles kein Problem :lol:

Gruß

Aga