AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

dbComboBox - MySQL - MyDac

Ein Thema von Sidi61 · begonnen am 19. Aug 2014 · letzter Beitrag vom 23. Aug 2014
Antwort Antwort
Sidi61

Registriert seit: 13. Jun 2006
97 Beiträge
 
Delphi XE5 Professional
 
#1

dbComboBox - MySQL - MyDac

  Alt 19. Aug 2014, 20:24
Hallo zusammen,

Ich verwende die MyDac Komponente um auf eine MySQL Datenbank zuzugreifen.

Ich habe eine dbComboBox als Ersatz für ein dbEdit eingebaut. Wenn ich nun mit dem dbNavigator die Datensätze durchgehe, wird in der dbComboBox nicht immer der Feldinhalt angezeigt hingegen im dbEdit schon. Ich habe schon alle möglichen Einstellungen der dbComboBox versucht, kann aber den Fehler nicht beseitigen. Der Feldinhalt wird ganz kurz angezeigt und verschwindet dann

Um eine saubere Anzeige zu bekommen, habe ich in der dbNavigator1click procedure den Feldinhalt explizit zugewiesen
Code:
dbcombobox.text := myQuery1.FieldByName('pruefer').AsString;
Das ist jedoch nicht schön.

Kennt jemand das Problem und weiß eine Lösung??

Gruß
Sidi
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#2

AW: dbComboBox - MySQL - MyDac

  Alt 20. Aug 2014, 00:23
Keine Ahnung, ich hatte noch nie eine DBComboBox im Einsatz und eben zum ersten Mal getestet. Der Feldinhalt wird bei mir einwandfrei angezeigt, Inhalte der ItemList werden einwandfrei zugewiesen, sobald sie ausgewählt wurden. Vermutlich möchtest du in der TDBComboBox eine gewisse Anzahl Benutzereingaben "sammeln", damit der Anwender gleiche Texte nicht immer wieder von Neuem eingeben muß?

Hast du denn auch Datasource und DataField einwandfrei zugewiesen und sind in der betreffenden Spalte auch Werte enthalten? Bedeutet "nicht immer", daß manchmal doch ein Feldinhalt angezeigt wird? Vielleicht hast du auch irgendwie problematische Feldinhalte? Ich kann mir dieses Fehlverhalten nicht wirklich erklären, arbeite aber auch nicht mit MySQL, sondern mit Firebird und den IbDac-Komponenten.

Um eine saubere Anzeige zu bekommen, habe ich in der dbNavigator1click procedure den Feldinhalt explizit zugewiesen
Code:
dbcombobox.text := myQuery1.FieldByName('pruefer').AsString;
Das solltest du vielleicht noch einmal überdenken. Ich würde, wenn überhaupt, im AfterScroll-Event des Datasets ein Ereignis an das Formular senden, das die Darstellung des Tabelleninhalts übernimmt. Damit deckst du alle Eventualitäten ab, denn es könnte grundsätzlich sein, daß deine Tabelle auch von anderer Stelle aus gescrollt wird und nicht nur vom DB-Navigator, z.B. beim Aktivieren des Datasets, beim Locate oder wenn es sich um eine Subtabelle handelt, die mit einer Haupttabelle via ForeignKey verbunden ist usw.
Miniaturansicht angehängter Grafiken
tdbcombobox.jpg  

Geändert von Perlsau (20. Aug 2014 um 00:31 Uhr)
  Mit Zitat antworten Zitat
Sidi61

Registriert seit: 13. Jun 2006
97 Beiträge
 
Delphi XE5 Professional
 
#3

AW: dbComboBox - MySQL - MyDac

  Alt 20. Aug 2014, 17:58
habe das eben mal versucht und die Anweisung

Code:
dbcombobox.text := myQuery1.FieldByName('pruefer').AsString;
in die myQuery1.afterscroll geschrieben, die Anzeige des Datenfeldes funktioniert dann leider nicht zuverlässig. Nur wenn ich es in die dbNavigatorclick für nbfirst, nbprior, nbnext, nblast schreibe, habe ich eine zuverlässige Anzeige - weiß der Geier warum.

Lasse ich parallel ein dbEdit mit laufen, wird im dbEdit immer zuverlässig der Feldwert angezeigt - im Combo nicht

Nachtrag: bin ich auf einem Datensatz bei dem der Feldinhalt in der Combo nicht angezeigt wird (explizite Zuweisung deaktiviert) und klicke dann auf edit im Navigator, erscheint der Feldinhalt auch in der Combo.

Gruß
Sidi

Geändert von Sidi61 (20. Aug 2014 um 18:03 Uhr)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#4

AW: dbComboBox - MySQL - MyDac

  Alt 21. Aug 2014, 00:57
Da scheint einiges im Argen zu sein bei dir. Wird denn die AfterScroll-Procedure auch ausgeführt (Breakpoint setzen)? Bei mir hat die Anzeige des Feldinhalts im Textfeld der DBComboBox auf Anhieb funktioniert. Mehr kann ich dir dazu nicht sagen, weil ich nicht mehr weiß: Man kann ja von hier aus nicht erkennen, was du da sonst noch so treibst in deinem Programm
  Mit Zitat antworten Zitat
Sidi61

Registriert seit: 13. Jun 2006
97 Beiträge
 
Delphi XE5 Professional
 
#5

AW: dbComboBox - MySQL - MyDac

  Alt 21. Aug 2014, 18:29
Hallo,

ja, afterscroll wird durchlaufen und zwar vor dbNavigator.click jedoch nach dem verschwinden des Eintrags (hatte ja weiter oben beschrieben dass der Eintrag kurz sichtbar ist - ein millisecündchen)

Ist sicher wieder eine dumme Einstellung auf die ich noch nicht gekommen bin, dbGrid funktioniert auch nicht mit den Default Einstellungen sondern erst nach Korrektur von dgEditing, dgRowSelect und dgCancelOnExit.

Vielleicht komme ich ja irgend wann mal drauf
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#6

AW: dbComboBox - MySQL - MyDac

  Alt 21. Aug 2014, 22:33
Hast du die DB-Komponenten auf derselben Form wie die datensensitiven Komponenten? Normalerweise verwendet man für ersteres ein Datenmodul und erzeugt dann Ereignisse, auf die die datensensitiven Komponenten in den Formularen reagieren können.

Zeig doch bitte mal den Code in AfterScroll
  Mit Zitat antworten Zitat
Sidi61

Registriert seit: 13. Jun 2006
97 Beiträge
 
Delphi XE5 Professional
 
#7

AW: dbComboBox - MySQL - MyDac

  Alt 22. Aug 2014, 19:26
Habe einfach mal den Code in der Afterscroll auskommentiert, das Problem bleibt bestehen
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#8

AW: dbComboBox - MySQL - MyDac

  Alt 23. Aug 2014, 08:46
Sorry, aber ohne Code und ohne Antworten auf meine Nachfragen kann ich dir nicht helfen. Wie sollte die Entfernung des Codes aus AfterScroll was an deinem Problem ändern? AfterScroll wird nach dem Scrollen der Datenmenge ausgeführt. Verwendet man im Hauptformular nicht-datensensitive Komponenten zur Darstellung der Datenmenge, benötigt man ein Ereignis, das die Anzeige aktualisiert. Du machst das bisher mit dem Klick-Ereignis deiner DB-Navigator-Komponente. Dabei wird die Anzeige bei jedem Klick aktualisiert, auch wenn sie gar nicht aktualisiert werden muß, weil nämlich nicht jeder Klick auf den DB-Navigator ein Scroll-Ereignis auslöst. Deshalb empfahl ich dir, das Ereignis im AfterScroll auszulösen (im Datenmodul, wo sich hoffentlich deine Datenbank-Komponenten befinden) und an das Hauptformular zu senden. Obwohl ich bereits um diese Information gebeten hatte, weiß ich noch immer nicht, ob deine DB-Komponenten auf dem Hauptformular liegen oder in einem Datenmodul. Ich weiß im Grunde gar nichts über dein Projekt und kann dir daher auch nicht sagen, was da schiefläuft. Offenbar ist dein Code so geheim, daß du ihn hier nicht darstellen darfst. Tja, das ist Pech ... Ich möchte dir nicht weiter alles aus der Nase ziehen müssen. Schönen Tag noch ...
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz