AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Keine Daten wenn UniDac TVirtualDataSet in TDataModule
Thema durchsuchen
Ansicht
Themen-Optionen

Keine Daten wenn UniDac TVirtualDataSet in TDataModule

Ein Thema von norwegen60 · begonnen am 12. Okt 2020 · letzter Beitrag vom 12. Okt 2020
Antwort Antwort
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#1

Keine Daten wenn UniDac TVirtualDataSet in TDataModule

  Alt 12. Okt 2020, 16:50
Datenbank: Virtual • Version: xx • Zugriff über: UniDac
Hallo zusammen,

ich habe ein TVirtualDataSet von UniDac in einem TDataModule definiert und stelle die Daten über TDataSource in einem DBGrid dar.
Dem TVirtualDataSet wird eine TObjectList wie folgt zugeordnet.
Delphi-Quellcode:
type
  TSerNr = class
  private
    FID: Integer;
    FSerNr: string;
    FName: string;
  public
    property ID: Integer read FID write FID;
    property SerNr: string read FSerNr write FSerNr;
    property Typ: string read FName write FName;

    constructor Create;
    destructor Destroy; override;
  end;

  TSerNrList = class(TObjectList<TSerNr>)
  end;

procedure TDataModule1.vdsSerNrGetFieldValue(Sender: TObject; Field: TField; RecNo: Integer; out Value: Variant);
var
  SerNr: TSerNr;
begin
  SerNr := TSerNr(SerNrList.Items[RecNo - 1]);
  case Field.FieldNo of
    1: Value := SerNr.ID;
    2: Value := SerNr.SerNr;
    3: Value := SerNr.Typ;
  end;
end;

procedure TDataModule1.vdsSerNrGetRecordCount(Sender: TObject; out Count: Integer);
begin
  Count := SerNrList.Count;
end;
Das Ganze hat einwandfrei funktioniert, als ich TVirtualDataSet und TDataSource direkt auf dem TForm abgelegt habe. Sobald ich die beiden Komponenten aber in eine DataModule verschiebe, funktioniert es nicht mehr.
Die Liste wird korrekt angebunden, d.h. das vdsSerNrGetRecordCount wird aufgerufen und im Grid eine entsprechende Anzahl leerer Zeilen erzeugt.
Ein Haltepunkt in vdsSerNrGetFieldValue zeigt aber, dass dieses Event nie aufgerufen wird.

Wenn ich TVirtualDataSet und TDataSource wieder ins Form schiebe geht es.
Das Vorgehen ist in TForm und TDataModule genau das gleiche
  • Komponenten auf das Form/DataModule legen
  • TDataSource mit TVirtualDataSet verknüpfen
  • OnGetFieldValue und OnGetRecordCount definieren
  • Liste erzeugen
  • TVirtualDataSet.Open aufrufen
Hat jemand eine Idee woran das liegen könnte?

Ich arbeite mit Delphi 10.3.2 und UniDac 7.4.12

Grüße
Gerd
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Keine Daten wenn UniDac TVirtualDataSet in TDataModule

  Alt 12. Okt 2020, 17:33
In welcher Unit/Klasse ist die Event-Methode deklariert?
Markus Kinzler
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#3

AW: Keine Daten wenn UniDac TVirtualDataSet in TDataModule

  Alt 12. Okt 2020, 19:13
Ganz blöder Fehler: Ohne das geht es natürlich nicht

Delphi-Quellcode:
procedure TDataModule1.DataModuleCreate(Sender: TObject);
begin
  vdsSerNr.FieldDefs.Add('ID', ftInteger);
  vdsSerNr.FieldDefs.Add('SerNr', ftString, 20);
  vdsSerNr.FieldDefs.Add('Typ', ftString, 30);
end;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz