TDbf: Korrekt funktionierendes Codebeispiel für eine Master-Detail-Beziehung gesucht

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
DarkVisions
Beiträge: 19
Registriert: Sa 9. Apr 2022, 09:35
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: Köln

TDbf: Korrekt funktionierendes Codebeispiel für eine Master-Detail-Beziehung gesucht

Beitrag von DarkVisions »

Liebe Foristen,

hat jemand ein vollständiges Codebeispiel für eine zuverlässig funktionierende Master-Detail-Beziehung zweier dBase-Tabellen (TDbf)? Keines der wenigen Codebeispiele im Netz führt mich zum Erfolg.

1) Ich weiß, dass TDbf veraltet ist. Auf dem Stand, zu dem die Entwicklung eingestellt wurde, soll es aber lt. Lazarus Tdbf Tutorial zwar keine referenzielle Integrität, aber eine vollständige Master-Detail-Funktionalität gegeben haben.
2) Es gibt Gründe, warum ich nicht SQLite (oder eine Serverlösung wie MariaDB) benutze(n kann).
3) Ich benutze LazarusPortable 1.0.0.0 mit FPC 2.6.0 (aus denselben Gründen).
3) Vollständige Master-Detail-Funktionalität: Darunter verstehe ich, dass ich einen existierenden Datensatz in der Mastertabelle markiere und in der Detail-Tabelle
a) neue Datensätze beim Speichern automatisch die ID dieses Master-Datensatzes zugeordnet bekommen, ohne dass ich diesen Vorgang programmieren muss,
b) nur diejenigen bereits existierenden Detail-Datensätze angezeigt werden, welche die ID des Master-Datensatzes haben, ohne dass ich diesen Filtervorgang programmieren muss.
4) Referenzielle Integrität: Darunter verstehe ich, dass, wenn ich einen Datensatz in der Master-Tabelle lösche, alle mit ihm verbundenen Datensätze in der Detail-Tabelle ebenfalls gelöscht werden. Diese Funktionalität benötige ich hier nicht.

Mein eigener Code
Site = Krankenhaus, Patient selbsterklärend, Urine = Urinausscheidung in Millilitern, Creatinine = ein Laborwert zur Nierenfunktion
Jede Site hat einige Patienten (1:n).
Jeder Patient hat ein stündliches Urinausscheidungsvolumen für die Stunden nach Schließung der Operationsnaht (n:m).
Jeder Patient hat einige Kreatinin-Blutlaborwerte vor und nach der Operation (ebenfalls n:m).
Hier soll also sogar eine 1:n:m-Beziehung abgebildet werden, und zwar gleich zweimal:
Sites:Patients:Urine
Sites:Patients:Creatinine
Ich gebe mich aber gern mit einem einzigen 1:n-Beispiel zufrieden, um die Dinge einfach zu halten:
Sites:Patients

In der aktuellen Fassung habe ich in sites.dbf drei Krankenhäuser angelegt und in patients.dbf zwei Patienten für das dritte Krankenhaus (SiteID = 2). Die SiteID in patients.dbf habe ich selbst von Hand eintragen müssen (urine.dbf und creatinine.dbf sind noch leer). Fun fact: Obwohl die Master-Tabelle sites.dbf drei Datensätze hat, wird mir nur derjenige Datensatz angezeigt, der in patients.dbf Detail-Datensätze hat.

Code: Alles auswählen

unit FormMain;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,
  DBGrids, DbCtrls, Dbf, db {FieldTypes ft...};

type

  { TfrmMain }

  TfrmMain = class(TForm)
    dsCreatinine: TDatasource;
    dsUrine: TDatasource;
    dsPatients: TDatasource;
    dsSites: TDatasource;
    DBGridUrine: TDBGrid;
    DBGridCreatinine: TDBGrid;
    DBGridSites: TDBGrid;
    DBGridPatients: TDBGrid;
    DBNavUrine: TDBNavigator;
    DBNavCreatinine: TDBNavigator;
    DBNavSites: TDBNavigator;
    DBNavPatients: TDBNavigator;
    PageControlMain: TPageControl;
    StatusBarMain: TStatusBar;
    TabSheetCreatinine: TTabSheet;
    TabSheetUrine: TTabSheet;
    TabSheetPatients: TTabSheet;
    TabSheetSites: TTabSheet;
    ToolBarMain: TToolBar;
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  frmMain: TfrmMain;
  DbfSites, DbfPatients, DbfUrine, DbfCreatinine: TDbf;
  dsSites, dsPatients, dsUrine, dsCreatinine: TDataSource;

implementation

{$R *.lfm}

{ TfrmMain }

procedure TfrmMain.FormCreate(Sender: TObject);
var
  path: String;
begin

  {DataSets in jedem Fall anlegen}
  DbfSites := TDbf.Create(self);
  DbfPatients := TDbf.Create(self);
  DbfUrine := TDbf.Create(self);
  DbfCreatinine := TDbf.Create(self);

  {absoluten Pfad der .exe ermitteln}
  path := ExtractFilePath(Application.EXEName);

  {Prüfen, ob es das relative Verzeichnis 'database' gibt}
  if not DirectoryExists(path + 'database') then
  begin
    CreateDir(path + 'database');
  end;

  {Prüfen, ob es die dBase-Tabelle 'database\sites.dbf' gibt}
  if not FileExists(path + 'database\' + 'sites.dbf') then
  begin
    with DbfSites do begin
      TableLevel := 7;
      FilePathFull := Path + 'database\';
      TableName := 'sites.dbf';
      with FieldDefs do begin
        Add('SiteID', ftAutoInc, 0, True);
        Add('SiteNo', ftString, 4, True);
        Add('SiteName', ftString, 25);
      end;
      CreateTable;
      Exclusive := True;
      Open;
      AddIndex('idxSiteID', 'SiteID', [ixPrimary, ixUnique]);
      AddIndex('idxSiteNo','SiteNo', [ixCaseInsensitive]);
      AddIndex('idxSiteName','SiteName', [ixCaseInsensitive]);
      Close;
    end;
  end;

  {Prüfen, ob es die dBase-Tabelle 'database\patients.dbf' gibt}
  if not FileExists(path + 'database' + DirectorySeparator + 'patients.dbf') then
  begin
    with DbfPatients do begin
      TableLevel := 7;
      FilePathFull := Path + 'database';
      TableName := 'patients.dbf';
      // Feldstruktur definieren
      with FieldDefs do begin
        Add('PatID', ftAutoInc, 0, True);
        Add('SiteID', ftInteger, 0, True);
        Add('PatNo', ftString, 8, True);
        Add('PatBodyWeight', ftFloat, 0, True);
        Add('PatDateTimeSuture', ftDateTime, 0, True);
      end;
      CreateTable;
      // Indizes hinzufügen
      Exclusive := True;
      Open;
      AddIndex('idxPatID', 'PatID', [ixPrimary, ixUnique]);
      AddIndex('idxSiteID', 'SiteID', [ixCaseInsensitive]);
      AddIndex('idxPatNo', 'PatNo', [ixCaseInsensitive]);
      Close;
    end;
  end;

  {Prüfen, ob es die dBase-Tabelle 'database\urine.dbf' gibt}
  if not FileExists(path + 'database' + DirectorySeparator + 'urine.dbf') then
  begin
    with DbfUrine do begin
      TableLevel := 7;
      FilePathFull := Path + 'database';
      TableName := 'urine.dbf';
      with FieldDefs do begin
        Add('UrineID', ftAutoInc, 0, True);
        Add('PatID', ftInteger, 0, True);
        Add('Hour', ftInteger);
        Add('Excretion', ftInteger);
        Add('Stage', ftInteger);
      end;
      CreateTable;
      Exclusive := True;
      Open;
      AddIndex('idxUrineID', 'UrineID', [ixPrimary, ixUnique]);
      AddIndex('idxPatID', 'PatID', [ixCaseInsensitive]);
      Close;
    end;
  end;

  {Prüfen, ob es die dBase-Tabelle 'database\creatinine.dbf' gibt}
  if not FileExists(path + 'database' + DirectorySeparator + 'creatinine.dbf') then
  begin
    with DbfCreatinine do begin
      TableLevel := 7;
      FilePathFull := Path + 'database';
      TableName := 'creatinine.dbf';
      with FieldDefs do begin
        Add('CreatinineID', ftAutoInc, 0, True);
        Add('PatID', ftInteger, 0, True);
        Add('TestDateTime', ftDateTime, 0, True);
        Add('Value', ftFloat, 0, True);
        Add('Unit', ftString, 6, True);
        Add('HoursAfterSuture', ftInteger, 0, True);
        Add('Stage', ftInteger);
      end;
      CreateTable;
      Exclusive := True;
      Open;
      AddIndex('idxCreatinineID', 'CreatinineID', [ixPrimary, ixUnique]);
      AddIndex('idxPatID', 'PatID', [ixCaseInsensitive]);
      Close;
    end;
  end;

  {DataSources mit den zur Laufzeit erstellten DataSets verbinden}
  dsSites.DataSet := DbfSites;
  dsPatients.DataSet := DbfPatients;
  dsUrine.DataSet := DbfUrine;
  dsCreatinine.DataSet := DbfCreatinine;

  {Master-Detail-Beziehungen definieren und DataSets öffnen}

  with DbfSites do begin
    FilePathFull := Application.Location + 'database';
    TableName := 'sites.dbf';
    Open;
    {'sites.dbf' Master-Tabelle, 1:n-Beziehung zu 'patients.dbf'}
    IndexName := 'idxSiteID'; // Index des Master-Felds
  end;

  with DbfPatients do begin
    FilePathFull := Application.Location + 'database';
    TableName := 'patients.dbf';
    Open;
    {'patients.dbf' Master-Tabelle, n:m-Beziehung zu 'urine/creatinine.dbf'}
    IndexName := 'idxPatID'; // Index des Master-Felds
    {'patients.dbf' Detail-Tabelle, 1:n Beziehung zu 'sites.dbf'}
    MasterSource := dsSites;        // DataSet der Master-Tabelle
    MasterFields := 'SiteID';       // Master-Feld der Master-Tabelle
    IndexName := 'idxSiteID'; // Index des Master-Felds
  end;

  with DbfUrine do begin
    FilePathFull := Application.Location + 'database';
    TableName := 'urine.dbf';
    Open;
    {'urine.dbf' Detail-Tabelle, n:m-Beziehung zu 'patients.dbf'}
    MasterSource := dsPatients;    // DataSet der Master-Tabelle
    MasterFields := 'PatID';       // Master-Feld der Master-Tabelle
    IndexName := 'idxPatID'; // Index des Master-Felds
  end;

  with DbfCreatinine do begin
    FilePathFull := Application.Location + 'database';
    TableName := 'creatinine.dbf';
    Open;
    {'creatinine.dbf' auch Detail-Tabelle, n:m-Beziehung zu 'patients.dbf'}
    MasterSource := dsPatients;    // DataSet der Master-Tabelle
    MasterFields := 'PatID';       // Master-Feld der Master-Tabelle
    IndexName := 'idxPatID'; // Index des Master-Felds
  end;

end;

end.  
Vielen Dank und beste Grüße,
René
Dateianhänge
KDIGODbf.zip
(4.34 MiB) 20-mal heruntergeladen

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 7270
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: TDbf: Korrekt funktionierendes Codebeispiel für eine Master-Detail-Beziehung gesucht

Beitrag von af0815 »

Zur Umgebung.
Ich gehe davon aus, das du nur Windows Rechner zur Verfügung hast, die Eingeschränkt sind und keine Adminrechte haben. Deswegen Lazarus Portable. Du kannst auf diesen Rechnern nichts installieren. Aber die EXE kannst du kopieren + ausführen ?!

Ein riesiges Problem zum Testen ist die alte Version von Lazarus und FPC. Weil, auch angeblich die Entwicklung eingestellt ist, heisst das noch lange nicht, das es nicht Fehlerbereinigungen etc. gibt. Und daher das TDBF im FPC mit einem Wrapper für Lazarus verankert ist, bedeutet das, das es sehr wohl gewartet ist.

Das du daher auf DBF angewiesen bist, ist kein Problem und auch Nachvollziehbar. Bevor ich mir da etwas ansehen will, ist das mit den Versionen lösbar, wenn du auf einen anderen Rechner das ganze Programmierst und dann erst auf die Zielrechner kopierst. Weil dann könnte man das ganze mit aktuelleren Versionen testen.

Wenn du sagst es MUSS genau diese Lazarus+FPC Version sein, so sehe ich keine Möglichkeit zu helfen.

Edit: Weil lt. Sourcen ist es genauso gemacht wie im Tutorial im Beispiel angegeben. Das heisst man muss tiefer suchen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Zvoni
Beiträge: 639
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
CPU-Target: 64Bit
Wohnort: BW

Re: TDbf: Korrekt funktionierendes Codebeispiel für eine Master-Detail-Beziehung gesucht

Beitrag von Zvoni »

3a und 3b
Die Eigenschaften "MasterFields", "MasterSource" sowie die TdbfMasterLink-Klasse sind deine Freunde
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

DarkVisions
Beiträge: 19
Registriert: Sa 9. Apr 2022, 09:35
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: Köln

Re: TDbf: Korrekt funktionierendes Codebeispiel für eine Master-Detail-Beziehung gesucht

Beitrag von DarkVisions »

Hallo af0815,

vielen Dank.

Ja, Windows 11-Dienstrechner.
Ja, EXE kopier- und exportierbar.
Danke für den Hinweis, dass Fehlerbereinigung und also Wartung doch stattfindet.
Ja, ich habe ein privates Notebook, auf dem ich Master of Desaster :wink: bin. Ich wollte auf meinen Dienstreisen mit der Bahn ungern zwei Rechner mitschleppen.

Im übrigen kann ich auf meinem Privatrechner ja dann auch mit TSQLite3Connection arbeiten, das sicher besser geeignet ist. Ich verzweifle leider immer wieder beim Einbinden der sqlite3.dll, selbst mit Admin-Rechten (aber das ist ein anderer Thread :wink:, den ich schon vor einiger Zeit hier aufgemacht hatte)

Beste Grüße,
René

Benutzeravatar
Zvoni
Beiträge: 639
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
CPU-Target: 64Bit
Wohnort: BW

Re: TDbf: Korrekt funktionierendes Codebeispiel für eine Master-Detail-Beziehung gesucht

Beitrag von Zvoni »

..... und geh in dein Profil und vergib dir nen "gescheiten" Namen statt deiner Mail-Adresse.

Es gibt genug Bots, die solche Foren wie hier abgrasen, und sich dann freuen sowas zu finden
Im übrigen kann ich auf meinem Privatrechner ja dann auch mit TSQLite3Connection arbeiten, das sicher besser geeignet ist. Ich verzweifle leider immer wieder beim Einbinden der sqlite3.dll, selbst mit Admin-Rechten (aber das ist ein anderer Thread :wink:, den ich schon vor einiger Zeit hier aufgemacht hatte)
Wieso "einbinden"?
die sqlite3.dll neben deine Exe in den Projekt-Ordner, Fertich!

Du hast Lazarus wahrscheinlich in einem Verzeichnis
c:\Lazarus

und deine Projekte in einem eigenen Ordner
c:\Projekte\MeinDBProjekt

und genau in den Ordner "MeinDBProjekt" wirfst du die sqlite3.dll rein.
Das einzige worauf du achten musst: Bitness der DLL muss dem Target des Projekts entsprechen.
Ist dein Ziel eine 32-Bit-Anwendung, muss auch die sqlite-dll 32 Bit sein

Wenn aus welchen Gründen auch immer, die sqlite3.dll woanderst liegen sollte/muss, kannst du noch immer
die Variable "SQLiteLibraryName" (Achtung: Deprecated) bzw. stattdessen den Nachfolger "sqlite3dyn.SQLiteDefaultLibrary" (sqlite3dyn muss dann in Uses rein) nutzen
Vollständigen Pfad zur dll zuweisen bevor du die Verbindung öffnest
Amen!
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

charlytango
Beiträge: 1259
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: TDbf: Korrekt funktionierendes Codebeispiel für eine Master-Detail-Beziehung gesucht

Beitrag von charlytango »

Zvoni hat geschrieben: Mi 8. Apr 2026, 16:08 Wenn aus welchen Gründen auch immer, die sqlite3.dll woanderst liegen sollte/muss, kannst du noch immer
die Variable "SQLiteLibraryName" (Achtung: Deprecated) bzw. stattdessen den Nachfolger "sqlite3dyn.SQLiteDefaultLibrary" (sqlite3dyn muss dann in Uses rein) nutzen
Vollständigen Pfad zur dll zuweisen bevor du die Verbindung öffnest
Bin ich da irgendwie auf dem komplett falschen Dampfer oder habe ich etwas versäumt?

Ist nicht genau dafur TSQLDBLibraryLoader da?

Draufkleben (oder erzeugen) Pfad zuweisen, ConnectionType setzen und enablen -- oder im Code öffnen.
TSQLDBLibraryLoader muss immer vor dem Connectionobjekt existieren, daher scheint auch die Reihenfolge in der man die Komponente aufs Formular klebt (oder im Code erzeugt) wichtig zu sein.

https://wiki.freepascal.org/TSQLDBLibraryLoader
viewtopic.php?t=13633

Die blanken Connektoren nehmen das Standardverzeichnis in dem sie nach den Standard-dlls/So etc suchen.
Wenn das nicht geht oder aufwendig ist brauchts den TSQLDBLibraryLoader der dann quasi jede beliebige Lib in jedem Pfad laden kann

DarkVisions
Beiträge: 19
Registriert: Sa 9. Apr 2022, 09:35
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: Köln

Re: TDbf: Korrekt funktionierendes Codebeispiel für eine Master-Detail-Beziehung gesucht

Beitrag von DarkVisions »

Hallo Zvoni,

den Benutzernamen scheint man nachträglich nicht ändern zu können :roll:

TDbfMasterLink-Klasse sagt mir leider nichts. Hab's auch in keinem Beispiel gefunden und auch in den Lazarus- bzw. FPC-Referenzen nicht.

Beste Grüße,
René

DarkVisions
Beiträge: 19
Registriert: Sa 9. Apr 2022, 09:35
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: Köln

Re: TDbf: Korrekt funktionierendes Codebeispiel für eine Master-Detail-Beziehung gesucht

Beitrag von DarkVisions »

Liebe Alle,

zum Fun Fact, den Bug habe ich wenigstens gefunden:

Code: Alles auswählen

  with DbfSites do begin
    FilePathFull := Application.Location + 'database';
    TableName := 'sites.dbf';
    Open;
    {'sites.dbf' Master-Tabelle, 1:n-Beziehung zu 'patients.dbf'}
    //IndexName := 'idxSiteID'; // Index des Master-Felds
  end; 
Es war falsch, der Master-Tabelle per IndexName den Index des eigenen Master-Felds zuzuweisen. Habe die Zeile auskommentiert und siehe da, das Filtern in der 1:n-Beziehung funktioniert bestens.

Beste Grüße,
René

Benutzeravatar
Zvoni
Beiträge: 639
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
CPU-Target: 64Bit
Wohnort: BW

Re: TDbf: Korrekt funktionierendes Codebeispiel für eine Master-Detail-Beziehung gesucht

Beitrag von Zvoni »

charlytango hat geschrieben: Mi 8. Apr 2026, 17:24
Zvoni hat geschrieben: Mi 8. Apr 2026, 16:08 Wenn aus welchen Gründen auch immer, die sqlite3.dll woanderst liegen sollte/muss, kannst du noch immer
die Variable "SQLiteLibraryName" (Achtung: Deprecated) bzw. stattdessen den Nachfolger "sqlite3dyn.SQLiteDefaultLibrary" (sqlite3dyn muss dann in Uses rein) nutzen
Vollständigen Pfad zur dll zuweisen bevor du die Verbindung öffnest
Bin ich da irgendwie auf dem komplett falschen Dampfer oder habe ich etwas versäumt?

Ist nicht genau dafur TSQLDBLibraryLoader da?

Draufkleben (oder erzeugen) Pfad zuweisen, ConnectionType setzen und enablen -- oder im Code öffnen.
TSQLDBLibraryLoader muss immer vor dem Connectionobjekt existieren, daher scheint auch die Reihenfolge in der man die Komponente aufs Formular klebt (oder im Code erzeugt) wichtig zu sein.

https://wiki.freepascal.org/TSQLDBLibraryLoader
viewtopic.php?t=13633

Die blanken Connektoren nehmen das Standardverzeichnis in dem sie nach den Standard-dlls/So etc suchen.
Wenn das nicht geht oder aufwendig ist brauchts den TSQLDBLibraryLoader der dann quasi jede beliebige Lib in jedem Pfad laden kann
Das ist in Bezug auf TSQLConnector.
Mein Post bezog sich auf TSQLIte3Connection direkt. Dort kann man wie beschrieben direkt den Pfad zur DLL setzen
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Benutzeravatar
Zvoni
Beiträge: 639
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
CPU-Target: 64Bit
Wohnort: BW

Re: TDbf: Korrekt funktionierendes Codebeispiel für eine Master-Detail-Beziehung gesucht

Beitrag von Zvoni »

walsch.rene@web.de hat geschrieben: Mi 8. Apr 2026, 18:34 Hallo Zvoni,

den Benutzernamen scheint man nachträglich nicht ändern zu können :roll:

TDbfMasterLink-Klasse sagt mir leider nichts. Hab's auch in keinem Beispiel gefunden und auch in den Lazarus- bzw. FPC-Referenzen nicht.

Beste Grüße,
René
Was willst du mit Benutzernamen bei DBF (bzw. SQLite)? Da werden keine Benutzernamen eingegeben bzw. verwendet

Und zum Thema TDBF gibts nur eine äusserst dünne Dokumentation (wenn man das überhaupt als Dokumentation schimpfen darf).

Geh in den Quellcode, und da findest du eben TDbfMasterLink, und wie diese mit dem Rest zusammenhängt.

Es ist wie es ist.
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

DarkVisions
Beiträge: 19
Registriert: Sa 9. Apr 2022, 09:35
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: Köln

[Geschlossen] TDbf: Korrekt funktionierendes Codebeispiel für eine Master-Detail-Beziehung gesucht

Beitrag von DarkVisions »

Ach Zvoni,

es geht um den Benutzernamen in diesem Forum. Du selbst hattest mich darauf hingewiesen.
vergib dir nen "gescheiten" Namen
Dennoch vielen Dank allen Beteiligten!

Freundliche Grüße,
René

Benutzeravatar
Zvoni
Beiträge: 639
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
CPU-Target: 64Bit
Wohnort: BW

Re: [Geschlossen] TDbf: Korrekt funktionierendes Codebeispiel für eine Master-Detail-Beziehung gesucht

Beitrag von Zvoni »

walsch.rene@web.de hat geschrieben: Do 9. Apr 2026, 11:06 Ach Zvoni,

es geht um den Benutzernamen in diesem Forum. Du selbst hattest mich darauf hingewiesen.
vergib dir nen "gescheiten" Namen
Dennoch vielen Dank allen Beteiligten!

Freundliche Grüße,
René
Ach so.
Schreib ne PM an einen Moderator mit der Bitte es zu ändern.
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

wp_xyz
Beiträge: 5414
Registriert: Fr 8. Apr 2011, 09:01

Re: [Geschlossen] TDbf: Korrekt funktionierendes Codebeispiel für eine Master-Detail-Beziehung gesucht

Beitrag von wp_xyz »

Zvoni hat geschrieben: Do 9. Apr 2026, 14:32 Schreib ne PM an einen Moderator mit der Bitte es zu ändern.
Wenn ich hier Neuling wäre, wüsste ich nicht, wie man herausbekommt, wer ein Moderator ist. Der folgende Trick, wie man einen Moderator erreichen kann, ist mir mal genannt worden: Klicke bei einem deiner Beiträge auf das "!" rechts oben. Das ist zwar eigentlich dafür gedacht, den geklickten Beitrag als Spam zu melden, aber hier kriegst du garantiert einen Moderator an die Leitung, und du kannst in dem Eingabeformular dein Problem schildern.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2892
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: TDbf: Korrekt funktionierendes Codebeispiel für eine Master-Detail-Beziehung gesucht

Beitrag von m.fuchs »

wp_xyz hat geschrieben: Do 9. Apr 2026, 14:46
Zvoni hat geschrieben: Do 9. Apr 2026, 14:32 Schreib ne PM an einen Moderator mit der Bitte es zu ändern.
Wenn ich hier Neuling wäre, wüsste ich nicht, wie man herausbekommt, wer ein Moderator ist.
Das Gute ist: die Moderatoren lesen hier mit und melden sich pro-aktiv bei demjenigen.
0118999881999119725-3

Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

gsa
Beiträge: 10
Registriert: Fr 13. Jun 2008, 15:23
OS, Lazarus, FPC: Windows / Linux (FPC 3.2. fixes, Lazarus 4.x fixes / trunk)

Re: [Geschlossen] TDbf: Korrekt funktionierendes Codebeispiel für eine Master-Detail-Beziehung gesucht

Beitrag von gsa »

wp_xyz hat geschrieben: Do 9. Apr 2026, 14:46 Wenn ich hier Neuling wäre, wüsste ich nicht, wie man herausbekommt, wer ein Moderator ist.
Oben links auf der Starseite im Schnellzugriffsmenü den Punkt "Mitglieder" auswählen, Danach ""Nach einem Mitglied suchen" wählen. Dort die Gruppe "Globale Moderatoren" wählen und die Suche starten.

Das Ergebnis lautet zur Zeit: monta, Lori, theo, m.fuchs und kralle.

Antworten