DBGrid: Spalte hinzufügen

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.

DBGrid: Spalte hinzufügen

Beitragvon Aliobaba » 20. Dez 2014, 10:12 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. :cry:

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
Mein Lazarus-Lieblingsprojekt: "MyMemoryDB" ( http://www.mymemorydb.n-bay.de/ )
Aliobaba
 
Beiträge: 328
Registriert: 1. Mai 2012, 08:11

Beitragvon Michl » 20. Dez 2014, 13:25 Re: DBGrid: Spalte hinzufügen

Aliobaba hat geschrieben:Nun wollte ich in eine vorhandene DBGrid eine weitere Spalte einfügen, was mir trotz vieler Versuche einfach nicht gelingen mag. :cry:
Was meinst Du denn genau damit?

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; 
Michl
 
Beiträge: 2258
Registriert: 19. Jun 2012, 11:54
OS, Lazarus, FPC: Win7 Laz 1.7 Trunk FPC 3.1.1 Trunk | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon Aliobaba » 20. Dez 2014, 14:17 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 :oops: : 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
Mein Lazarus-Lieblingsprojekt: "MyMemoryDB" ( http://www.mymemorydb.n-bay.de/ )
Aliobaba
 
Beiträge: 328
Registriert: 1. Mai 2012, 08:11

Beitragvon Aliobaba » 20. Dez 2014, 14:25 Re: DBGrid: Spalte hinzufügen

:idea: ... jetzt bin ich möglicherweise soeben selber drauf gekommen: :idea:
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.

... :roll: :?: :|

Ist dieses Programmverhalten Absicht?

Aliobaba
Mein Lazarus-Lieblingsprojekt: "MyMemoryDB" ( http://www.mymemorydb.n-bay.de/ )
Aliobaba
 
Beiträge: 328
Registriert: 1. Mai 2012, 08:11

Beitragvon Aliobaba » 20. Dez 2014, 14:30 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
Mein Lazarus-Lieblingsprojekt: "MyMemoryDB" ( http://www.mymemorydb.n-bay.de/ )
Aliobaba
 
Beiträge: 328
Registriert: 1. Mai 2012, 08:11

Beitragvon Soner » 20. Dez 2014, 17:11 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.
Soner
 
Beiträge: 411
Registriert: 26. Sep 2012, 23:07
Wohnort: Hamburg
OS, Lazarus, FPC: Win7Pro-32Bit, Immer letzte Lazarus Release mit SVN-Fixes | 
CPU-Target: 32Bit
Nach oben

Beitragvon Aliobaba » 21. Dez 2014, 09:36 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:
Spalten_alter_Eintrag.png

Ein völlig neu erstellter DB_Grid, der mit denselben Parametern verbunden ist wie der "alte" DB_Grid sieht so aus:
Spalten_neuer_Eintrag.png

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.
Spalten_neuer_Eintrag1.png


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 :cry: 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"?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Mein Lazarus-Lieblingsprojekt: "MyMemoryDB" ( http://www.mymemorydb.n-bay.de/ )
Aliobaba
 
Beiträge: 328
Registriert: 1. Mai 2012, 08:11

Beitragvon Aliobaba » 21. Dez 2014, 13:09 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
Zuletzt geändert von Aliobaba am 21. Dez 2014, 14:49, insgesamt 1-mal geändert.
Mein Lazarus-Lieblingsprojekt: "MyMemoryDB" ( http://www.mymemorydb.n-bay.de/ )
Aliobaba
 
Beiträge: 328
Registriert: 1. Mai 2012, 08:11

Beitragvon Aliobaba » 21. Dez 2014, 14:44 Re: DBGrid: Spalte hinzufügen

:idea: ... 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ß
:oops: (und eigentlich auch ganz logisch) :oops:

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
Mein Lazarus-Lieblingsprojekt: "MyMemoryDB" ( http://www.mymemorydb.n-bay.de/ )
Aliobaba
 
Beiträge: 328
Registriert: 1. Mai 2012, 08:11

Beitragvon Soner » 22. Dez 2014, 09:44 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.
Soner
 
Beiträge: 411
Registriert: 26. Sep 2012, 23:07
Wohnort: Hamburg
OS, Lazarus, FPC: Win7Pro-32Bit, Immer letzte Lazarus Release mit SVN-Fixes | 
CPU-Target: 32Bit
Nach oben

• Themenende •

Zurück zu Datenbanken



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

porpoises-institution
accuracy-worried