![]() |
Datenbank: SQLite • Version: 3 • Zugriff über: SimpleDelphi-Wrappers von Tim Anderson
Aktuelles Datum in die DB speichern?
Hallo,
ich versuche schon seit einer Stunde das aktuelle Datum in die DB zu speichern aber es gelingt mir irgendwie nicht. Hier der Code:
Delphi-Quellcode:
Hab schon das Datum mit DateToStr konvertiert und alles mögliche versucht, aber es will nicht irgendwie. Kann mir da vllt jemand weiter helfen?
// Tabelle media füllen
sSQL := 'INSERT INTO media(mediatitle, description, status, isbn, publicationyear, insertdate,'; sSQL := sSQL + 'fk_place_id, fk_publisher_id, fk_author_id, fk_category_id, fk_language_id, fk_entleiher_id, edition) VALUES ("'+TitleEdit.Text+'",'; sSQL := sSQL + '"'+ DescriptionMemo.Text +'",'; sSQL := sSQL + '"'+ IntToStr(status) +'",'; sSQL := sSQL + '"'+ ISBNEdit.Text +'",'; sSQL := sSQL + '"'+ PublicationyearEdit.Text +'",'; sSQL := sSQL + '"'+ Date('now') +'",'; // <---- hier der Fehler sSQL := sSQL + '"'+ IntToStr(Integer(PlaceComboBox.Items.Objects[PlaceComboBox.ItemIndex])) +'",'; sSQL := sSQL + '"'+ IntToStr(Integer(PublisherComboBox.Items.Objects[PublisherComboBox.ItemIndex])) +'",'; sSQL := sSQL + '"'+ IntToStr(Integer(AuthorComboBox.Items.Objects[AuthorComboBox.ItemIndex])) +'",'; sSQL := sSQL + '"'+ IntToStr(Integer(CategoryComboBox.Items.Objects[CategoryComboBox.ItemIndex])) +'",'; sSQL := sSQL + '"'+ IntToStr(Integer(LanguageComboBox.Items.Objects[LanguageComboBox.ItemIndex])) +'",'; sSQL := sSQL + '"'+ IntToStr(Integer(EntleiherComboBox.Items.Objects[EntleiherComboBox.ItemIndex])) +'",'; sSQL := sSQL + '"'+ EditionEdit.Text +'");'; Danke! Edit: Die Fehlermeldung lautet: [DCC Fehler] NewMediaForm.pas(333): E2034 Zu viele Parameter |
AW: Aktuelles Datum in die DB speichern?
Falls die verwendeten Komponenten/Klassen/Units parametrisierte Statements unterstützen, solltest Du diese nutzen.
|
AW: Aktuelles Datum in die DB speichern?
Zitat:
|
AW: Aktuelles Datum in die DB speichern?
Der Datumsstring hat anscheinend nicht das richtige Format. Ich würde, auch unabhängig von diesem Problem, zum Einsatz von (SQL-)Parametern raten.
|
AW: Aktuelles Datum in die DB speichern?
Zitat:
Delphi-Quellcode:
// media Tabelle füllen
sSQL := 'INSERT INTO media(fk_author_id, mediatitle, description, status, isbn,'; sSQL := sSQL + 'edition, publicationyear, insertdate, fk_publisher_id, fk_place_id, fk_category_id, fk_language_id, fk_author_id, fk_entleiher_id) VALUES (1, "Java", "Das ist die Beschreibung!", 1,'; sSQL := sSQL + '"3-3434-78", 3, 2012, Date("now"), 1, 1, 1, 1, 1, 1);'; |
AW: Aktuelles Datum in die DB speichern?
Zitat:
SQL-Code:
INSERT INTO media(mediatitle, description, status, isbn, publicationyear, insertdate,';
sSQL := sSQL + 'fk_place_id, fk_publisher_id, fk_author_id, fk_category_id, fk_language_id, fk_entleiher_id, edition) VALUES ( :Mediatitle, :description, ... ;
Delphi-Quellcode:
...
Query.ParamByName(':insertdate').Value := Now; ... |
AW: Aktuelles Datum in die DB speichern?
Ich arbeite mit SQLite, da ist es nicht so einfach mit den Querys.
|
AW: Aktuelles Datum in die DB speichern?
Zitat:
Wenn es nicht einfach ist liegt es an der gewählten und an dieser Stelle unzulänglichen komponenten wenn diese keine parametrisierten Abfragen unterstützt. |
AW: Aktuelles Datum in die DB speichern?
Benütze bitte Format(), bitte!
Ich hab mich auch vor einiger Zeit damit gequält - deshalb hab ich einfach ne Konvertier Funktion für DateTime geschrieben, die ich dann als String abspeichere! |
AW: Aktuelles Datum in die DB speichern?
Zitat:
Im 2. Fall hast du keine "" um das Datum. |
AW: Aktuelles Datum in die DB speichern?
Zitat:
Bringt auch nix... :gruebel: |
AW: Aktuelles Datum in die DB speichern?
Zitat:
Was hat UniDAC noch für Vorteile? Ist das Kostenlos? |
AW: Aktuelles Datum in die DB speichern?
Zitat:
Zitat:
es gibt aber auch kostenlose Lösungen für SQLite wie ![]() ![]() |
AW: Aktuelles Datum in die DB speichern?
Zitat:
Delphi-Quellcode:
Edit:
const
queryInsertMedia = 'INSERT INTO media (mediatitle, description, status, isbn, publicationyear, insertdate, fk_place_id, fk_publisher_id, fk_author_id, fk_category_id, fk_language_id, fk_entleiher_id, edition) ' + 'VALUES ("%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s")'; {...} sSql := Format(queryInsertMedia, [TitleEdit.Text, DescriptionMemo.Text, IntToStr(status), {...}]); Format(Date("now")) "?? Delphi-Syntax! |
AW: Aktuelles Datum in die DB speichern?
Liste der Anhänge anzeigen (Anzahl: 1)
Evt. gibts da einen viel einfacheren Weg bzw. die diversen DBS bieten spezielle Funktionalitäten an, jedoch hatte ich damals nichts für SQLite gefunden, womit ich zufrieden war.
Im Anhang ist ne kleine Unit, die DateTime zu nem Integer konvertiert. aus 28.02.2013 wird 20130228 (yyyymmdd) aus 14:49:50 wird 144950 (ohne ":")
Delphi-Quellcode:
var
encodedTime: Int64; begin encodedTime := encodeDateTime(Now); // den Inhalt dieser Variable kannst du einfach in die DB speichern ShowMessage(formatDecodedTime(DecodeDateTime_Time(encodedTime))); ShowMessage(formatDecodedDate(DecodeDateTime_Date(encodedTime))); end; |
AW: Aktuelles Datum in die DB speichern?
Meinst du das geht irgendwie nicht anders?
Arbeite inzwischen mit Params, aber das hilft auch nicht.
Delphi-Quellcode:
// Tabelle media füllen
sSQL := 'INSERT INTO media(mediatitle, description, status, isbn, edition, publicationyear, insertdate,'; sSQL := sSQL + 'fk_publisher_id, fk_place_id, fk_category_id, fk_language_id,'; sSQL := sSQL + 'fk_author_id, fk_entleiher_id) VALUES (:mediatitle, :description, :status, :isbn, :edition, :publicationyear, :insertdate, :fk_publisher_id, :fk_place_id, :fk_category_id, :fk_language_id, :fk_author_id, :fk_entleiher_id);'; db.AddParamText(':mediatitle', TitleEdit.Text); db.AddParamText(':description', DescriptionMemo.Text); db.AddParamInt(':status', status); db.AddParamText(':isbn', ISBNEdit.Text); db.AddParamInt(':edition', varedition); db.AddParamInt(':publicationyear', varpublicationyear); db.AddParamText(':insertdate', Date("now")); // <--- hier immer noch der Fehler db.AddParamInt(':fk_publisher_id', Integer(PublisherComboBox.Items.Objects[PublisherComboBox.ItemIndex])); db.AddParamInt(':fk_place_id', Integer(PlaceComboBox.Items.Objects[PlaceComboBox.ItemIndex])); db.AddParamInt(':fk_category_id', Integer(CategoryComboBox.Items.Objects[CategoryComboBox.ItemIndex])); db.AddParamInt(':fk_language_id', Integer(LanguageComboBox.Items.Objects[LanguageComboBox.ItemIndex])); db.AddParamInt(':fk_author_id', Integer(AuthorComboBox.Items.Objects[AuthorComboBox.ItemIndex])); db.AddParamInt(':fk_entleiher_id', Integer(EntleiherComboBox.Items.Objects[EntleiherComboBox.ItemIndex])); |
AW: Aktuelles Datum in die DB speichern?
Was genau soll Date("now") bewirken? Oder meintest Du einfach nur
![]() |
AW: Aktuelles Datum in die DB speichern?
Gibt es db.AddParamDate()?
|
AW: Aktuelles Datum in die DB speichern?
Hab mit den Params inzwischen ein anderes Problem, die Strings werden abgeschnitten, es wird nur ca. die Hälfte des Wortes gespeichert. Ich werde verrückt. :roteyes:
|
AW: Aktuelles Datum in die DB speichern?
Zitat:
Delphi-Quellcode:
gelöst.
db.AddParamText(':insertdate', FormatDateTime('dd-mm-yyyy', Now));
Hab aber ein anderes Problem, siehe Post #19 :wall: |
AW: Aktuelles Datum in die DB speichern?
Neues Problem neuer Thread. Aber zurück zum Datum. Kennt Deine DB sysdate?
Sherlock |
AW: Aktuelles Datum in die DB speichern?
Welche Bibliothek verwendest du für den Zugriff?
|
AW: Aktuelles Datum in die DB speichern?
Zitat:
|
AW: Aktuelles Datum in die DB speichern?
Warum wird das Datum nicht als Integer gespeichert ? UnixTimeStamp ? Ich mache das prinzipiell so und es funktioniert einwandfrei.
|
AW: Aktuelles Datum in die DB speichern?
Zitat:
|
AW: Aktuelles Datum in die DB speichern?
Zitat:
Zitat:
|
AW: Aktuelles Datum in die DB speichern?
Zitat:
Zitat:
Nicht falsch, aber mann sollte die Einschränkungen kennen/wissen/berücksichtigen. |
AW: Aktuelles Datum in die DB speichern?
Zitat:
a) über eine andere DB-Verbindungskomponente nachdenken b) ggf. Ansistrings nutzen. Gruß K-H |
AW: Aktuelles Datum in die DB speichern?
Wenn ich in MySQL das aktuelle Datum haben will, nehme ich immer die vom DBMS gestellte Funktion NOW(). Vorteil: Es ist egal was auf den (prinzipiell ja unverlässlichen) Clients für ein Datum eingestellt ist, und das Format passt in jedem Fall. Ich kenne SQLite jedoch nicht, aber da müsste es doch was ähnliches geben.
|
AW: Aktuelles Datum in die DB speichern?
Zitat:
|
AW: Aktuelles Datum in die DB speichern?
Zitat:
|
AW: Aktuelles Datum in die DB speichern?
Trigger
|
AW: Aktuelles Datum in die DB speichern?
Zitat:
Zitat:
|
AW: Aktuelles Datum in die DB speichern?
Er meint wohl zum automatischen Setzen eines Timestamps beim Einfügen; also als Antwort auf den Betreff der Frage und nicht als Antwort auf die ursprüngliche Frage noch der Nachfrage im Beitrag vor ihm.
|
AW: Aktuelles Datum in die DB speichern?
Das kann man doch dazuschreiben. Ich hatte mich gewundert, was denn ein Trigger an der Tatsache, dass Daten nur zur Hälfte gespeichert werden, ändern sollte.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz