Migräne Tagebuch

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
lycaner
Beiträge: 56
Registriert: Mi 20. Jul 2011, 13:29
OS, Lazarus, FPC: Winux (L 1.4.4 FPC 2.6.)
CPU-Target: 64 Bit AMD
Wohnort: Bern, Schweiz

Migräne Tagebuch

Beitrag von lycaner »

Hallo Liebe Forums Spezialisten und Datenbank Guru's

Ich möchte mir eine Aplikation erstellen für meine Migräne,
so habe ich mich schon etwas ins Thema Eingelesen.

Nun erhalte ich aber die ganze Zeit einen Syntax Error und ich weis nicht wesshalb.
Mein Code zu beginn:

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
begin
  {schliesst Verbindung zu SQLite Datenbanken }
  SQLite3Connection1.Close;
 
    {Öffnet Datenbank Datei migränetagebuch}
    SQLite3Connection1.DatabaseName:='migraenetagebuch.sql3db';
  SQLTransaction1.Database:=SQLite3Connection1;
  SQLQuery1.Transaction:=SQLTransaction1;
 
  SQLQuery1.SQL.text := 'CREATE TABLE IF NOT EXISTS tblDateTime (ID INTEGER PRIMARY KEY, 00.00 VARCHAR(10), 00.15 VARCHAR(25),00.30 VARCHAR(25),00.45 VARCHAR(25),01.00 VARCHAR(25),01.15 VARCHAR(25),01.30 VARCHAR(25),01.45 VARCHAR(25),02.00 VARCHAR(25),02.15 VARCHAR(25),02.30 VARCHAR(25),02.45 VARCHAR(25),03.00 VARCHAR(25),03.15 VARCHAR(25),03.30 VARCHAR(25),03.45 VARCHAR(25),04.00 VARCHAR(25),04.15 VARCHAR(25),04.30 VARCHAR(25),04.45 VARCHAR(25),05.00 VARCHAR(25),05.15 VARCHAR(25),05.30 VARCHAR(25),05.45 VARCHAR(25),06.00 VARCHAR(25),06.15 VARCHAR(25),06.30 VARCHAR(25),06.45 VARCHAR(25),07.00 VARCHAR(25),07.15 VARCHAR(25),07.30 VARCHAR(25),07.45 VARCHAR(25),08.00 VARCHAR(25),08.15 VARCHAR(25),08.30 VARCHAR(25),08.45 VARCHAR(25),09.00 VARCHAR(25),09.15 VARCHAR(25),09.30 VARCHAR(25),09.45 VARCHAR(25),10.00 VARCHAR(25),10.15 VARCHAR(25),10.30 VARCHAR(25),10.45 VARCHAR(25),11.00 VARCHAR(25),11.15 VARCHAR(25),11.30 VARCHAR(25),11.45 VARCHAR(25),12.00 VARCHAR(25),12.15 VARCHAR(25),12.30 VARCHAR(25),12.45 VARCHAR(25),13.00 VARCHAR(25),13.15 VARCHAR(25),13.30 VARCHAR(25),13.45 VARCHAR(25),14.00 VARCHAR(25),14.15 VARCHAR(25),14.30 VARCHAR(25),14.45 VARCHAR(25),15.00 VARCHAR(25),15.15 VARCHAR(25),15.30 VARCHAR(25),15.45 VARCHAR(25),16.00 VARCHAR(25),16.15 VARCHAR(25),16.30 VARCHAR(25),16.45 VARCHAR(25),17.00 VARCHAR(25),17.15 VARCHAR(25),17.30 VARCHAR(25),17.45 VARCHAR(25),18.00 VARCHAR(25),18.15 VARCHAR(25),18.30 VARCHAR(25),18.45 VARCHAR(25),19.00 VARCHAR(25),19.15 VARCHAR(25),19.30 VARCHAR(25),19.45 VARCHAR(25),20.00 VARCHAR(25),20.15 VARCHAR(25),20.30 VARCHAR(25),20.45 VARCHAR(25),21.00 VARCHAR(25),21.15 VARCHAR(25),21.30 VARCHAR(25),21.45 VARCHAR(25),22.00 VARCHAR(25),22.15 VARCHAR(25),22.30 VARCHAR(25),22.45 VARCHAR(25),23.00 VARCHAR(25),23.15 VARCHAR(25),23.30 VARCHAR(25),23.45 VARCHAR(25))';
  SQLQuery1.ExecSQL;
  SQLTransaction1.commit;
 
{Testet Datenbank Connection}
SQLite3Connection1.Open;
if SQLite3Connection1.Connected then
StatusBar1.Panels.Add.Text:='Verbindung hergestellt';
end;


Ich lade Euch gerne auch meinen Source hoch mit dem Programm. Damit Ihr Euch
ein bild machen könnt was ich genau gemacht habe in der Aplikation.

Vielleicht weis jemand Rat...

Vielen Dank für die Hilfe

Chris

--------------------------------------------------
ZippyUploader(22.01.2016 17-16-21).txt
--------------------------------------------------
Migraene Kalender.rar
http://www52.zippyshare.com/v/CN8yz9m7/file.html

2)_Datenbanktutorial_Lazarus_und_SQLite_-_Teil_2_(n_zu_m_-_Beziehung).zip
http://www93.zippyshare.com/v/5oNdeYvU/file.html

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Migräne Tagebuch

Beitrag von m.fuchs »

Du kannst so etwas wie "00.00" nicht als Feldnamen verwenden.

Ist auch kein schönes Layout, sinnvoller wären m.E. zwei Tabellen (Tage, Zeitpunkte) mit einer 1:N Beziehung.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Lion
Beiträge: 186
Registriert: Mo 24. Mär 2014, 09:58

Re: Migräne Tagebuch

Beitrag von Lion »

Ich erstelle die DB und Tabellen mit einem Tool, SQLite Manager (als Add-on für Firefox) oder SQLite Expert Personal. Mittels Code lese und schreibe ich die Daten.

Ja der Fehler liegt wohl daran, dass die Feldnamen falsche Bezeichnungen haben.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Migräne Tagebuch

Beitrag von m.fuchs »

Und diese Tools geben dir diesen SQL-String als Creation-String für die Tabelle zurück. Also meins (Sqliteman) sagt mir dass die Tabelle so erzeugt wird:

Code: Alles auswählen

CREATE TABLE IF NOT EXISTS tblDateTime (ID INTEGER PRIMARY KEY, "00.00" VARCHAR(10), "00.15" VARCHAR(25),"00.30" VARCHAR(25), [...]


Aber wie gesagt, ist eigentlich keine schöne Lösung.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Migräne Tagebuch

Beitrag von MacWomble »

Ich würde so etwas ohnehin mit VisualPlanit realisieren ...
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

lycaner
Beiträge: 56
Registriert: Mi 20. Jul 2011, 13:29
OS, Lazarus, FPC: Winux (L 1.4.4 FPC 2.6.)
CPU-Target: 64 Bit AMD
Wohnort: Bern, Schweiz

Re: Migräne Tagebuch

Beitrag von lycaner »

Hallo Lion und M. Fuchs,

vielen Dank für Eure Infor's.
Ich habe mal in einer ersten Variante zum bessren verstehen des ganzen die Zeiten genommen als dB Tabellen Namen.
Ja da habt Ihr sicher recht wenn es nicht so schön aussieht, aber mir ist noch nicht's besseres eingefallen.

@MacWomble ist "VisualPlanit" eine IDE für Datenbanken oder was kann ich mir darunter vorstellen ?
Ich habe es also vorerst mal ohne Error's lösen können bin aber noch nicht weiter.


Ich bekomme beim verbinden nun den Error dass die Datenbank nicht geladen werden kann.
Ich habe die SQLiteConnection auf True gestellt und den SQLQuery auch.

Code: Alles auswählen

 
SQLite3Connection1.DatabaseName:='./sql/migraenetagebuch.sql3db';
SQLTransaction1.Database:=SQLite3Connection1;
SQLQuery1.Transaction:=SQLTransaction1;
 


Und dann den Query:

Code: Alles auswählen

 
SQLQuery1.FileName:='migraenetagebuch.sql3db';
   SQLQuery1.Active:=true;
 


Vielen Dank nochmals.

Chris

--------------------------------------------------
ZippyUploader(23.01.2016 15-03-22).txt
--------------------------------------------------
2016-01-23_145903.png
http://www41.zippyshare.com/v/iiHL4HON/file.html

Migraene Kalender.rar
http://www6.zippyshare.com/v/OiljKhsM/file.html

Benutzeravatar
willi4willi
Lazarusforum e. V.
Beiträge: 155
Registriert: Sa 1. Nov 2008, 18:06
OS, Lazarus, FPC: Windows, Linux (debian) / Lazarus 3.2 / FPC 3.2.2
CPU-Target: i386, win64, arm

Re: Migräne Tagebuch

Beitrag von willi4willi »

Hallo Chris,

Dein letztes Archiv konnte ich leider nicht öffnen. Habe mir also das erste gegriffen.

Also dieser Code funktioniert bei mir:

Code: Alles auswählen

 
procedure TForm1.FormCreate(Sender: TObject);
begin
  {schliesst Verbindung zu SQLite Datenbanken }
  SQLite3Connection1.Close;
 
  SQLite3Connection1.DatabaseName:='migraenetagebuch.sql3db';
  SQLTransaction1.Database:=SQLite3Connection1;
 
  SQLQuery1.Transaction:=SQLTransaction1;
 
  SQLQuery1.SQL.text := 'CREATE TABLE IF NOT EXISTS tblDateTime ("ID" INTEGER PRIMARY KEY, "00.00" VARCHAR(10), "00.15" VARCHAR(25),"00.30" VARCHAR(25),"00.45" VARCHAR(25),"01.00" VARCHAR(25), "01.15" VARCHAR(25));';
  SQLQuery1.ExecSQL;
  SQLTransaction1.commit;
 
 {Testet Datenbank Connection}
 {Öffnet Datenbank Datei migränetagebuch}
  SQLite3Connection1.Open;
  if SQLite3Connection1.Connected then
  StatusBar1.Panels.Add.Text:='Verbindung hergestellt';
 
end;
 
 


Bist Du Dir sicher, dass Du die richtige sqlite3.dll in deinem Programmverzeichnis hast?
Ich erstellte ein 32-bit Programm und habe mir darum die 32-bit Variante gegriffen. Du hattest die 64-bit Variante im Progammverzeichnis.

Grundsätzlich verstehe ich zwar, dass Du mit den vielen Feldern die Anzahl der Datensätze gering halten möchtest, es ist aber wirklich sehr unpraktisch. Überlege doch einmal, wie von m.fuchs vorgeschlagen, zwei Tabellen zu verküpfen. Es scheint zwar auf den ersten Blick etwas komplizierter, aber spätestens wenn die Daten einmal ausgewertet werden sollen, werden wirst Du das erste Mal :roll: .


-
 

Viele Grüße

Willi4Willi

------------

lycaner
Beiträge: 56
Registriert: Mi 20. Jul 2011, 13:29
OS, Lazarus, FPC: Winux (L 1.4.4 FPC 2.6.)
CPU-Target: 64 Bit AMD
Wohnort: Bern, Schweiz

Re: Migräne Tagebuch

Beitrag von lycaner »

Hallo Willi 4 Willi,

ich habe mit meiner Version immer noch eine Exeption beim start der Applikation mit dem dass die Datenbank nicht gefunden wird wenn ich die
Query mit Datenbank Pfad einbinde ohne geht natülich auch nicht, das dann keine Datenbank findet.

Zudem habe ich beim wechsel von Form 1 zu Form 2 und zurück und dann beenden einen Exeption sowie beim mehrmaligen wechslen von Form 1
zu Form 2 und zurück jeweils nach dem 2ten oder 3ten wechseln.

Das habe ich noch nicht gelöst und heraus gefunden was das Problem ist,

Ich habe zudem zum Layout noch keine grossen Gedanken gemacht, da ich noch wirklich in den Kinderschuhen binn mit der Datenbank anwendung.

Was ich machen muss wären nur Export und Import Excell oder CSV Dateien
Oder dann einen Report als Ausdruck auf Papier oder eventuell noch PDF.
Das Report PDF Plugin lässt sich bei mir nicht Installieren nur den Report.

Also verwende ich dann wohl den Debenu PDF Light Library Die Light Edition kann ich mit Lazarus ansprechen habe ich erfahren die Grosse Edition habe ich
noch nicht näher angesehen sonst habe ich nichts Kompatibles zu Lazarus gefunden zum Erzeugen von PDF.

Ich habe Dir die RAR nochmals neu Hochgeladen in einer älteren Version als das letzte mal.
Nun sollte es gehen.

Gruss

Chris

--------------------------------------------------
ZippyUploader(23.01.2016 23-29-47).txt
--------------------------------------------------
Migraene Kalender.rar
http://www52.zippyshare.com/v/tO1boADr/file.html

2016-01-23_225618.png
http://www107.zippyshare.com/v/XnzH2eSQ/file.html

SoE
Beiträge: 84
Registriert: Mo 31. Aug 2015, 01:51

Re: Migräne Tagebuch

Beitrag von SoE »

Und ich dachte immer da hilft nur Natron-Wasser (NaHCO3)....

und keine Datenbanken...

Tja, man lernt nie aus... was ??

lycaner
Beiträge: 56
Registriert: Mi 20. Jul 2011, 13:29
OS, Lazarus, FPC: Winux (L 1.4.4 FPC 2.6.)
CPU-Target: 64 Bit AMD
Wohnort: Bern, Schweiz

Re: Migräne Tagebuch

Beitrag von lycaner »

Hallo SoE,

welche Medikamente zu nehmen sind ist das eine, aber es wird auch eine art Migräne Tagebuch geführt, wann was wie stark.
Und da ich das ganze nicht auf Papier mache sondern am Computer dachte ich ich mache eine Datenbank Software.
Da ich leider auch nichts für den Computer gefunden habe. Oder ich vielleicht auch falsch gesucht habe.
Ausser für das "Natel" resp. Mobil Telefon.

Gruss

Chris

SoE hat geschrieben:Und ich dachte immer da hilft nur Natron-Wasser (NaHCO3)....

und keine Datenbanken...

Tja, man lernt nie aus... was ??

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Migräne Tagebuch

Beitrag von Christian »

VisualPlanit sind Kalenderkomponenten
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Migräne Tagebuch

Beitrag von af0815 »

Es wäre schön, wenn du beschreiben würdest, was du mit der Datenbank machen willst und zwar Schritt für Schritt. Dann ist es einfacher das ganze mal zu überblicken, auch bringt es mehr Klarheit was der Ablauf ist und welche Komponenten (wenn nötig) sinnvoll sind.

Ich habe mir das Archiv mal heruntergeladen, will aber mein Lazarus nicht mit vielen extra Paketen versauen. Anhand der Dateien habe ich noch keine Ahnung was du wirklich wie machen willst. Es wäre auch sinnvoller mal ein Thema (ohne fremde Zusatzkomponenten) in einem Beispielprogramm zu behandeln und dann erst das nächste in einem weiteren Programmteil. Parallel bzw. später kannst du mit den Erkenntnissen dann deine eigentliche Applikation bauen.

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Migräne Tagebuch

Beitrag von af0815 »

Beispiel, statt den vielen Spalten speichere doch die Zeit einfach als Kennung (ID) ab. Die Umwandlung ist einfach

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
const
  ViertelStd : double = (1.0 / 24.0 / 4.0);
var
  AktTime: double;
  AktTimeStr : string;
  i: Integer;
begin
  ListBox1.Clear;
  for i := 0 to (24*4-1) do
  begin
    AktTime := ViertelStd * i;
    AktTimeStr := 'ID= '+ IntToStr(i) + ' Zeit= ' + TimeToStr(TDateTime(AktTime));
    ListBox1.AddItem(AktTimeStr,nil);
  end;
end;
 

Beispiel: Leeres Projekt, ein Button, eine ListBox.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

lycaner
Beiträge: 56
Registriert: Mi 20. Jul 2011, 13:29
OS, Lazarus, FPC: Winux (L 1.4.4 FPC 2.6.)
CPU-Target: 64 Bit AMD
Wohnort: Bern, Schweiz

Re: Migräne Tagebuch

Beitrag von lycaner »

Hallo af0815,

sorry für das beifügen der Libarys habe ich mir im Ordner so angelegt dass ich alles griffbereit habe.
Ich müsste einfach angeben welche Medikamente ich zu mir genommen habe und wie stark die
Migräne oder eben nur die Kopfschmerzen sind.

Damit ich das in der Form 1 besser eingeben kann, denke ich dann eine Combobox welche die
Informationen aus der Tabelle Medikamente bezieht dass sich auf Form 2 beruht.

Dort habe ich Medikamente und stärke der Kopfschmerzen in einer Tabelle abgelegt.

In Form 1 sollte eigentlich nur ein Raster bestehen aus dem ich die Datenbank fürttere
wie Wie Stark habe ich Kopfschmerzen und welche Medikamente habe ich genommen.
Ich habe das mal in ein Raster Format 1/4 Stunde gepackt und so umgesetzt.

Natürlich ist das Raster 1/4 nur sehr grob aber das ist eigentlich egal. Es geht darum dass
ich den Tag Liste sowie die Zeit und "die Tabelle Medikation"

Ich hoffe ich bin etwas Realistischer geworden mit meiner Erläuterung.

Dein Vorschlag mit einer Komponente Tag & "Medikation" & Zeit finde ich genial Reduziert alles.
Dann könnte ich sogar feiner als 1/4 Stunde verarbeiten. Mal gleich einbauen und anschauen.

Es grüsst

Chris

--------------------------------------------------
ZippyUploader(24.01.2016 11-34-38).txt
--------------------------------------------------
Migraene Kalender.rar
http://www64.zippyshare.com/v/hpSTeCwn/file.html

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Migräne Tagebuch

Beitrag von af0815 »

lycaner hat geschrieben:...
Ich hoffe ich bin etwas Realistischer geworden mit meiner Erläuterung.

Dein Vorschlag mit einer Komponente Tag & "Medikation" & Zeit finde ich genial Reduziert alles.
Dann könnte ich sogar feiner als 1/4 Stunde verarbeiten. Mal gleich einbauen und anschauen.

Die Frage ist eher welche Rasterung ist sinnvoll. Kopfschmerzen und Migräne kommen meiner Erfahrung nach nicht Minütlich, Auch 1/4 Std. sind da schon recht fein. Auch die meisten mir bekannten Medikamente brauchen zumindest 20-30 min um zu wirken.

Die Schmerztabellen die ich kenne, haben einer Unterteilung des Tages in etwa: Nacht, Vormittag, Mittag, Nachmittag, Abend, Nacht und einer Schmerzskala von 1-10. Dazu eine tägliche Liste von verwendeten Medikamenten.

Vor allen, wie willst du das eingeben (lassen)? Wenn du jede 1/4 Stunde des Tages bewerten willst, ist das am 3. Tag frustrierend.

Zu den Daten:
Einerseits führst du eine Tabelle (LIste) wo du Den Schmerz in Dauer (1/4 Std weise) und Intensität angibst. Weiters eine Tabelle die das oder die Medikamente angibt in Einnahmezeitpunkt und Dosierung.
Ist das soweit richtig ?


Edit: Kannst du mal das Projekt sinnvoll bereinigen. Das ganze externe gedröns ist für die Katz. So kann man es nicht kompilieren (ohne 5 unnötige Pakete zu installieren) und sogar beim Auspacken sind bei mir schon die Pfade zu lange. Die ganzen PDF, Logger etc. kannst später einfügen, aber nicht jetzt schon als unnötigen Ballast.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten