Moin,
ich arbeite mit Delphi 5 (Pro) und den entsprechenden Standard-IBX-Komponenten.
Ich möchte Tabellenfelder einer Interbase-Tabelle, deren Inhalte 0 (Null) und 1 sein können, in einem DBGrid als 'N' für 0 und 'J' für 1 darstellen.
Ich möchte allerdings nicht auf Formular-Ebene berechnete Felder in die DFM-Datei einbauen.
Folgendes habe ich in einem TIBDatset-Nachfolger versucht:
<PRE>
type
TIBDataSetBewegungen = class(TIBDataSet)
private
protected
FcalcKzSollHaben : TStringField;
public
constructor create(AOwner: TComponent); override;
destructor destroy; override;
procedure loaded; override;
procedure SelectBewegungenFuerKundenNr(const aKdNr : TKundenNr);
published
end;
implementation
...
procedure TIBDataSetBewegungen.SelectBewegungenFuerKundenNr( const aKdNr : TKundenNr);
begin
Active := false;
SelectSQL.Clear;
SelectSQL.Add('SELECT ' +
' KundenNr, BewegungsNr, BuchungsDatum, BuchungsArt ' );
SelectSQL.Add( ' FROM ' + TableName +
' WHERE KundenNr=' +IntToStr(aKdNr) +
' ORDER BY KundenNr, BewegungsNr ASC');
RefreshSQL.Clear;
RefreshSQL := SelectSQL;
// Berechnetes Feld anlegen
FcalcKzSollHaben := TStringField.Create(Self);
FcalcKzSollHaben.Size := 1;
FcalcKzSollHaben.Name := TableName + 'calcKZSollHaben';
FcalcKzSollHaben.FieldName := 'calcKZSollHaben';
FcalcKzSollHaben.Dataset := self;
FcalcKzSollHaben.Calculated:= true;
Self.Active := true;
end;
</PRE>
Nach dem Öffnen wird allerdings nur noch das berechnete Feld akzeptiert.
Bei Zugriff auf die anderen Felder, z.B. BewegungsNr, kommt die Exception "Feld BewegungsNr nicht vorhanden..."
Wie kann ich dieses Problem lösen ?
ich arbeite mit Delphi 5 (Pro) und den entsprechenden Standard-IBX-Komponenten.
Ich möchte Tabellenfelder einer Interbase-Tabelle, deren Inhalte 0 (Null) und 1 sein können, in einem DBGrid als 'N' für 0 und 'J' für 1 darstellen.
Ich möchte allerdings nicht auf Formular-Ebene berechnete Felder in die DFM-Datei einbauen.
Folgendes habe ich in einem TIBDatset-Nachfolger versucht:
<PRE>
type
TIBDataSetBewegungen = class(TIBDataSet)
private
protected
FcalcKzSollHaben : TStringField;
public
constructor create(AOwner: TComponent); override;
destructor destroy; override;
procedure loaded; override;
procedure SelectBewegungenFuerKundenNr(const aKdNr : TKundenNr);
published
end;
implementation
...
procedure TIBDataSetBewegungen.SelectBewegungenFuerKundenNr( const aKdNr : TKundenNr);
begin
Active := false;
SelectSQL.Clear;
SelectSQL.Add('SELECT ' +
' KundenNr, BewegungsNr, BuchungsDatum, BuchungsArt ' );
SelectSQL.Add( ' FROM ' + TableName +
' WHERE KundenNr=' +IntToStr(aKdNr) +
' ORDER BY KundenNr, BewegungsNr ASC');
RefreshSQL.Clear;
RefreshSQL := SelectSQL;
// Berechnetes Feld anlegen
FcalcKzSollHaben := TStringField.Create(Self);
FcalcKzSollHaben.Size := 1;
FcalcKzSollHaben.Name := TableName + 'calcKZSollHaben';
FcalcKzSollHaben.FieldName := 'calcKZSollHaben';
FcalcKzSollHaben.Dataset := self;
FcalcKzSollHaben.Calculated:= true;
Self.Active := true;
end;
</PRE>
Nach dem Öffnen wird allerdings nur noch das berechnete Feld akzeptiert.
Bei Zugriff auf die anderen Felder, z.B. BewegungsNr, kommt die Exception "Feld BewegungsNr nicht vorhanden..."
Wie kann ich dieses Problem lösen ?
Comment