[gelöst] DBGrid und Integer
-
- Beiträge: 4
- Registriert: Mo 26. Nov 2012, 10:37
[gelöst] DBGrid und Integer
Hallo,
ich bin neu hier bei Lazarus und bin auf ein Problem gestossen, was ich nicht so ganz verstehe.
Ich habe eine SQLite-Tabelle, die ich in einem DBGrid bearbeiten möchte, als Datenbankverbindung benutze ich ZEOS.
Die Tabelle besteht aus folgenden Feldern:
feld1 : varchar(3)
feld2 : varchar(1)
feld3 : integer
feld4 : varchar(30)
Die Felder werden auch alle wunderbar mit Ihren Werten angezeigt, jedoch habe ich beim Bearbeiten bei dem Integer-Feld nur die Möglichkeit eine Ziffer einzugeben.
Was mache ich falsch? Oder handelt es sich hier um einen Fehler?
Würde mich über Hilfe sehr freuen.
Volker
ich bin neu hier bei Lazarus und bin auf ein Problem gestossen, was ich nicht so ganz verstehe.
Ich habe eine SQLite-Tabelle, die ich in einem DBGrid bearbeiten möchte, als Datenbankverbindung benutze ich ZEOS.
Die Tabelle besteht aus folgenden Feldern:
feld1 : varchar(3)
feld2 : varchar(1)
feld3 : integer
feld4 : varchar(30)
Die Felder werden auch alle wunderbar mit Ihren Werten angezeigt, jedoch habe ich beim Bearbeiten bei dem Integer-Feld nur die Möglichkeit eine Ziffer einzugeben.
Was mache ich falsch? Oder handelt es sich hier um einen Fehler?
Würde mich über Hilfe sehr freuen.
Volker
Zuletzt geändert von php_Teufel am Di 26. Feb 2013, 10:20, insgesamt 1-mal geändert.
Re: DBGrid und Integer
Ein integer-Feld stellt eine Zahl dar, was außer Ziffern möchtest du denn dort eingeben?
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2805
- 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: DBGrid und Integer
Naja, vermutlich möchte er mehr als EINE Ziffer eingeben. Was bei einem Integer-Feld durchaus ein vernünftiger Wunsch ist. 

Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
Re: DBGrid und Integer
und woran scheitert das? 

- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2805
- 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: DBGrid und Integer
Das ist die Frage, dazu müsste sich der OP mal äußern.
- Kommt eine Fehlermeldung?
- Erlaubt das Feld nur die Eingabe eines Zeichens?
- Erlaubt es die Eingabe mehrerer, aber nur die letzte/erste Stelle wird gespeichert?
- ...
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
Re: DBGrid und Integer
...ich bin auch ein "Neuling", meines Wissens kümmert sich SQLite recht wenig um den Datentyp eines Feldes. Aber lies mal das:
http://www.ruhrtaler-softwareschmiede.d ... n-erzeugen
Speicherklassen
Beachtenswert ist, dass in dem Beispiel die einzige Spalte mit unterschiedlichen Datentypen gefüllt wird. SQLite verhält sich hier wie eine typenlose Sprache, z.B. JavaScript. Beim Anlegen der Tabelle wurde letztlich für die Spalte auch gar kein Datentyp explizit angegeben. Die Spalte nimmt stets den Datentyp entsprechend der literalen Repräsentation ihres aktuellen Wertes an. Einmal ist sie eine Zahl und dann wieder ein String usw. Aber selbst wenn man einen Datentyp für die Spalte explizit festgelegt hätte, z.B. "integer", könnte man noch immer beliebige Werte in die Spalte eingeben, also insbesondere auch einen String.
Entscheidend ist also vielmehr, wie Du die Daten dann im Programm weiter verarbeitest.
Provokant ausgedrückt: Erstmal alles Textfelder - und dann im selber geschriebenen Programm "alles richtig machen"
Gruß
Aliobaba
http://www.ruhrtaler-softwareschmiede.d ... n-erzeugen
Speicherklassen
Beachtenswert ist, dass in dem Beispiel die einzige Spalte mit unterschiedlichen Datentypen gefüllt wird. SQLite verhält sich hier wie eine typenlose Sprache, z.B. JavaScript. Beim Anlegen der Tabelle wurde letztlich für die Spalte auch gar kein Datentyp explizit angegeben. Die Spalte nimmt stets den Datentyp entsprechend der literalen Repräsentation ihres aktuellen Wertes an. Einmal ist sie eine Zahl und dann wieder ein String usw. Aber selbst wenn man einen Datentyp für die Spalte explizit festgelegt hätte, z.B. "integer", könnte man noch immer beliebige Werte in die Spalte eingeben, also insbesondere auch einen String.
Entscheidend ist also vielmehr, wie Du die Daten dann im Programm weiter verarbeitest.
Provokant ausgedrückt: Erstmal alles Textfelder - und dann im selber geschriebenen Programm "alles richtig machen"


Gruß
Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )
-
- Lazarusforum e. V.
- Beiträge: 3177
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: DBGrid und Integer
Der Punkt "im Programm weiter verarbeiten" ist bereits das DBGrid. Nach Meiner Meinung sollte bereits die Schnittstelle die für jede Seite der Schnittstelle richtigen/am besten geeigneten Datentypen verwenden. Das sind ist in diesem Falle die SQLite-API, die von ZEOS verwendet wird. Damit hier die richtigen verwendet werden, muss in allen Lazarus-Komponenten korrekte Einstellungen gegeben sein (die hier die ZEOS-Profis verraten können).Aliobaba hat geschrieben:Entscheidend ist also vielmehr, wie Du die Daten dann im Programm weiter verarbeitest.
Soviel zur Datenbanktheorie. Auch ein Anwendungsentwickler wird es einfacher haben, wenn die Daten in der ersten Normalform vorliegen. Diese sehe ich bei falschen Datentypen als verletzt an.Aliobaba hat geschrieben:Provokant ausgedrückt: Erstmal alles Textfelder - und dann im selber geschriebenen Programm "alles richtig machen"![]()
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 4
- Registriert: Mo 26. Nov 2012, 10:37
Re: DBGrid und Integer
Irgendwie hat es sich auf einmal erledigt, ich weiß nicht wieso aber es funktioniert. 
