AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

dBase mit BDE

Ein Thema von HannsW · begonnen am 6. Jan 2010 · letzter Beitrag vom 8. Jan 2010
Antwort Antwort
HannsW

Registriert seit: 6. Jan 2010
26 Beiträge
 
#1

dBase mit BDE

  Alt 6. Jan 2010, 16:38
Datenbank: dbase • Version: III • Zugriff über: BDE/ODBC
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
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.104 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: dBase mit BDE

  Alt 6. Jan 2010, 18:11
Hallo,

TDBF ist doch im Quellcode.
OKOK

Trotzdem ist es ein ziemlicher Aufwand.
Folgendes sollte dir weiterhelfen.

1

Suche dort nach
Showing deleted record in a DBF file
und gleich darunter
Recalling deleted records in DBF files


Heiko
Heiko
  Mit Zitat antworten Zitat
HannsW

Registriert seit: 6. Jan 2010
26 Beiträge
 
#3

Re: dBase mit BDE

  Alt 7. Jan 2010, 01:25
Zitat von hoika:
Showing deleted record in a DBF file

Heiko
Moin Heiko,
danke für den Tipp, den ich gleich versuchte. allerdings erhalte ich beim debuggen der proc
in dieser Zeile
   Check(DbiSetProp(hDBIObj(Table.Handle), curSOFTDELETEON, LongInt(ShowDeleted))); die Meldung, daß
Zitat:
Merkmal nicht vorhanden
.
Hast Du auch dafür ne Lösung?
Hanns
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.104 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: dBase mit BDE

  Alt 7. Jan 2010, 06:35
Hallo,

laut dieser Seite sollte es aber gehen.
1

Hier noch eine BDEUtils Unit
2

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
3


Und zum Schluss Quellcode zum Auslesen IsDeleted
5

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
Heiko
  Mit Zitat antworten Zitat
HannsW

Registriert seit: 6. Jan 2010
26 Beiträge
 
#5

Re: dBase mit BDE

  Alt 7. Jan 2010, 19:37
Zitat von hoika:
Hallo,


Und ein betagter Artikel von Andreas Kosch persönlich

Heiko
Ne ´kleine Korrektur. bezgl Dbase: Ich habe dBase IV als db.

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
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.104 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: dBase mit BDE

  Alt 8. Jan 2010, 06:32
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
Heiko
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#7

Re: dBase mit BDE

  Alt 8. Jan 2010, 10:02
Zitat von hoika:
Keine "normale" DB erlaubt es, einmal Deletes wieder zurückzunehmen,
wenn ein Commit (Transaktion abschließen) gemacht wurde.
Hallo,

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
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.104 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: dBase mit BDE

  Alt 8. Jan 2010, 10:44
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
Heiko
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 06:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf