Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Daten von DBLookUpListBox in ComboBox übernehmen (https://www.delphipraxis.net/7110-daten-von-dblookuplistbox-combobox-uebernehmen.html)

Hansa 5. Aug 2003 20:17

Re: Daten von DBLookUpListBox in ComboBox übernehmen
 
Hier ist vielleicht was:

Delphi-Quellcode:
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.
So in der Richtung müßte es gehen. Mit FIBplus geht es jedenfalls.

Matze 6. Aug 2003 08:03

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

Hansa 6. Aug 2003 08:51

Re: Daten von DBLookUpListBox in ComboBox übernehmen
 
Zitat:

Zitat von Matze
Das ist nett, dass du mir das geschrieben hast...

Träumst wohl von Hollywood. :lol: Laß das DBgrid eben weg und schreibe StringGrid1 usw.

Matze 6. Aug 2003 08:55

Re: Daten von DBLookUpListBox in ComboBox übernehmen
 
Zitat:

Zitat von Hansa
Laß das DBgrid eben weg und schreibe StringGrid1 usw.

Ich benutze gar kein...Grid!!! :mrgreen:

MrSpock 6. Aug 2003 17:46

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.

Matze 7. Aug 2003 09:02

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

MrSpock 7. Aug 2003 10:59

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:
if Table1.FindKey([Edit1.Text]) then
  { Name gefunden }
else
   { Name nicht gefunden }
Aber auch die locate Anweisung muss funktionieren.

Matze 7. Aug 2003 11:20

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:
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;
Gruß Matze

Matze 7. Aug 2003 12:48

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:
Form3.Table1.Locate('Name',Combobox2.text,[LoCaseInsensitive]);
durch diese:

Code:
Form3.Table1.Locate('Name',Combobox2.text,[]);
ersetzt.

Mal so nebenbei: Was bedeutet eigentlch das in den eckigen Klammern??

Gruß Matze

MrSpock 7. Aug 2003 21:52

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 17:02 Uhr.
Seite 3 von 3     123   

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