Delphi-PRAXiS
Seite 3 von 12     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Datenerfassung mit Firebird Datenbank (https://www.delphipraxis.net/129737-datenerfassung-mit-firebird-datenbank.html)

mkinzler 24. Feb 2009 22:02

Re: Datenerfassung mit Firebird Datenbank
 
Ja. hierfür gibt es auch Kontextvariablen ( CURRENT_DATE, CURRENT_TIMESTAMP, ...)
Auf ein Ereignis kann man auch mehrere Trigger binden, deren Reihenfolge man dann mit POSITION setzen kann

Chemiker 24. Feb 2009 22:04

Re: Datenerfassung mit Firebird Datenbank
 
Hallo Jens Hartmann,

beim Datum ist es noch einfacher. Du hast die Möglichkeit unter dem Feld für das Datum/Uhrzeit einfach als Default ‚NOW’ eingeben und schon wird das Datum/Uhrzeit in den Datensatz reingeschrieben.

Bis bald Chemiker

Jens Hartmann 24. Feb 2009 22:18

Re: Datenerfassung mit Firebird Datenbank
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also, wenn ich das jetzt so richtig gemacht habe, dann sieht das ganze jetzt in etwa so aus

Chemiker 24. Feb 2009 22:27

Re: Datenerfassung mit Firebird Datenbank
 
Hallo Jens Hartmann,

ich habe zuvor die Domänen angelegt. Warum ist der Bereich als Char und nicht als VarChar deklariert?

Bis bald Chemiker

Jens Hartmann 24. Feb 2009 22:33

Re: Datenerfassung mit Firebird Datenbank
 
Bereich habe ich schon umgeändert in VARCHAR.
und wenn das OK ist, habe ich auch Datum und Uhrzeit in zwei Spalten geteilt und beide auf 'NOW' gesetzt.

Satty67 24. Feb 2009 22:33

Re: Datenerfassung mit Firebird Datenbank
 
Da haue ich schnelle eine Zwischenfrage rein:

Ist Char(n) nicht schneller als VarChar(n) und bei weitgehend gleich breiten Zeichenketten besser?

Jens Hartmann 24. Feb 2009 22:42

Re: Datenerfassung mit Firebird Datenbank
 
Das mit der Domain, wenn ich es verstanden habe, wird genutzt um später verschiedenen Spalten, die die selbe Charaktaristik haben, die gleiche Domain zu geben, um es einfacher zu haben die Eigenschaften der Spalten zuzuweisen.

Zitat:
Zitat:

Da haue ich schnelle eine Zwischenfrage rein:

Ist Char(n) nicht schneller als VarChar(n) und bei weitgehend gleich breiten Zeichenketten besser?
Also, das mit Char und VarChar habe ich so verstanden, und steht so in der Doku

In der Praxis sollten Sie eine Regel beachten: verwenden Sie nur CHARs, wenn Strings mit wenigen Zeichen gespeichert werden sollen; die Ausnahme der Regel ist, wenn Sie mit Zwischentabellen arbeiten, die für den Datenexport von prn-Dateien mit festen Längen benötigt werden. Dann sind Felder mit festen Längen von Vorteil.

Tatsächlich benötigen VARCHAR-Spalten mehr Speicherplatz als CHAR-Spalten, da bei der Speicherng eines VARCHARs, InterBase/Firebird zwei Bytes hinzufügt, die anzeigen, wie groß der VARCHAR tatsächlich ist.

ALso wird ein CHAR tatsächlich mit weniger Paltzbedarf gespeichert. Wenn jedoch ein SELECT auf einer VARCHAR-Spalte erfolgt,schneidet InterBase/Firebird das 2-Byte-Polster ab und speichert den Wert. Wenn ein SELECT auf eine CHAR-Spalte erfolgt, gibt InterBase/Firebird den Wert und die "Leerzeichen" zurück. Also muss die Speicherung der zwei Bytes in einem CHAR gegen die nachträgliche Entfernung der Leerzeichen auf der Clientseite abgewogen werden. Diese beiden Bytes sind jedoch bei der heutigen Hardware so vernachlässigbar, dass sie keinen Einfluss auf die Datenbankgeschwindigkeit haben. Dies kann jedoch nachteilig bei der Definition von kurzen Textfeldern sein.

Jens Hartmann 24. Feb 2009 22:50

Re: Datenerfassung mit Firebird Datenbank
 
Jetzt ist mir aber gerade nochwas aufgefallen, wenn ich jetzt Datum und Uhrzeit durch die Datenbank eintragen lasse, habe ich doch ein Problem, wenn mal die Datenverbindung zur Einbruchmeldeanlage (EMA) gestört ist.

Die EMA hat einen gewissen Datenpuffer, der dem Drucker zugeordnet ist, diesen kann ich auch nicht beeinflussen, das heißt, ist die Datenverbindung gestört, und wird zu einem späteren Zeitpunkt wieder Instandgesetzt, werden aber die noch im Puffer vorhandenen Daten ausgegeben.

Dies müsste ja dann automatisch zur Folge haben, das diese mit einem falschen Time/Date Format in die Datenbank eingetragen werden, und somit meine Ereigisse durcheinander sind.

Oder habe ich jetzt einen Denkfehler

Chemiker 24. Feb 2009 22:55

Re: Datenerfassung mit Firebird Datenbank
 
Hallo Jens Hartmann,

Zitat:

Zitat von Jens Hartmann
Das mit der Domain, wenn ich es verstanden habe, wird genutzt um später verschiedenen Spalten, die die selbe Charaktaristik haben, die gleiche Domain zu geben, um es einfacher zu haben die Eigenschaften der Spalten zuzuweisen.

Genau. Das erleichtert das Arbeiten z.B. beim Ändern der Datengröße z.B. hast Du 2 Felder mit VarChar 50 wenn Du Sie jetzt auf 60 ändern muss, dann ist nur eine Änderung an der Domain erforderlich. Da Du wahrscheinlich nur mit einer Tabelle arbeitest ist das aber zu vernachlässigen.
Wenn Du aber ein Warenwirtschaftssystem hast kann das schon eine Menge arbeit machen und ist Fehler anfällig.


Bis bald Chemiker

Chemiker 24. Feb 2009 23:02

Re: Datenerfassung mit Firebird Datenbank
 
Hallo Jens Hartmann,

Zitat:

Zitat von Jens Hartmann
Oder habe ich jetzt einen Denkfehler

Wenn das Datum und die Uhrzeit von der EMA geliefert wird, dann benutze das und schreibe es in die Datenbank.
Da hatte ich wohl ein Denkfehler, ich bin davon ausgegangen das Dein Programm das Datum/Uhrzeit für den Datensatz generiert.

Bis bald Chemiker


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:16 Uhr.
Seite 3 von 12     123 45     Letzte »    

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