Hi,
ich suche nach einer Möglichkeit eine Stringlist an ein Dataset zu hängen (jaja, eklig - muss aber sein :p )
In der Stringlist stehen jede Menge Strings die in einem Dataset über eine Spalte abrufbar sein sollen,
also in etwa so wenn ich eine tabelle hätte mit einem Feld vom Typ String.
Dass ich mit Delphi erst seit ein paar Tagen "richtig" arbeite ist mir dabei auch keine große Hilfe
Da ich aber recht lange in C++ programmiert habe bin ich mal so an das Problem gegangen:
Abgeleitete Klasse von TDataset erstellen
Abgeleitete Klasse von TField erstellen
und dann die abstract Methoden jeweils implementieren sowie noch ein paar Methoden anpassen (first(), last(), next() usw.)
Das ganze Dataset wird dann an einen Crystal Reports Viewer angebunden der die Daten ausspucken soll. Es ist nur so dass ich jetzt seit ein paar Tagen an dem Problem hänge und alles was in in den Viewer reinbekomme ist der letzte Datensatz, also das letzte Item in der Stringlist.
Hier mal die Funktion getRecord(), ich vermute mal dass da ein Fehler drin ist, aber auf alle Fälle erklärt der Code recht gut was ich eigentlich versuche zu machen
Delphi-Quellcode:
function StringListDataSet.GetRecord;
begin
result := grOK;
case GetMode
of
gmNext:
if self.stringIndex < self.strlist.count - 1
then
begin
Inc(self.stringIndex);
Buffer := PChar(Self.strlist[self.stringIndex]);
self.field.SetValue(self.strlist[Self.stringIndex]);
result := grOK;
end
else
result := grEOF;
gmPrior:
if self.stringIndex > 0
then
begin
Dec(self.stringIndex);
Buffer := PChar(Self.strlist[self.stringIndex]);
self.field.SetValue(self.strlist[Self.stringIndex]);
result := grOK;
end
else
result := grBOF;
gmCurrent:
begin
Buffer := PChar(Self.strlist[self.stringIndex]);
self.field.SetValue(self.strlist[Self.stringIndex])
end
end;
ShowMessage('
GetRecord called... ' + IntToStr(self.stringIndex));
end;
als Hinweis noch: setValue speichert einfach nur einen string in meiner abgeleiteten TField Klasse welchen man über FieldByName('TEMP').value z.B. wieder auslesen kann.
Gibts da vielleicht einen einfacheren Weg sowas umzusetzen? Wenn nicht schreib ich gern mal das was ich bisher hab in ein kleines Demoprogramm (bringt vermutlich aber nur den wenigsten etwas da Crystal Reports benötigt wird).
Schonmal Danke für die Hilfe