AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Fortlaufend Hochzählen

Ein Thema von strom · begonnen am 21. Mai 2015 · letzter Beitrag vom 22. Mai 2015
Antwort Antwort
strom

Registriert seit: 23. Aug 2008
Ort: Keine Ergebnisse gefunden
290 Beiträge
 
#1

Fortlaufend Hochzählen

  Alt 21. Mai 2015, 21:58
Quelltext Ausschnitt!

Delphi-Quellcode:
var
i : integer;
begin
  DataEINSAETZE.DataSet.Insert;
  DataEINSAETZE.DataSet.Edit;
  EINSAETZE.FieldByName('EINSATZNUMMER').Text :=(FormatDateTime('yymmdd'+'000'+IntToStr(i+1),now)); // es wird immer nur die 1 gesetzt!
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#2

AW: Fortlaufend Hochzählen

  Alt 21. Mai 2015, 22:04
Die Variable i muss global deklariert sein.

Bevor die Variable i angezeigt wird - in welchem Kontext auch immer - muss sie verändert werden:

Delphi-Quellcode:
...
inc(i);
Label1.Caption:= FormatDateTime('yymmdd'+'000'+IntToStr(i),now);
...

Geändert von hathor (22. Mai 2015 um 05:43 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#3

AW: Fortlaufend Hochzählen

  Alt 21. Mai 2015, 22:15
Was willst du hochzählen?

Mal paar Grundlagen:

TDateTime ist ein Double-Wert, also eine ein Wert mit Dezimalstellen, bzw. Nachkommastellen. Der Wert vor dem Komma wird für das Datum genommen, der Wert nach dem Komma ist für die Uhrzeit.

0,0 ist somit ein Datum mit Uhrzeit. In dem Fall (ich glaube) 01.01.1900 00:00:00.000
1,0 ist ein Tag später, also 02.01.1900 00:00:00.000
2,0 wieder ein Tag später, also 03.01.1900 00:00:00.000

Datum plus 1 erhöht also das Datum um einem Tag.

Der Wert für eine Stunde ist 1 / 24.
Der Wert für eine Minute ist 1 / 24 / 60.
Der Wert für eine Sekunde ist 1 / 24 / 60 / 60.
Der Wert für eine Millisekunde ist 1 / 24 / 60 / 60 / 1000.

Die aktuelle Uhrzeit ist also 42145,9680029282 oder 21.05.2015 23:13x.yyyy

Edierst du zu 42145,9680029282 eine 1, ist es das gleiche Datum, aber morgen.

Was willst du also erhöhen?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.536 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Fortlaufend Hochzählen

  Alt 21. Mai 2015, 22:44
I ist nicht initialisiert und wird auch nirgends verändert. Selbst wenn Ersteres zutreffen würde, käme also immer dasselbe heraus.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.105 Beiträge
 
Delphi 12 Athens
 
#5

AW: Fortlaufend Hochzählen

  Alt 21. Mai 2015, 23:52
Global muß nichts sein.
Aber lokal sollte es auch nicht sein.

Außerdem wird i nirgendwo hochgezählt.
Nur eine Kopie von i wird immer wieder um 1 erhöht.
Lokale variablen enthalten "Zufallswerte", wenn sie nicht initialisiert sind.

Was soll eigentlich ab i=9 passieren?

PS: Delphi-Referenz durchsuchenFormat, Delphi-Referenz durchsuchenIncMinute, Delphi-Referenz durchsuchenDateOf, Delphi-Referenz durchsuchenSysUtils.Date usw.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#6

AW: Fortlaufend Hochzählen

  Alt 22. Mai 2015, 06:34
Vielleicht ist es auch interessant, das verwendete RDBMS zu erfahren, da es sich irgendwie um einen eindeutigen Identifikator handeln könnte, sodass Dinge wie "Eindeutigkeit" auch eine Rolle spielen könnten.

Ich würde die Vergabe der ID nach Möglichkeit in die Datenbanklogik verschieben und die ID innerhalb einer Transaktion vergeben, um Duplikate zu vermeiden.

Aber klar, wenn es sich um eine Desktopdatenbank handelt, die garantiert niemals von mehr als einer Person bedient wird und Threads auch nie ins Spiel kommen, kann man das schon mit einer globalen oder was weiss ich Variablen auch machen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Fortlaufend Hochzählen

  Alt 22. Mai 2015, 07:05
In älteren Beiträgen des TE wurde mit FireBid und MySQL/MariaDB gearbeitet. FireBird unterstützt Sequenzen ( Generatoren) und neuere MySQL-Versionen sollten Sequenzen auch unterstützen und würden sich in diesem Fall als Lösungsansatz aufdrängen.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Fortlaufend Hochzählen

  Alt 22. Mai 2015, 07:21
In MYSQL gibt's AUTO_INCREMENT-Felder, kein CREATE SEQUENCE.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Fortlaufend Hochzählen

  Alt 22. Mai 2015, 07:25
Auf dem ersten Blick ( nur überflpogen) sah es aus, als ob neuere MySQL Versionen dies nun könnten.
http://www.mysqltutorial.org/mysql-sequence/
Notfalls halt selber nachbauen.
In FireBird geht es aber auf jeden Fall.
Markus Kinzler
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#10

AW: Fortlaufend Hochzählen

  Alt 22. Mai 2015, 07:58
mysql kann auch mit Variablen im Statement arbeiten. Damit kann man lustige Sachen machen. Die hier gepostete Clientoperation ließe sich damit vermutlich komplett auf dem Server abwickeln.
Gruß, Jo
  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 01:59 Uhr.
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