Deutsch
Bugs und vermeintliche

$dbLUpdate zeigt Erstellungsdatum, nicht Update der DB

 

E.T.
Eben drauf gestoßen:
$dbLUpdate  zeigt das Erstellungs-Datum der DB an, nicht das letzte Update - Datum.



Im Hintergrund die Angaben vom Explorer (stimmen exakt mit der letzten Aktualisierung der DB überein), im Vordergrund die Ausgabe vonXProfan (4 Beta, aber auch mit 3 und 11 so, im Bild im Interpreter, aber auch in in der fertigen Exe das gleiche).
Window 1000,1000
db("Open", #1,"SinusOrg.DBF")
db("Use", #1)
Print "db-Struktur von SinusOrg.DBF"
Print
Print "Datensätze:      ";&dbRecCount
Print "Felder:          ";%dbFCount
Print "Satzgröße:       ";%dbRecSize;" Byte"
Print "Headergröße:     ";%dbHeader;" Byte"
Print "Letzte Änderung: ";$dbLUpdate,"-",GetFTime$("SinusOrg.DBF")
waitinput
End

GetFTime$("SinusOrg.DBF")  zeigt die korrekte Änderungs-Zeit der DB an.
Datenbank war nicht in einem anderen Programm geöffnet, war eine Kopie der DB von meinem Wetter-Rechner

43 kB
Hochgeladen:07.09.2017
Ladeanzahl0
Herunterladen
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
07.09.2017  
 




E.T.
... ach ja: falls jemand unbedingt mit der getesteten .dbf-Datei versuchen möchte: bitteschön, nix geheimes dranne

Herunterladen

461 kB
Hochgeladen:07.09.2017
Ladeanzahl1
Herunterladen
 
XProfan X3
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
07.09.2017  
 




Michael
W.
Ich habe es mal ein wenig erweitert um evtl. Fehlern auf die Spur zu kommen:
'cls
Window 1000,1000
Declare pfad$,e&
pfad$ = "C:\\Users\\micha_000\\Downloads\\XProfan\\E.T\\"
e& = %IOResult : print e&
db("Open", #1,"SinusOrg.DBF")
e& = %IOResult : print e&
db("Use", #1)
e& = %IOResult : print e&
Print "db-Struktur von SinusOrg.DBF"
Print
Print "Datensätze:      ";&dbRecCount
Print "Felder:          ";%dbFCount
Print "Satzgröße:       ";%dbRecSize;" Byte"
Print "Headergröße:     ";%dbHeader;" Byte"
e& = %IOResult : print e&
Print "Letzte Änderung: ";$dbLUpdate," - ",GetFDate$("SinusOrg.DBF"),GetFTime$("SinusOrg.DBF")
e& = %IOResult : print e&
Print "Letzte Änderung: ";$dbLUpdate4," - ",GetFDate$("SinusOrg.DBF"),GetFTime$("SinusOrg.DBF")
e& = %IOResult : print e&
db("Close", #1)
waitkey
End

1. Du hast db("close",#1) vergessen.
2. nur mit GetFTime$() ist nicht unbedingt eine Änderung erkennbar.
3. man sollte $dbLUpdate4 verwenden
4. im Code wird ja auch nichts geändert

Ich habe einfach den Helfer "Tabellen bearbeiten" genutzt um einen der Werte zu ändern. Dann habe ich erneut das Programm aufgerufen und das Datum hat korrekt die letzte Änderung angezeigt.

Oder habe ich etwas übersehen?

P.S.:
Den Pfad habe ich wieder abgeklemmt und die Datei direkt ins aktuelle Verzeichnis gelegt.

Nett, das Du die *.DBF gleich beigefügt hast, so ist testen ein Klacks.
 
System: Windows 8/10, XProfan X4
Programmieren, das spannendste Detektivspiel der Welt.
11.09.2017  
 




E.T.
Michael W. (11.09.2017)
1. Du hast db("close",#1) vergessen.

passiert beim kopieren, im Programm hab ich's

Michael W. (11.09.2017)
2. nur mit GetFTime$() ist nicht unbedingt eine Änderung erkennbar.

War nur zum testen, es wird ja auch die richtige Zeit der letzten Änderung angezeigt. GetFDate$  zeigt ja auch das wirkliche Datum der letzten Änderung

Michael W. (11.09.2017)
3. man sollte $dbLUpdate4 verwenden

zeigt aber auch das Erstellungs-Datum der Datei an

Michael W. (11.09.2017)
4. im Code wird ja auch nichts geändert

Richtig, soll ja auch von meinem Programm auf gar keinen Fall gemacht werden. Die Datenbank wird in reglm. Abständen von einem ext. Programm aktualisiert, ich möchte nur schauen, ob etwas geändert ist und darauf reagieren mit meinem Programm (auslesen).

Michael W. (11.09.2017)
Ich habe einfach den Helfer "Tabellen bearbeiten" genutzt um einen der Werte zu ändern. Dann habe ich erneut das Programm aufgerufen und das Datum hat korrekt die letzte Änderung angezeigt.

Genau das darf ich nicht, siehe zuvor.

Michael W. (11.09.2017)
Oder habe ich etwas übersehen?

Hm, wohl das $dbLUpdate bzw. $dbLUpdate4  nur bedingt das richtige Update-Datum anzeigen. Ich denke, der Hund liegt darin begraben, wie welches Programm die Datei aktualisiert, scheind es doch Unterschiede zu geben.

Michael W. (11.09.2017)
Nett, das Du die *.DBF gleich beigefügt hast, so ist testen ein Klacks.

 
XProfan X3
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
11.09.2017  
 




Michael
W.
Auch ich habe irgendwo noch ein Uralt-Turbopascal-Programm, das dieses dBase-Format aufbaut und die Daten anfügt.

Anscheinend ist nicht jeder so sorgsam beim recherchieren des Formates. Wenn Dein externes Programm nur beim Erstellen das Datum schreibt ist das vom Programmierer vergeigt worden.

Da ist dann die Frage wie die Datenbank erweitert wird. Ich nehme an, die ist und bleibt ohne *.IDX. Dann sollte es einfach sein, denn dann wird einfach nur erweitert.

Nutze also den Rückgabewert von db("Open",...
Den in einer INI-Datei merken und Du weißt beim Öffnen der Datei
ob tatsächlich etwas hinzugefügt wurde - und wieviel.

P.S.:
Also: Bug ja, aber nicht von XProfan...

Mit den Entwicklern der Wetterstation Kontakt aufnehmen und Ihnen ein besseres Programm anbieten.
 
System: Windows 8/10, XProfan X4
Programmieren, das spannendste Detektivspiel der Welt.
12.09.2017  
 




E.T.
Michael W. (12.09.2017)
Anscheinend ist nicht jeder so sorgsam beim recherchieren des Formates. Wenn Dein externes Programm nur beim Erstellen das Datum schreibt ist das vom Programmierer vergeigt worden.

... immer diese Schnell-Mach-Fix-Programmierer

Michael W. (12.09.2017)
Da ist dann die Frage wie die Datenbank erweitert wird. Ich nehme an, die ist und bleibt ohne *.IDX. Dann sollte es einfach sein, denn dann wird einfach nur erweitert.

Index wird keiner erstellt, wie erwartet... $dbLUpdate bzw. $dbLUpdate4  greifen auf die .idx zu ?? Das sollte man aber auch wissen, dann melde ich diesen Verweis mal als Nachtrag in der Hilfe-Datei an.

Michael W. (12.09.2017)
Nutze also den Rückgabewert von db("Open",...
Den in einer INI-Datei merken und Du weißt beim Öffnen der Datei
ob tatsächlich etwas hinzugefügt wurde - und wieviel.

Dann nehme ich gleich GetFDate$ + GetFTime$ , das passt ja. Ich weis ja nicht, ob das ext. Programm irgendwann mal was "am Anfang" der db killt, um ggf. die Datei nicht zu groß werden zu lassen.

Michael W. (12.09.2017)
Mit den Entwicklern der Wetterstation Kontakt aufnehmen und Ihnen ein besseres Programm anbieten.

Das ist der Sinn der Sache. Zumindest will ich erstmal mein Programm, was mir die Daten so anzeigt, wie ich es will (z.B. im Vollbild, was deren Progg nicht mal hinbekommt), darum begnüge ich mich erstmal mit der Abfrage der Datenbank des Hersteller-Proggs.

Wenn ich denn mal Zeit finden würde, die Station, welche am USB hängt, selbst abzufragen, bräuchte ich deren Programm nicht (extra) mitlaufen lassen und könnte auch ein (vlt. besseres) Programm als die Hersteller-Version (ist so von 2013 oder so) anbieten. Aber irgendwie will eine Standard-USB-Abfrage (wie ReadCom & Co.) einfach nicht in XProfan Einzug halten, was ich sehr schade finde. Und wenn dann Zeit fehlt, sich selbst mit den ganzen ddl's auseinanderzusetzen, muss man sich eben erstmal über 3 Ecken helfen...
Also wenn jemand der Mitlesendenden direkten Zugriff auf USB-Geräte (ohne USB-Seriell-Konverter) aus einem XProfan-Progg hinbekommen hat, dann immer her damit  
Auf jeden Fall besten Dank an Dich, Michael
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
12.09.2017  
 




RGH
$DBLUpdate und $DBLUpdate4 greifen lediglich auf den Header der Datenbank zu. Wenn ein externes Programm beim Ändern den Header nicht aktualisiert, ist XProfan natürlich machtlos.

BTW: Standard DBase speichert das Jahr nur zweistellig im Header. $DBLUpdate4 nimmt an, dass Jahre vor 71 in diesem Jahrhundert liegen und gibt das Jahr entsprechend 4-stellig zurück.

Für Deine Zwecke dürfte aber die von Dir verwandte Methode, nämlich das Filedatum zu verwenden, der sicherere Weg sein.

Gruß
Roland
 
XProfan X3
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
12.09.2017  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

7.506 Betrachtungen

Unbenanntvor 0 min.
Rschnett06.08.2022
Sven Bader07.09.2021
ecki24.01.2019
Torsten Rümker02.01.2019
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

E.T. (4x)
Michael W. (2x)
RGH (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie