| |
|
|
| Hallo,
gibt es eine Möglichkeit, die Anzeige gelöschter Sätze zu unterbinden? |
|
|
| |
|
|
|
| Hallo H.
Was genau meinst du? Satz = Spalte ? Möchtest du eine komplette Spalte löschen / ausblenden ? Das geht mit DeleteColumn(listview&,spaltenindex&). Wenn du nicht die Datei Listview_Funktionen.inc einbindest, dann kannst du die System-Message LVM_DELETECOLUMN verwenden. Meinst du das ?
Gruß, Frank |
|
|
| |
|
|
|
| Hallo Frank,
war gestern abend etwas in Eile und habe mich dadurch etwas mißverständlich ausgedrückt.
Es geht darum, wenn sich in der dBase-Datei ein bereits gelöschter Satz befindet, wird der trotzdem in der Listview angezeigt, das möchte ich gerne vermeiden.
Wenn wir gerade dabei sind, ist es möglich, eine Spalte in der Listview unsichtbar zu halten und man trotzdem darauf zugreifen kann.
Nach @deletecolumn ist die Spalte ja gelöscht und man kann sie nicht mehr einlesen. Ich habe in der Datenbank ein Feld mit einer fortlaufender Nummer, so daß ich nach einer Auswahl z.B. zum Löschen schnell und eindeutig auf den Satz zugreifen kann. Ich möchte aber, wenn möglich, diese Nr. bei ShowListview() nicht anzeigen.
Gruß Helmut |
|
|
| |
|
|
|
| Hallo Helmut.
> Nach @deletecolumn ist die Spalte ja gelöscht und man kann > sie nicht mehr einlesen. Ich habe in der Datenbank ein Feld > mit einer fortlaufender Nummer, so daß ich nach einer > Auswahl z.B. zum Löschen schnell und eindeutig auf den Satz > zugreifen kann. Ich möchte aber, wenn möglich, diese Nr. > bei ShowListview() nicht anzeigen.
Das geht einfach. Du setzt die Breite dieser Spalte einfach auf 0. Dann ist sie ganz normal vorhanden, der User kann sie aber nicht sehen. Und du kannst sie sehr einfach wieder anzeigen, indem du die Breite einfach wieder vergrösserst:
SetColumnWidth(listview&,spaltenindex&,breite_in_pixel&)
Der Nachteil: Der User könnte die Spalte manuell mit der Maus wieder verbreitern... Aber auch das kann leicht verhindert werden, wie du im Beispiel Gebührenverwaltung_Stammtisch.prf testen kannst. Versuch mal die Spaltenbreite zu verändern...
Gruß, Frank |
|
|
| |
|
|
|
| Hallo Frank,
vielen Dank, gute Idee, die Spalte auf 0 setzen.
Muß trotzdem nochmals nerven, was kann ich mit den gelöschten Sätze in der dBase-Datenbank machen.
Gruß
Helmut |
|
|
| |
|
|
|
| Hi,
gibt es in einer Datenbank ein Flag das kennzeichnet, das dieser Satz / Spalte (?) nicht mehr benutzt wird ? Würdest du mir so eine dbf-Datei zuschicken ? Oder kennst du die Position des Flags.
Gruß, Frank |
|
|
| |
|
|
|
| Hi nochmal,
hab das Deleted Flag gefunden. Laut Referenz dürften hier nur die Werte $20 oder $2a stehen, hab aber schon Datenfiles gesehen, in denen hier andere Werte standen. Wenn du mir also trotzdem noch eine kurze Datenbank mit teils gelöschten Sätzen zuschickst, könnte ich das Ganze besser testen. Ein als gelöscht gekennzeichnetes Datenfeld soll im Listview also leer bleiben, richtig? An der Stelle würde dann ein leerer Itemtext stehen.
Gruß, Frank |
|
|
| |
|
|
|
| Nur ein Tipp aus der Praxis: Da ich beruflich viel mit SQL-Datenbanken zu tun habe, ist es absolut wichtig das Datensätze NIEMALS gelöscht werden. Auch dann nicht, wenn sie gar nicht mehr benötigt werden. Deswegen hat jede Tabelle ein True/False Feld, das ich immer Anzeigen nenne. Wenn Anzeigen=0 dann wird diese einfach nicht angezeigt. Und nach einem benutzerdifinierten Zeitraum werden die einfach in einer Backup-Datei ausgelagert damit die Datenbank nicht alzugroß wird. Dann kannst Du Dir auch das mit dem Löschflag sparen. |
|
|
| |
|
|
|
| Hallo Marc,
grundsätzlich ist deine Aussage richtig, aber genau passiert doch hier.
Wenn ich mit Profan @dbDelete() einen Datensatz lösche, ist er noch immer physisch vorhanden. Ich kann immer noch auf ihn zugreifen %dbDeleted und kann, wenn ich will, die Löschung wieder aufheben @dbUndelete(). Erst wenn ich die Datei komprimiere @dbPack(), ist der Satz endgültig weg.
Es ist jedoch programmtechnisch bei der Listview am einfachsten, wenn der Satz überhaupt nicht mehr eingelesen wird. Der User soll ihn ja nicht mehr sehen, weil er ja gelöscht ist. |
|
|
| |
|
|
|
| Hallo, Ich finde aber, man sollte es dem Nutzer überlassen, ob er einen Satz wirklich löschen möchte, oder nicht. Sonst wäre die Dll ja quasi ein dbf-Komprimierungstool und keine Datenbankveraltung. Vielleicht kann man über einen separaten Bereich auf die als gelöscht markierten Daten zugreifen und sie bei Bedarf dort auslesen. Vielleicht DbfDeletedToCSV(...)... Gruß Jörg |
|
|
| |
|
|
|
| Hallo,
es ist jetzt eingebaut, das gelöschte Sätze nicht angezeigt werden. Aber ich werde gerne ein Flag einbauen, um dieses Verhalten auszuschalten. Was haltet ihr davon ?
Gruß, Frank |
|
|
| |
|
|