AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DBComboBox

Ein Thema von needatip · begonnen am 31. Okt 2005 · letzter Beitrag vom 1. Nov 2005
Antwort Antwort
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#1

DBComboBox

  Alt 31. Okt 2005, 16:37
Datenbank: SQL Server • Zugriff über: ADO
Habe Probleme beim Speichern von DBComboBox Einträgen.
Ich möchte die Einträge von DBComboBox.Items auswählen, die dann in der Table1 abgespeichert werden.
Wie schaffe ich es nun ohne einen zusätzlichen Button, dass beim Auswählen der DBComboBox die entspr. Einträge gespeichert werden und der User nicht unabsichtlich die Formulardaten ändern kann - also mit DS1.Autoedit := false beim OnActivate Ereignis des Formulars.

DS1.AutoEdit := true;
..dann Auswahl mit der DBComboBox tätigen...
DS1.AutoEdit := false;

Welche Ereignisse muss ich nun benutzen ?
(Hab momentan den Kopf nicht frei)
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: DBComboBox

  Alt 31. Okt 2005, 16:46
Wenn der Benutzer seine Auswahl in der DBComboBox getroffen hat, dann erfährst du das im Ereignis OnChange() der Komponente.

Grüße vom marabu
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: DBComboBox

  Alt 31. Okt 2005, 17:46
Ok, hab mich vielleicht nicht richtig ausgedrückt.
Ich habe im OnChange-Ereignis nur:
Table1.Post drinstehen. Wenn ich dann woanders im Formular klicke bekomme ich die Fehlermeldung, dass die Datenmenge weder im Editier noch Einfügemodus ist.
  Mit Zitat antworten Zitat
JohannesK

Registriert seit: 17. Jul 2003
Ort: Abtwil
118 Beiträge
 
Delphi 2010 Professional
 
#4

Re: DBComboBox

  Alt 31. Okt 2005, 18:00
Du solltest die Tabellezeile vollständig bearbeiten:

table1.edit;
table1.fieldbyname('dfdf').asstring := dblookup.lookupvalue;
table1.post;
mit freundlichem Gruss

So einfach wie möglich. Aber nicht einfacher.
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: DBComboBox

  Alt 31. Okt 2005, 18:12
Das ist eine DBComboBox.
Etwa so
table1.edit;
table1.fieldbyname('dfdf').asstring := dbcomboBox1.items.text; (oder so)
table1.post;

Ich hab gedacht das macht die ComboBox Komponente automatisch !
Ist heute einfach nicht mein Tag.
  Mit Zitat antworten Zitat
JohannesK

Registriert seit: 17. Jul 2003
Ort: Abtwil
118 Beiträge
 
Delphi 2010 Professional
 
#6

Re: DBComboBox

  Alt 31. Okt 2005, 18:44
Sorry, ich bin von einer normalen combobox ausgegangen.

Eine dbcombobox macht das automatisch, dann brauchst Du aber auch kein post, daher kommt die Fehlermeldung.
mit freundlichem Gruss

So einfach wie möglich. Aber nicht einfacher.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: DBComboBox

  Alt 31. Okt 2005, 19:35
Hallo needatip,

Zitat von needatip:
Ich habe im OnChange-Ereignis nur Table1.Post drinstehen. Wenn ich dann woanders im Formular klicke bekomme ich die Fehlermeldung, dass die Datenmenge weder im Editier noch Einfügemodus ist.
das ist verständlich. Durch den Wechsel des Satzzeigers verliert die Table ihren Edit-Status. Anschließend wird das Ereignis OnChange gefeuert, weil ja der Wert aus einem anderen Datensatz angenommen wird. Das erneute Post() wirft dann eine Exception.

Ich habe jetzt länger darüber nachgedacht, was deine eigentliche Anforderung sein könnte und bin immer noch nicht sicher, ob ich es weiß. Möchtest du vielleicht, dass eine Änderung am Datensatz grundsätzlich und ohne Zutun des Benutzers gespeichert wird? Das erreichst du vielleicht am ehesten im BeforeCancel Ereignis des DataSets - allerdings zu dem Preis, dass der Benutzer keine Änderungen mehr verhindern kann.

Ein Wort zur Eigenschaft AutoEdit - jede datensensitive Komponente schaltet ihren DataSet in den Edit-Modus, wenn der Benutzer den Inhalt verändert. AutoEdit sorgt dafür, dass der Edit-Modus eingeschaltet wird, noch bevor eine Änderung gemacht wird. Ist das wirklich, was du willst oder war da Verzweiflung im Spiel?

marabu
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: DBComboBox

  Alt 1. Nov 2005, 07:24
Ja du hast recht.
Ich hab jetzt das Post aus dem OnChange Ereignis genommen und dann einen Button zum posten eingesetzt.
Jetzt funktionierts.
Danke.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#9

Re: DBComboBox

  Alt 1. Nov 2005, 07:49
Hai needatip,

hast Du schon einmal darüber nachgedacht anstelle der DBComboBox eine "normale" ComboBox zu verwenden?
Ich finde die DBxxxx Komponenten in der Regel zu unflexibel und versuche diese, wo immer es geht, zu vermeiden.

In einer TComboBox könntest Du ja zum Beispiel im Delphi-Referenz durchsuchenOnChange prüfen ob der Anwender einen neuen Eintrag ausgewählt hat und diesen dann mit einem Query in die Tabelle schreiben.

Delphi-Quellcode:
  old_CBValue: string;

procedure TForm1.cb_TestChange(Sender: TObject);
var
  cur_CBValue: string;
begin
  cur_CBValue := cb_Test.Items[cb_test.ItemIndex];
  if (old_CBValue <> cur_CBValue) then
  begin
    // Speichere cur_CBValue in der Tabelle
    old_CBValue := cur_CBValue;
  end;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: DBComboBox

  Alt 1. Nov 2005, 09:47
Ok, diese Version gefällt mir sehr gut.
Werde diese gleich mal probieren.
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:50 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