DBGrid: Spalte hinzufügen
DBGrid: Spalte hinzufügen
Hallo,
schon lange arbeite ich mit einem selbstgemachten Programm, das sowohl unter Linux als auch unter Windows problemlos funktioniert.
Nun wollte ich in eine vorhandene DBGrid eine weitere Spalte einfügen, was mir trotz vieler Versuche einfach nicht gelingen mag.
Die Datenbank ist verbunden (Design Connection), alles funktioniert, Daten werden im Designmodus korrekt angezeigt. Aber wenn ich versuche, in die Grid-Anzeige eine neue Spalte einzufügen (rechte Maustaste: "Spalten bearbeiten") und auf "Hinzufügen" klicke, dann wird stets eine Spalte mit Namen "Title" eingetragen, die in der Datenbank gar nicht vorkommt. Die in der Datenbank hinterlegten Spalten werden nicht zur Auswahl angeboten.
Woran kann das liegen, Was mache ich falsch?
Aliobaba
Datenbank: SQLite
Zeos-Komponenten
Lazarus version 1.2.4
schon lange arbeite ich mit einem selbstgemachten Programm, das sowohl unter Linux als auch unter Windows problemlos funktioniert.
Nun wollte ich in eine vorhandene DBGrid eine weitere Spalte einfügen, was mir trotz vieler Versuche einfach nicht gelingen mag.
Die Datenbank ist verbunden (Design Connection), alles funktioniert, Daten werden im Designmodus korrekt angezeigt. Aber wenn ich versuche, in die Grid-Anzeige eine neue Spalte einzufügen (rechte Maustaste: "Spalten bearbeiten") und auf "Hinzufügen" klicke, dann wird stets eine Spalte mit Namen "Title" eingetragen, die in der Datenbank gar nicht vorkommt. Die in der Datenbank hinterlegten Spalten werden nicht zur Auswahl angeboten.
Woran kann das liegen, Was mache ich falsch?
Aliobaba
Datenbank: SQLite
Zeos-Komponenten
Lazarus version 1.2.4
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )
Re: DBGrid: Spalte hinzufügen
Was meinst Du denn genau damit?Aliobaba hat geschrieben:Nun wollte ich in eine vorhandene DBGrid eine weitere Spalte einfügen, was mir trotz vieler Versuche einfach nicht gelingen mag.
z.B. könntest Du:
Eine weitere Spalte aus der selben Tabelle -> Dein "Select" entsprechend aktualisieren z.B. "SELECT spalte1, spalte2, neuespalte FROM mytable..."
Eine Spalte einer anderen Tabelle aus der Datenbank -> Dein "Select" entsprechend mittels "JOIN" anpassen
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
Re: DBGrid: Spalte hinzufügen
Sorry, Michl, dass ich mich nicht klar genug ausgedrückt habe.
In der Datenbank selbst sind alle Datenfelder (Sorry, der Ausdruck war falsch, ich meinte die "Spalten"), die ich brauche vorhanden und ich kann diese Spalten, alle Felder und Datensätze auch zur Laufzeit ansprechen, verändern und mit SQL-Statements bearbeiten wie ich möchte.
Mein Problem ist viel trivialer : Auf der Entwickleroberfläche (Programmoberfläche von Lazarus / auf dem Formular ) würde ich gerne dem "DBGrid" eine Spalte hinzufügen und nur sichtbar machen. In der in der Datenbank selbst ist diese Spalte schon enthaltenen; sie "funktioniert" zur Laufzeit problemlos.
Wenn man in das DBGrid-Feld rechtsklckt, dann erscheint als Menüpunkt (ganz oben) der Eintrag "Spalten bearbeiten" und wenn man diesen Menüpunkt anklickt, dann erscheint das Fenster: "Bearbeitung DB_Grid_bearbeiten.Columns". und wenn man da auf "hinzufügen" klickt (kleines Feld mit einem "+" drin), dann erhalte ich eben NICHT die Auswahl aller Spalten, die in der SQLite-Datenbankdatei vorhanden sind, sondern es wird immer nur die Spalte "Title" hinzugefügt. Gerne würde ich aber das DB_Grid Feld um eine in der Datenbank schon vorhandene Spalte erweitern.
Und ich krieg das einfach nicht hin, obwohl die Datenbank mit dem DB_Grid-Feld - wie mir scheint - ordnungsgemäß verbunden ist.
... ist jetzt wieder etwas "umständlich" erklärt, aber vielleicht trotzdem ein bissl besser.
Aliobaba
In der Datenbank selbst sind alle Datenfelder (Sorry, der Ausdruck war falsch, ich meinte die "Spalten"), die ich brauche vorhanden und ich kann diese Spalten, alle Felder und Datensätze auch zur Laufzeit ansprechen, verändern und mit SQL-Statements bearbeiten wie ich möchte.
Mein Problem ist viel trivialer : Auf der Entwickleroberfläche (Programmoberfläche von Lazarus / auf dem Formular ) würde ich gerne dem "DBGrid" eine Spalte hinzufügen und nur sichtbar machen. In der in der Datenbank selbst ist diese Spalte schon enthaltenen; sie "funktioniert" zur Laufzeit problemlos.
Wenn man in das DBGrid-Feld rechtsklckt, dann erscheint als Menüpunkt (ganz oben) der Eintrag "Spalten bearbeiten" und wenn man diesen Menüpunkt anklickt, dann erscheint das Fenster: "Bearbeitung DB_Grid_bearbeiten.Columns". und wenn man da auf "hinzufügen" klickt (kleines Feld mit einem "+" drin), dann erhalte ich eben NICHT die Auswahl aller Spalten, die in der SQLite-Datenbankdatei vorhanden sind, sondern es wird immer nur die Spalte "Title" hinzugefügt. Gerne würde ich aber das DB_Grid Feld um eine in der Datenbank schon vorhandene Spalte erweitern.
Und ich krieg das einfach nicht hin, obwohl die Datenbank mit dem DB_Grid-Feld - wie mir scheint - ordnungsgemäß verbunden ist.
... ist jetzt wieder etwas "umständlich" erklärt, aber vielleicht trotzdem ein bissl besser.
Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )
Re: DBGrid: Spalte hinzufügen
... jetzt bin ich möglicherweise soeben selber drauf gekommen:
Man muss erstmal ALLE vorgegebenen Spalten (ALLE!!) erstmal entfernen, dann erscheinen wieder ALLE in der Datenbank enthaltenen Spalten in der DB_Grid angezeigt - und dann muss man die Spalten wieder aus dem DB_Grid nehmen, die man in diesem DB_Grid-Feld nicht braucht.
...
Ist dieses Programmverhalten Absicht?
Aliobaba
Man muss erstmal ALLE vorgegebenen Spalten (ALLE!!) erstmal entfernen, dann erscheinen wieder ALLE in der Datenbank enthaltenen Spalten in der DB_Grid angezeigt - und dann muss man die Spalten wieder aus dem DB_Grid nehmen, die man in diesem DB_Grid-Feld nicht braucht.
...
Ist dieses Programmverhalten Absicht?
Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )
Re: DBGrid: Spalte hinzufügen
... nee, geht auch leider nicht: Die Spalten erscheinen zwar alle, aber in dem Fenster, das nach dem Anwählen von "Spalten bearbeiten" erscheint, werden die enthaltenen Spalten nicht zum Löschen angeboten und wenn man auf "Hinzufügen" klickt (das Feld mit dem '+'), verschwinden die Bezeichnungen der Spalten wieder aus diesem Fenster wieder und als alleiniger Eintrag wird wieder "Title" eingetragen
Aliobaba
Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )
-
- Beiträge: 623
- Registriert: Do 27. Sep 2012, 00:07
- OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
- CPU-Target: x86_64-win64
- Wohnort: Hamburg
Re: DBGrid: Spalte hinzufügen
Dann musst du nochmal mit der rechten Maustaste auf DBGrid klicken, und aus dem Menü "Spalten bearbeiten" wählen.
Es erscheint Spalteneditor, du wählst dann die Spalte die du bearbeiten willst und änderst du im Objektinspektor "FieldName"-Eigenschaft. Hier kannst du Spalten verstecken, Titel ändern, usw.
Beachte, wenn der Feldname den du willst in Fieldname-Eigenschaft nicht vorkommt, dann musst du entweder dein SQL-Anweisung aktualisieren oder Datenbank einmal trennen und neu verbinden.
Es erscheint Spalteneditor, du wählst dann die Spalte die du bearbeiten willst und änderst du im Objektinspektor "FieldName"-Eigenschaft. Hier kannst du Spalten verstecken, Titel ändern, usw.
Beachte, wenn der Feldname den du willst in Fieldname-Eigenschaft nicht vorkommt, dann musst du entweder dein SQL-Anweisung aktualisieren oder Datenbank einmal trennen und neu verbinden.
Re: DBGrid: Spalte hinzufügen
Danke Soner,
das funktioniert leider trotzdem nicht.
Die Datenbank ist ordentlich verbunden. (Hab die auch getrennt und erneut verbunden, was nichts geholfen hat).
Das sieht man an einem DB_Grid, das schon länger existiert:
Ein völlig neu erstellter DB_Grid, der mit denselben Parametern verbunden ist wie der "alte" DB_Grid sieht so aus:
Sobald man auf "Hinzufügen" ("+") klickt, "leert" sich das neue DB_Grid und die Spalte "Title" erscheint, wobei es aber diese Spalte Title in der hinterlegten SQLite-Datenbankdatei gar nicht gibt.
Was mache ich falsch??
Aliobaba
(Ich musste das auf eine Windows-Oberfläche demonstrieren (VirtualBox), da ich im Rahmen meiner Fehlersuche mein Lazarus unter Linux updaten wollte, was mir absolut nicht gelingen will Wie immer: Wenn was nicht klappt, dann so richtig!
Ich kriege einfach diesen Fehler, den man beim Start gemeldet bekommt, nicht weg:
Directory: /home/ali/.lazarus/bin/
Warning: directory lcl not found
... aber das ist ja ein weiteres Problem, das sicherlich in einen neuen Thread gehört, falls ich im Lauf der nächsten Stunden den Fehler nicht finde.
... oder hat jemand hier den ultimaiven "schnellen Tip am Rande"?
das funktioniert leider trotzdem nicht.
Die Datenbank ist ordentlich verbunden. (Hab die auch getrennt und erneut verbunden, was nichts geholfen hat).
Das sieht man an einem DB_Grid, das schon länger existiert:
Ein völlig neu erstellter DB_Grid, der mit denselben Parametern verbunden ist wie der "alte" DB_Grid sieht so aus:
Sobald man auf "Hinzufügen" ("+") klickt, "leert" sich das neue DB_Grid und die Spalte "Title" erscheint, wobei es aber diese Spalte Title in der hinterlegten SQLite-Datenbankdatei gar nicht gibt.
Was mache ich falsch??
Aliobaba
(Ich musste das auf eine Windows-Oberfläche demonstrieren (VirtualBox), da ich im Rahmen meiner Fehlersuche mein Lazarus unter Linux updaten wollte, was mir absolut nicht gelingen will Wie immer: Wenn was nicht klappt, dann so richtig!
Ich kriege einfach diesen Fehler, den man beim Start gemeldet bekommt, nicht weg:
Directory: /home/ali/.lazarus/bin/
Warning: directory lcl not found
... aber das ist ja ein weiteres Problem, das sicherlich in einen neuen Thread gehört, falls ich im Lauf der nächsten Stunden den Fehler nicht finde.
... oder hat jemand hier den ultimaiven "schnellen Tip am Rande"?
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )
Re: DBGrid: Spalte hinzufügen
Hallo,
das "Installationsproblem" konnte ich lösen.
Nach dem Entfernen der alten Lazarus-Pakete musste noch manuell das gesamte Verzeichnis * ~/.lazarus gelöscht werden.
Dann funktioniert das Installieren. (Vielleicht haben ja auch andere dieses Problem und dieser Zusatz hilft dann)
Aliobaba
das "Installationsproblem" konnte ich lösen.
Nach dem Entfernen der alten Lazarus-Pakete musste noch manuell das gesamte Verzeichnis * ~/.lazarus gelöscht werden.
Dann funktioniert das Installieren. (Vielleicht haben ja auch andere dieses Problem und dieser Zusatz hilft dann)
Aliobaba
Zuletzt geändert von Aliobaba am So 21. Dez 2014, 14:49, insgesamt 1-mal geändert.
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )
Re: DBGrid: Spalte hinzufügen
... so, und das ursprüngliche Problem konnte ich auch noch lösen
Der Spalte "Title", die erscheint, muss man gesondert in einem zweiten Schritt eine Spalte der hinterlegten Datenbank zuordnen und im Objekt-Inspektor den Eintrag "FieldName" richtig zuteilen.
Wie immer: Ganz einfach, wenn man's weiß
(und eigentlich auch ganz logisch)
Und wenn dann das Feld eine "Memo"-Feld ist und man immer noch nicht's sieht: Liebe Lazarus-Neulinge: auch das hat mich schon mal einen Tag gekostet; Euch soll's besser gehen: viewtopic.php?f=55&t=5987&p=54710&
Aliobaba
Der Spalte "Title", die erscheint, muss man gesondert in einem zweiten Schritt eine Spalte der hinterlegten Datenbank zuordnen und im Objekt-Inspektor den Eintrag "FieldName" richtig zuteilen.
Wie immer: Ganz einfach, wenn man's weiß
(und eigentlich auch ganz logisch)
Und wenn dann das Feld eine "Memo"-Feld ist und man immer noch nicht's sieht: Liebe Lazarus-Neulinge: auch das hat mich schon mal einen Tag gekostet; Euch soll's besser gehen: viewtopic.php?f=55&t=5987&p=54710&
Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )
-
- Beiträge: 623
- Registriert: Do 27. Sep 2012, 00:07
- OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
- CPU-Target: x86_64-win64
- Wohnort: Hamburg
Re: DBGrid: Spalte hinzufügen
Mann muss immer dran denken, dass Lazarus Anhand der Datenfelder von TDataSource automatisch Spalten hinzufügt, solange man selber nichts hinzufügt. Sobald man selber eine Spalte hinzufügt werden automatisch erstellte gelöscht.