![]() |
Daten von DBLookUpListBox in ComboBox übernehmen
Hi @all!
Ich habe im Forum gestöbert und gegoogelt, aber habe nichts Passendes gefunden. :( Mein Problem: Ich habe Daten in einer Paradox7 Tabelle gespeichert. In einer DBLookUpListBox sehe ich die Namen der Personen. Jetzt möchte ich diese Namen alle einer ComboBox zuweisen (Items). Ich kann keine DBLookUpComboBox verwenden, da ich auch mal Namen eingeben muss, die nicht in der Datenbank vorhanden sind, diese sollen allerdings nicht gespeichert werden. Kann mir jemand helfen? Gruß Matze |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Hi!
Sorry, dass ich gestört habe, ich habe gefunden, was ich haben wollte. :mrgreen: Falls es auch andere interessiert, ![]() Gruß Matze |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Es gibt jetzt doch noch ein Problem (besser gesagt: 2).
1. Ich kann in die DBComboBox nichts eingeben. 2. Wenn ich einen Eintrag der DBComboBox anklicke, dann wird er nicht in das DBComboBox-Feld übertragen. Was mache ich falsch? :cry: |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Hi!
Nach langem Suchen ist es mir gelungen. :D Jedoch habe ich ein neues Problem, was wahrscheinlich sehr einfach zu lösen ist: Ich benutze: Table1, DataSource1, Paradox 7-Datenbank In einer normalen ComboBox werden mir jetzt die Namen aus der Datenbank angezeigt. Wenn ich dort einen Namen auswähle, dann sollten in Edit-Felder die dazugehörigen Daten eingetragen werden. Kann mir jemand sagen, wie das geht?? Gruß Matze |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
schau mal nach locate oder sql
|
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Danke für deine Antwort!
Da finde ich sooooooooo viel, aber ich glaube, das Passende ist nicht dabei. Kannst du mir nicht etwas auf die Sprünge helfen. Das mit dem Datensatz finden kappier ich nicht so richtig und wie ich dann die dazugehörigen Daten bekomme auch nicht. :cry: Gruß Matze |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
zb
Code:
so suchst du den text der combobox in der tabelle
table1.locate('deinFeld',combobox.text[locaseInsensitive,lopartialKey]);
|
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Danke!Könntest du mir vielleicht noch sagen, wie ich das wo einbinden muss und wie ich die dazugehörigen Daten erhalte? Bin noch Anfänger :wink:
|
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Code:
procedure TForm1.combobox1.change(sender: TObject);
begin table1.locate('deinFeld',combobox.text[locaseInsensitive,lopartialKey]); end; |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Danke!
Mein Code sieht jetzt so aus:
Code:
Jetzt kommt aber:
Form3.Table1.locate(ComboBox2.Text,combobox2.text[locaseInsensitive,lopartialKey]);
[Fehler] Formular.pas(332): Undefinierter Bezeichner: 'lopartialKey' [Fehler] Formular.pas(332): Undefinierter Bezeichner: 'locaseInsensitive' [Fehler] Formular.pas(332): Array-Typ erforderlich Gruß Matze |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
1. die units Db und DBTable sind eingebunden?
2. du musst bei locate mit 'deinfeld' das feld angeben in dem gesucht werden soll |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Zitat:
Die Unit DBTable.dcu findet er bei mir nicht! Ohne die kommt die Meldung: [Fehler] Formular.pas(332): Inkompatible Typen: 'Integer' und 'TLocateOption'. Übrigens: Danke, dass du dich so bemühst! |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
ich denke du solltest dich erstmal mit den grundlagen befassen
beschäftige dich mit den mitgelieferten demos \db\ctrlgrid da kannst du sehen wie eine db-app aufgebaut ist |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Danke, ich schau mir das mal an...
|
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Ich verstehe nur Bahnhof *peinlich*
Das sind doch bestimmt nur 2 Zeilen Code oder so. Die eine hast du mir ja schon genannt, da müsste ich nur noch wissen, was ich bei 'dein Feld' eingeben muss. Und die 2. Zeile Code muss die sein, mit der ich die dazugehörigen Daten anzeigen lassen kann, wenn ich auf einen Namen klicke. Man kann es auch so lösen (vielleicht). Ich benutze eine DBLookUpListBox. Kann ich diese fernsteuern, also ich meine: Kann ich, wenn ich z.B. auf einen Button klicke sagen, dass in dieser DBLookUpListBox ein Eintrag ausgewählt wird und ein Mausklick darauf simuliert wird (wie, als ob ichs anklicken würde). @kiar: Falls dir das auf die Nerven gehen sollte, einem Anfänger auf diesem Gebiet zu helfen, dann bin ich dir natürlich nicht böse! :wink: Es gibt ja auch noch andere Forum-Members, die mir vielleicht helfen können. Gruß Matze |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
ich versuche es noch mal
Code:
voraussetzung ist die oben genannten units eingebunden sind.
procedure tForm1.combox1.change(sender :TObject);
begin table1.locate('name',combobox1.text[locaseinsensitive]); edit1.text:=table1.fieldbyname('vorname').asstring; edit2.text:=table1.fieldByname('ort').asstring; end; raik |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Vielen Dank! :mrgreen:
Ich probiere das mal aus und sage dann Bescheid, ob's geklappt hat. Gruß Matze |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Hi kiar!
Bei der 1. Zeile:
Code:
kommt bei mir die Fehlermeldung:
Form3.Table1.locate('Name',Combobox2.text[LoCaseInsensitive]);
Könntest du mir vielleicht noch sagen, woran das liegt, bitte. :D Die anderen beiden Zeilen:
Code:
müssten allerdings funktionieren. :mrgreen: , es kommt zumindest keine Fehlermeldung.
Edit1.Text:=Table1.FieldByHame('Vorname').AsString;
Edit2.Text:=Table1.FieldByName('Ort').AsString; Danke! Gruß Matze |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Nochmals Danke kiar!!
Ich hab den kleinen Fehler gefunden. Es muss so heißen:
Code:
also: es hat nur ein Komma gefehlt.
Form3.Table1.locate('Name',Combobox2.text,[LoCaseInsensitive]);
Gruß Matze. PS: Ich hoffe, der Forum-Start war für dich nicht allzu stressig. :mrgreen: |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Da gibt es noch was... :wink:
Also: Wenn ich die ComboBox2 verändern möchte (OnChange), dann kommt die Fehlermeldung:
Gruß Matze |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Hier ist vielleicht was:
Delphi-Quellcode:
So in der Richtung müßte es gehen. Mit FIBplus geht es jedenfalls.
unit grid;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DBCtrls, DB, FIBDataSet, pFIBDataSet, FIBDatabase, pFIBDatabase, Grids, DBGrids; type TForm1 = class(TForm) DBGrid1: TDBGrid; DataSource1: TDataSource; pFIBDatabase1: TpFIBDatabase; pFIBTransaction1: TpFIBTransaction; pFIBDataSet1: TpFIBDataSet; DataSource2: TDataSource; pFIBDatabase2: TpFIBDatabase; pFIBTransaction2: TpFIBTransaction; pFIBDataSet2: TpFIBDataSet; DBLookupComboBox1: TDBLookupComboBox; procedure FormCreate(Sender: TObject); procedure DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin DBLookUpComboBox1.visible := false; end; procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState); begin if (gdFocused in state) then begin if (Field.FieldName = DBLookupComboBox1.DataField) then begin DBLookUpComboBox1.Left := Rect.Left + DBGrid1.Left; DBLookUpComboBox1.Top := Rect.Top + DBGrid1.Top; DBLookUpComboBox1.Width := Rect.Right - Rect.Left; // DBLookUpComboBox1.Height := Rect.Bottom - Rect.Top; DBLookUpComboBox1.Visible := true; DBLookUpComboBox1.DropDownRows := 5; end; end; end; end. |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Das ist nett, dass du mir das geschrieben hast, aber ich weiß nicht so Recht, was mir das bringen soll. :?: Die Fehlermeldung:
Index nicht mehr gültig. Index: Name kommt immer noch, und außerdem benutze ich gar kein DBGrid. :wink: Gruß Matze |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Zitat:
|
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Zitat:
|
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Hallo Matze,
hat die Tabelle, die das Feld Name enthält, einen Index? Ist dieser Index ausgewählt? Du solltest ggf. mit der Datenbankoberfläche den Index ggf. löschen und neu anlegen. |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Hallo!
In der Datenbankoberfläche ist bei Sekundärindizes 'Name' eingestellt. In der Table1 habe ich bei den 4 Index-Eigenschaften nichts eingestellt. Was muss ich dort einstellen? Gruß Matze |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Hallo Matze,
ich meine, dass Paradox es eigentlich nicht erlaubt, dass ein Feld einer Tabelle und der Name eines (Sekundär)Indexes denselben Namen haben. Benutze einmal die Datenbankoberfläche und lösche den Index auf das Feld "Name". Speichere das Ergebnis und lege anschließend einen neuen Sekundärindex auf das Feld "Name" an, das du z.B. idxName nennst. Wenn du mit locate arbeitest, musst du den Index nicht vorher auswählen. Alternativ kannst du aber bei Table1 die Eigenschaft IndexName auf idxName setzen und anschließend anstatt mit Locate auch mit FindKey suchen:
Delphi-Quellcode:
Aber auch die locate Anweisung muss funktionieren.
if Table1.FindKey([Edit1.Text]) then
{ Name gefunden } else { Name nicht gefunden } |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Also, ich hab das mit dem Index jetzt mal weggelassen. Jetzt ist es bei mir so: Es ist egal, welchen Datensatz ich auswähle, es werden immer nur die Daten vom letzten Datensatz zugeordnet. :evil:
So rufe ich den Datensatz auf:
Code:
Gruß Matze
procedure TForm1.ComboBox2Change(Sender: TObject);
begin try Form3.Table1.Locate('Name',Combobox2.text,[LoCaseInsensitive]); except end; Edit2.text:=Form3.Table1.fieldbyname('Str').asstring; Edit3.text:=Form3.Table1.fieldByname('Ort').asstring; end; |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Hey, sorry, dass ich nochmal geschrieben hab. Jetzt geht es!! :mrgreen: :mrgreen:
Ich hab einfach die Zeile:
Code:
durch diese:
Form3.Table1.Locate('Name',Combobox2.text,[LoCaseInsensitive]);
Code:
ersetzt.
Form3.Table1.Locate('Name',Combobox2.text,[]);
Mal so nebenbei: Was bedeutet eigentlch das in den eckigen Klammern?? Gruß Matze |
Re: Daten von DBLookUpListBox in ComboBox übernehmen
Hallo Matze,
ist schon komisch, dass es mit dieser Änderung funktioniert. Die eckigen Klammern kennzeichnen eine Menge, in diese kannst du grundsätzlich beliebig viele Elemente der zugrundeliegenden Menge (als Teilmenge) aufnehmen; bei locate gibt es nur zwei Elemente. Schau dir in der OH einmal Set of an. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz