![]() |
Datenbank: dbase • Version: III • Zugriff über: BDE/ODBC
dBase mit BDE
Hallo Forum,
wie kann ich ( Delphi5, BDE ) feststellen, ob ein Datensatz als gelöscht markiert ist? Ich habe hier im Forum einen Hinweis auf TDBF gefunden, welches ein boolean isDeleted() liefert, ich fürchte aber, daß die Umstellung der fast fertigen Anwednung zu zeitaufendig wäre. Bisher habe ich FieldByName() mit unterschiedlichen Parametern versucht:: kein Erfolg! Danke für jeden Hinweis Hanns |
Re: dBase mit BDE
Hallo,
TDBF ist doch im Quellcode. OKOK ;) Trotzdem ist es ein ziemlicher Aufwand. Folgendes sollte dir weiterhelfen. ![]() Suche dort nach Showing deleted record in a DBF file und gleich darunter Recalling deleted records in DBF files Heiko |
Re: dBase mit BDE
Zitat:
danke für den Tipp, den ich gleich versuchte. allerdings erhalte ich beim debuggen der proc in dieser Zeile
Delphi-Quellcode:
die Meldung, daß
Check(DbiSetProp(hDBIObj(Table.Handle), curSOFTDELETEON, LongInt(ShowDeleted)));
Zitat:
Hast Du auch dafür ne Lösung? Hanns |
Re: dBase mit BDE
Hallo,
laut dieser Seite sollte es aber gehen. ![]() Hier noch eine BDEUtils Unit ![]() Daraus habe ich die hier (interessant ist DbiValidateProp):
Delphi-Quellcode:
procedure DataSetShowDeleted(DataSet: TBDEDataSet; Show: Boolean);
begin with DataSet do begin CheckBrowseMode; Check(DbiValidateProp(hDBIObj(Handle), curSOFTDELETEON, True)); DisableControls; try Check(DbiSetProp(hDBIObj(Handle), curSOFTDELETEON, Ord(Show))); finally EnableControls; end; if DataSet is TTable then TTable(DataSet).Refresh else begin CursorPosChanged; First; end; end; end; Und ein betagter Artikel von Andreas Kosch persönlich ![]() Und zum Schluss Quellcode zum Auslesen IsDeleted ![]() Suche nach curSOFTDELETEON 2 Gründe fallen mir noch ein. 1. Tabelle muss geöffnet sein (sonst gibt es ja kein Handle) 2. falsche DBase-Version (das Softdelete gab es erst ab der 4er *geraten* ) ja, ich weiss, dass du die 5er angezeigt hast Ansonsten google "curSOFTDELETEON" Heiko |
Re: dBase mit BDE
Zitat:
Mit A.Koschs Informationen bin ich am weitesten gekommen Jedoch bekam ich für alle Datensätze je nach Radiobutton entweder ein Deleted, oder nicht. Ich habe mir daraufhin nochmals meine ODBC-Verwaltung angesehen, und festgestellt. man kann dort einen SChalter "gelöschte DS anzeigen" zurücknehmen. Das habe ich getan, und mein derzeitges Problem ist gelöst. Nicht aber der Wissensdurst, warum die anderen Versuch nicht klappten. Doch das muss erst einmal zurückstehen. Danke für Dein umfangreiche Hilfestellung. MfG aus Nörten Hanns |
Re: dBase mit BDE
Hallo,
kein Problem, hatte früher mit DBase/Paradox arbeiten müssen. Um in die Zukunft zu schauen, solltest du von solchen DB-spezifischen Sachen eh die Finger lassen. Keine "normale" DB erlaubt es, einmal Deletes wieder zurückzunehmen, wenn ein Commit (Transaktion abschließen) gemacht wurde. Und damit nicht gleich wieder Einsprüche kommen ... ;) Ja, das hat mit DBase nix zu tun. Heiko |
Re: dBase mit BDE
Zitat:
das muss man aber nicht unbedingt als positive Eigenschaft sehen - stell dir vor, was die User sagen würden, wenn unter Windows der Papierkorb gestrichen würde. Gruss Reinhard |
Re: dBase mit BDE
Hallo,
ich meinte das anders. Benutzt die App die DBase-SoftDeletes ganz gezielt aus, wird ein Umstieg auf eine "richtige" Datenbank (jaja, musste sein ;) ) sehr schwierig. SoftDeletes wurden wohl damals eingeführt, weil im Mehrbenutzerbetrieb das "richtige Löschen" zu schwierig zu Implementieren war. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz