AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken KbmMemTable Problem, Lookup Felder bleiben leer
Thema durchsuchen
Ansicht
Themen-Optionen

KbmMemTable Problem, Lookup Felder bleiben leer

Ein Thema von BlackGuest · begonnen am 21. Jan 2016 · letzter Beitrag vom 11. Feb 2016
Antwort Antwort
Seite 2 von 2     12   
nahpets
(Gast)

n/a Beiträge
 
#11

AW: KbmMemTable Problem, Lookup Felder bleiben leer

  Alt 10. Feb 2016, 14:19
Irgendwie scheinen da doch ein paar Bugs drin zu sein.
Definitiv ja, beim Öffnen und Schließen der Tabellen über den Objektinspektor werden zuweilen die Felddefinitionen zerschossen.
Man sollte die Tabellen in der IDE vor dem Kompilieren auf jeden Fall schließen und erst zur Laufzeit (FormCreate....) öffnen und beim Programmende (FromClose...) schließen.

Nach ewigem herumprobieren habe ich herausgefunden wo bei mir das Problem lag.

Ich habe mehrere KbmMemTables auf einer Form. Die habe ich alle geöffnet, also activ auf true und dann die Daten per LoadFromFile eingelesen. Ergebnis: Die Lookupfelder bleiben leer.

Lade ich die Daten für jede Tabelle sofort nach dem Öffnen, dann funktionierts. Erkläre mir mal einer warum...
Das ist doppeltgemoppelt. Mit Active := True wird die Tabelle geöffnet und die Daten geladen. Die bereits geladenen Daten werden mit LoadFromFile nochmals geladen.
Während bei Active := True aber (allem Anschein nach) die Abhängigkeiten zu den Lookup-Feldern berücksichtigt werden, scheint das bei LoadFromFile nicht der Fall zu sein.

Was mir noch aufgefallen ist, setze ich sfSaveDef und sfLoadDef auf true, dann bekomme ich bei einigen Tabellen beim Laden die Meldung, das die Felddefinitionen falsch sind. Kann aber nach mehrmaliger Kontrolle keinen Fehler finden.
Da scheint es auch irgendwo einen Bug zu geben.
Habe mir angewöhnt, die KBMTabels immer als CSV zu speichern.
Nur erstmalig zum Erstellen der Tabellen mache ich im Objektinspektor die Feld- und Indexdefinitionen und lasse beim ersten Programmstart die Tabellen erstellen und als Dateien speichern.
Danach wird in der IDE nichts mehr an den Tabellen geändert, die Felddefinitionen werden auch nichtmehr extra gespeichert...
Sind Änderungen an der Tabellendefinition nötig oder wird ein zusätzlicher Index gebraucht, so ändere ich die CSV-Dateien. Die Struktur des Tabellenkopfes ist so, dass man die Definitionen problemlos lesen und verstehen kann, eine händische Änderung ist auch problemlos möglich.

Mit den IndexDefs scheint es auch ein paar Probleme zu geben, die man aber umgehen kann, wenn man direkt IndexFieldNames verwendet.
Auch da hakt es ab und an, wobei ich noch nicht herausgefunden habe, in welcher Situation man was wie nutzen muss. Habe da aber auch noch nicht viel Zeit investiert.
  Mit Zitat antworten Zitat
BlackGuest

Registriert seit: 30. Jan 2009
52 Beiträge
 
Delphi XE7 Professional
 
#12

AW: KbmMemTable Problem, Lookup Felder bleiben leer

  Alt 10. Feb 2016, 15:17
Das ist doppeltgemoppelt. Mit Active := True wird die Tabelle geöffnet und die Daten geladen. Die bereits geladenen Daten werden mit LoadFromFile nochmals geladen.
Nein, ist es nicht. Die Tabellen sind nicht als persistent deklariert. Das hat den Vorteil, das ich die Strukturen ändern kann und nicht versucht wird die dann natürlich nicht dazu passenden Daten zu laden, wenn ich active auf true setze.
  Mit Zitat antworten Zitat
BlackGuest

Registriert seit: 30. Jan 2009
52 Beiträge
 
Delphi XE7 Professional
 
#13

AW: KbmMemTable Problem, Lookup Felder bleiben leer

  Alt 11. Feb 2016, 10:33
Das mit dem zerschießen der Felddefinitionen habe ich vor allem beobachtet, als sfSaveDef und sfLoadDef auf true war. Dann scheint er alles zu überschreiben, wenn man die tabelle öffnet und in dieser was aneres drin steht.

Jetzt habe ich ein anderes Problem, wie bewege ich die KbmMemTable dazu die Lookup Felder zu aktualisieren?
Beim ClientDataset habe ich mir damit beholfen, das ich die Table kurz geschlossen und dann wieder geöffnet habe. Funktioniert hier nicht, dabei werden alle Daten gelöscht.

Gruß
Steffen

EDIT:

Dachte ich hatte was gefunden. Bei einer tabelle funktioniert jetzt ein automatischer Refresh, bei einer anderen nicht. ?

Geändert von BlackGuest (11. Feb 2016 um 11:51 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 13:00 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