[gelöst]Anfängerfragen zur Verwendung von tiOPF (Relationen)

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Anfängerfragen zur Verwendung von tiOPF (Relationen)

Beitrag von MacWomble »

Ich habe zum Test diese Zeilen in der obigen Funktion ausgeklammert.

Code: Alles auswählen

  if not _IsPublishedProp(AAttrName) then
    raise Exception.Create(
      AAttrName + ' is not a published property on ' +
      PerObjAbsClass.ClassName + tiLineEnd +
      '. Called in ' + ClassName + '.AddAttrMap');


Das Programm läuft dann zwar, jedoch werden die Daten aus Business nicht angezeigt. :(

Ansonsten habe ich verzweifelt in der Newsgroup gesucht und auch gefragt, aber leider bisher erfolglos.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6208
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: Anfängerfragen zur Verwendung von tiOPF (Relationen)

Beitrag von af0815 »

Hast du einen Durchlauf probiert und das Log aktiv gehabt ? Was steht da vom Ablauf her drinnen ?

Andi
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Anfängerfragen zur Verwendung von tiOPF (Relationen)

Beitrag von MacWomble »

Keine Ahnung wie das mit dem Log geht :oops:
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6208
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: Anfängerfragen zur Verwendung von tiOPF (Relationen)

Beitrag von af0815 »

Das mit dem Log habe ich etliche Posts vorher schon geschrieben. http://www.lazarusforum.de/viewtopic.php?p=93525#p93525 Wenn du deine Test.lpr entsprechend änderst erscheint automatisch ein test.log Datei. Nachdem ich jetzt mal deine Daten auf SQLite umgeschrieben habe, kann ich mir ein wenig mehr ansehen.

Andreas

Code: Alles auswählen

2017-03-13 20:53:40 5876 Norm  Starting
2017-03-13 20:53:40 5876 Debug Persistence layer: "CSV" loaded, but not connected to a database.
                               Persistence layer: "Sqldb_IB" loaded, but not connected to a database.
                               Persistence layer: "TAB" loaded, but not connected to a database.
                               Persistence layer: "XMLLight" loaded, but not connected to a database.
                               Persistence layer: "Sqldb_SQLite3" loaded, but not connected to a database.
2017-03-13 20:53:40 5876 DBCon Creating database connection pool for .\dump\CTRNEUDB.sq3/root
2017-03-13 20:53:40 5876 DBCon Attempting to add pooled item #0
2017-03-13 20:53:40 5876 DBCon Pooled item #-1 added.
2017-03-13 20:53:40 5876 DBCon Attempting to connect to: .\dump\CTRNEUDB.sq3 Params:
2017-03-13 20:53:40 5876 DBCon Connect to .\dump\CTRNEUDB.sq3 successful.
2017-03-13 20:53:40 5876 DBCon A new PooledItem has been added to the pool.
2017-03-13 20:53:40 5876 DBCon PooledItem #1 locked.
2017-03-13 20:53:40 5876 Debug Registering composite mediator TtiListViewMediatorView with subject TtiObjectList
2017-03-13 20:53:40 5876 Debug Registering composite mediator TtiStringGridMediatorView with subject TtiObjectList
2017-03-13 20:53:40 5876 Debug Registering composite mediator TtiListBoxListMediatorView with subject TtiObjectList
2017-03-13 20:53:40 5876 Debug Registering mediator TtiEditMediatorView with subject TtiObject
2017-03-13 20:53:40 5876 Debug Registering mediator TtiCheckBoxMediatorView with subject TtiObject
2017-03-13 20:53:40 5876 Debug Registering mediator TtiComboBoxMediatorView with subject TtiObject
2017-03-13 20:53:40 5876 Debug Registering mediator TtiComboBoxItemMediatorView with subject TtiObject
2017-03-13 20:53:40 5876 Debug Registering mediator TtiDynamicComboBoxMediatorView with subject TtiObject
2017-03-13 20:53:40 5876 Debug Registering mediator TtiStaticTextMediatorView with subject TtiObject
2017-03-13 20:53:40 5876 Debug Registering mediator TtiTrackBarMediatorView with subject TtiObject
2017-03-13 20:53:40 5876 Debug Registering mediator TtiMemoMediatorView with subject TtiObject
2017-03-13 20:53:40 5876 Debug Registering mediator TtiSpinEditMediatorView with subject TtiObject
2017-03-13 20:53:40 5876 Debug Registering mediator TtiDateEditMediatorView with subject TtiObject
2017-03-13 20:53:40 5876 Debug Registering mediator TtiLabeledEditMediatorView with subject TtiObject
2017-03-13 20:53:40 5876 Vis   About to process visitors for <LoadBaseContactTitleList>
2017-03-13 20:53:40 5876 DBCon Found an available item (#0) in pool and locked it.
2017-03-13 20:53:40 5876 SQL   TtiDatabaseSQLDBSQLite3: [Start Trans]
2017-03-13 20:53:40 5876 AVis  TBaseContactTitleList_Read, TContactTitles, posEmpty, T
2017-03-13 20:53:40 5876 AVis  TBaseContactTitleList_Read, TContactTitles, posEmpty, T
2017-03-13 20:53:40 5876 SQL   TtiQuerySQLDB: SELECT OID, TitleType, Title, SearchTitle FROM ctr_ContactTitle ;
2017-03-13 20:53:40 5876 Query TBaseContactTitleLis 0      0     
2017-03-13 20:53:40 5876 AVis  TBaseContactTitleList_Read, TBaseContactTitle, posClean, F
2017-03-13 20:53:40 5876 AVis  TBaseContactTitleList_Read, TBaseContactTitle, posClean, F
2017-03-13 20:53:40 5876 SQL   TtiDatabaseSQLDBSQLite3: [Commit Trans]
2017-03-13 20:53:40 5876 Vis   Finished process visitors for <LoadBaseContactTitleList>
2017-03-13 20:53:40 5876 Vis   About to process visitors for <LoadBaseBusinessList>
2017-03-13 20:53:40 5876 DBCon Found an available item (#0) in pool and locked it.
2017-03-13 20:53:40 5876 SQL   TtiDatabaseSQLDBSQLite3: [Start Trans]
2017-03-13 20:53:40 5876 AVis  TBaseBusinessList_Read, TBusinesses, posEmpty, T
2017-03-13 20:53:40 5876 AVis  TBaseBusinessList_Read, TBusinesses, posEmpty, T
 
Dateianhänge
CTR-TEST.zip
CTR-Test geändert auf SQLite3
(25 KiB) 78-mal heruntergeladen
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Anfängerfragen zur Verwendung von tiOPF (Relationen)

Beitrag von MacWomble »

Danke, zu blöd dass ich das mit dem log übersehen habe - ist ja auch so unauffällig :oops:

Ich habs bei mir jetzt eingebaut. Es wird KEIN log erzeugt, wenn ich die Zeilen in tiAutoMap aktiv lasse.

Wenn ich sie Remarke erhalte ich

2017-03-13 21:59:07 2873 Norm Starting
2017-03-13 21:59:07 2873 Debug Persistence layer: "CSV" loaded, but not connected to a database.
Persistence layer: "Sqldb_IB" loaded, but not connected to a database.
Persistence layer: "TAB" loaded, but not connected to a database.
Persistence layer: "XMLLight" loaded, but not connected to a database.
Persistence layer: "Zeos_MySQL50" loaded, but not connected to a database.
2017-03-13 21:59:07 2873 DBCon Creating database connection pool for CTR-NEU/root
2017-03-13 21:59:07 2873 DBCon Attempting to add pooled item #0
2017-03-13 21:59:07 2873 DBCon Pooled item #-1 added.
2017-03-13 21:59:07 2873 DBCon Attempting to connect to: CTR-NEU Params: Hostname=localhost
2017-03-13 21:59:07 2873 DBCon Connect to CTR-NEU successful.
2017-03-13 21:59:07 2873 DBCon A new PooledItem has been added to the pool.
2017-03-13 21:59:07 2873 DBCon PooledItem #1 locked.
2017-03-13 21:59:07 2873 Debug Registering composite mediator TtiListViewMediatorView with subject TtiObjectList
2017-03-13 21:59:07 2873 Debug Registering composite mediator TtiStringGridMediatorView with subject TtiObjectList
2017-03-13 21:59:07 2873 Debug Registering composite mediator TtiListBoxListMediatorView with subject TtiObjectList
2017-03-13 21:59:07 2873 Debug Registering mediator TtiEditMediatorView with subject TtiObject
2017-03-13 21:59:07 2873 Debug Registering mediator TtiCheckBoxMediatorView with subject TtiObject
2017-03-13 21:59:07 2873 Debug Registering mediator TtiComboBoxMediatorView with subject TtiObject
2017-03-13 21:59:07 2873 Debug Registering mediator TtiComboBoxItemMediatorView with subject TtiObject
2017-03-13 21:59:07 2873 Debug Registering mediator TtiDynamicComboBoxMediatorView with subject TtiObject
2017-03-13 21:59:07 2873 Debug Registering mediator TtiStaticTextMediatorView with subject TtiObject
2017-03-13 21:59:07 2873 Debug Registering mediator TtiTrackBarMediatorView with subject TtiObject
2017-03-13 21:59:07 2873 Debug Registering mediator TtiMemoMediatorView with subject TtiObject
2017-03-13 21:59:07 2873 Debug Registering mediator TtiSpinEditMediatorView with subject TtiObject
2017-03-13 21:59:07 2873 Debug Registering mediator TtiDateEditMediatorView with subject TtiObject
2017-03-13 21:59:07 2873 Debug Registering mediator TtiLabeledEditMediatorView with subject TtiObject
2017-03-13 21:59:07 2873 Vis About to process visitors for <LoadBaseContactTitleList>
2017-03-13 21:59:07 2873 DBCon Found an available item (#0) in pool and locked it.
2017-03-13 21:59:07 2873 AVis TBaseContactTitleList_Read, TContacts, posEmpty, T
2017-03-13 21:59:07 2873 AVis TBaseContactTitleList_Read, TContacts, posEmpty, T
2017-03-13 21:59:07 2873 SQL TtiQueryZeos: SELECT OID, TitleType, Title, SearchTitle FROM ctr_ContactTitle ;
2017-03-13 21:59:07 2873 Query TBaseContactTitleLis 2 0
2017-03-13 21:59:07 2873 AVis TBaseContactTitleList_Read, TBaseContactTitle, posClean, F
2017-03-13 21:59:07 2873 AVis TBaseContactTitleList_Read, TBaseContactTitle, posClean, F
2017-03-13 21:59:07 2873 Vis Finished process visitors for <LoadBaseContactTitleList>

Edit: Ich habe allerdings einiges umgebaut - ich muss das nochmal auf den Stand zurück portieren, den du auch hast.
Ich denke, ich verwende auch erst mal die SQLite, dann ist das einfacher zum Austauschen.

Ich habe auch mit deinen geänderten Quellen gespielt, bekomme es aber nicht richtig zum laufen, weil er die Tabelle nicht findet - Experimentiere noch weiter.
Läuft es denn bei dir?


Gruß Klaus
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6208
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: Anfängerfragen zur Verwendung von tiOPF (Relationen)

Beitrag von af0815 »

wenn es zu exception in der Initialiation kommt gibt es kein Log. Ich muss mir das mit dem Log und dem was du willst erst genauer ansehen. Jetzt habe ich die DB mal am laufen. Jetzt kann ich dann tiefer gehen. Mal sehen.

Ev. können wir das Projekt auf Github legen. Dann können wir leichter Infos tauschen.

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Anfängerfragen zur Verwendung von tiOPF (Relationen)

Beitrag von MacWomble »

Das mit Github können wir gerne machen, kenne ich mich aber auch nicht aus da noch nie benötigt.

Ich habe deine Version nun soweit hier eingerichtet, dass sie läuft, aber noch eine Exception wirft.
Exception in tiSqlParser.pas Error 216 in Zeile 205 (: FSQLResult := FSQLResult + lColAttr.DBColMap.ColName;

Gruß Klaus
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Anfängerfragen zur Verwendung von tiOPF (Relationen)

Beitrag von MacWomble »

Ich habe glaube ich das Hauptproblem gefunden.
Gestern habe ich das nochmals mit dem OneToMany-Demo verglichen und dort sind einige Sachen in der BOM, die automatisch nicht generiert werden (können).
Unter anderem das Setzen der jeweiligen Owner.
Im Mapping wird dort übrigens Owner.OID ohne '.asString' übergeben und das funktioniert dort (habe es auf Automapping umgestellt in der lpr).

Anm:
Ich hatte das bisher nirgends gelesen, dass man in der lpr Einstellungen machen kann - eher im Gegenteil (Nie manuell ändern).
Deswegen wusste ich das mit dem Log auch nicht, was aber wirklich sehr hilfreich ist.

Die zunächst zu lösende Aufgabe ist, die Klassen aus der autom. generierten BOM in einer andern Unit (model) abzuleiten.
Da die Klassen verschachtelt sind, muss man aufpassen, dass die List-Klassen nicht auf die Items der Basisklassen zugreifen.
Danach müsste man in den abgeleiteten Klassen die fehlenden Properties, Proceduren und Funktionen einbinden.

Im übrigen beschreibt dies genau das tiOPF-Problem: Man soll mit der xml anfangen und alles aus dem generierten BOM ableiten, was man braucht.
Genau hierfür gibt es aber nicht eine Demo, was dann zu diesem Verständnis-Wirrwar führt.

Ich hatte das in meinem Programm in der contactmodel.pas versucht umzusetzen, was aber nicht richtig funktionierte.
Die abgeleitete Liste hatte die Items aus dem BOM statt aus der abgeleiteten Klasse.

Für mein Verständnis dürfte nur und ausschließlich die contactmodel.pas auf die contact_bom.pas zugreifen.

Die contactmanager.pas und contactdisplay.pas leiten dann weiter aus der contactmodel.pas und nicht aus der contact_bom.pas ab.
Alle anderen Programmteile dürfen nur auf diese drei Dateien zugreifen,

Bitte um Korrektur, falls meine Annahmen falsch sind.

Gruß Klaus
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6208
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: [gelöst]Anfängerfragen zur Verwendung von tiOPF (Relatio

Beitrag von af0815 »

Nebenbei:

Wenn man ein dataset am Formular hat, mal rechte Maustaste drücken und dort Data Dictonary auswählen. Dann Create Data from dataset auswählen und siehe da es kann auch tiOPF-Code erzeugt werden. :-)

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: [gelöst]Anfängerfragen zur Verwendung von tiOPF (Relatio

Beitrag von MacWomble »

Der erzeugte Code des dataDictionary ist mit Vorsicht zu genießen:

Er baut auf eine sehr alte Version von tiOPF auf und bietet nur sehr rudimentären Code im Vergleich zu tiMap! Vieles muss noch händisch angepasst werden.
Dies ist nicht zwangsläufig schlecht, nur sollte man dies wissen.

Im übrigen geht das auch ohne Dataset, indem man das DataDictionary startet und dort eine SQL-Abfrage erstellt.

Gruß Klaus
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6208
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: [gelöst]Anfängerfragen zur Verwendung von tiOPF (Relatio

Beitrag von af0815 »

Es war nur interessant für mich, das es noch immer in Lazarus verankert ist. Es muss also schon mal bessere Zeiten für tiOPF gegeben haben.

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten