Lazarus & SQLite: Datum im YYYY-MM-DD-Format

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Judas
Beiträge: 13
Registriert: Mo 26. Mär 2012, 14:36

Re: Lazarus & SQLite: Datum im YYYY-MM-DD-Format

Beitrag von Judas »

Moin, zusammen.

@af0815

Danke für die Mühe, die du dir gemacht hast. Auf die Sache mit der separaten SQLquery war ich zwischenzeitlich auch gekommen. Im Prinzip mit dem gleichen Ansatz wie du. Gut war deine Lösung mit der Abwärtssortierung. Die habe ich schon einmal gleich übernommen. Und weil ich schon mal dabei war, habe ich auch deinen Hinweis zu den möglichen Ober- und Untergrenzen bei der Schlüsselerzeugung umgesetzt. Siehe untenstehendes Codefragment.

Das mit dem Speichern des Datums als String in der Datenbank ist eine gute Idee. Damit bleiben die Einträge direkt lesbar. Und Vergleichsoperationen sind auch weiterhin möglich.

Ich denke, das ist wohl das Optimum dessen, was sich aus der Kobination SQLite und Lazarus in Sachen Datum herausholen lässt.

Code: Alles auswählen

function Empty(const s: string): boolean;
begin
  Result := (trim(s) = '')
end;

function TForm1.NewId: TIDStr;
// Get highest ID and add 1
var
  q: TSQLquery;
  s: string;
  n: integer;
begin
  q := TSQLquery.Create(nil);
  q.SQL.Text :=  'select ID from members order by ID desc';
  q.DataBase := SQLite3Connection1;
  q.Open;
  s := q.FieldByName('ID').AsString;

  if empty(s) then
    n := 1
  else
    n := StrToInt(s);

  Try
    if (n >= 9999) then
      Raise Exception.Create('Maximum of 9999 records reached!');

    inc(n);
  Finally
    q.Free;
  end;

  Result := format('%.4d',[n]);
end;
Das Ganze von mir findet sich im diesem Thread wieder:

viewtopic.php?p=114568#p114568

Kommentare und Anregungen sind erwünscht und jederzeit willkommen.

Ich wünsche allem Mitlesenden hier immer gute Laune und etwas höhere Außentemperaturen als derzeit.
Liebe Grüße

Antworten