08. juli 2003 - 13:43
Der er
26 kommentarer og 1 løsning
DBLookupComboBox virker ikke med BDE/ADO?
Jeg har en DBLookupComboBox som kommer med fejl lige meget om jeg bruger ADOQuery eller en normal Query(BDE) **BDE Når DBLookupComboBox dropper ned så prøver jeg at vælge en af de records den viser, men den bliver bare ved med at stå til den samme record, hvad skyldes dette jeg har ikke problemet med ADO **ADO De første records bliver fyldt fint ind i DBLookupComboBox. men når jeg så brøver at fylde nogle nye i får jeg følgende fejl: "Insufficient key column information for updating or refreshing" Jeg skal bare have en af dem til at virke.....
Annonceindlæg fra Infor
**ADO Kan du forklare nærmere hvordan du 'prøver at fylde nogle nye i'
procedure FyldInd; begin with BDEQuery1 do begin close; SQL.Clear; SQL.Add('select childtypenr, name, quantity'); SQL.Add('from machsparecomb, sparepart'); SQL.Add('where machinenr = ' + QuotedStr(EdProject.Text)); SQL.Add('and childtypenr = typenr'); open; end; with BDEQuery do begin close; SQL.Clear; SQL.Add('select childtypenr, name, quantity'); SQL.Add('from machsparecomb, sparepart'); SQL.Add('where machinenr = ' + QuotedStr(EdProject.Text)); SQL.Add('and childtypenr = typenr'); open; while not EOF do begin SelectedFields.CompChild := FieldByname('childtypenr').AsString; SelectedFields.CompName := FieldByname('name').AsString; CompDBLCB.DataSource := CompDS; CompDBLCB.ListSource := CompDS1; CompDBLCB.DataField := 'childtypenr'; CompDBLCB.KeyField := 'childtypenr'; CompDBLCB.ListField := 'childtypenr;name'; CompDBLCB.DropDown; CompDBLCB.CloseUp(True); Next; end; end; end; Gir det nogen mening...?
BDEQuery står både for ADO og BDE....
Prøv at smide et dataset på din form. sæt lookupcomboboxens Lookuptable til datasetet og skriv din SQL forespørgsel i datasetets commandText, med Edproject.text som parameter. Vælg derefter lookupcomboboxens lookupfield til det felt, som du ønsker at vise i comboboxen.
Hvordan ser dine tabeller ud?
Jeg har nu prøvet det du skrev, men den reagerer på samme måde...
Prøv at slette nedenstående: SelectedFields.CompChild := FieldByname('childtypenr').AsString; SelectedFields.CompName := FieldByname('name').AsString; CompDBLCB.DataField := 'childtypenr'; CompDBLCB.KeyField := 'childtypenr'; CompDBLCB.ListField := 'childtypenr;name'; CompDBLCB.DropDown; CompDBLCB.CloseUp(True);
Det virker ikke heller.. Jeg har prøvet at lave en helt ny koden følger: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, DBTables, DBCtrls, StdCtrls, ADODB, ExtCtrls; type TForm1 = class(TForm) DBLookupComboBox1: TDBLookupComboBox; Query1: TQuery; DataSource1: TDataSource; DataSource2: TDataSource; Query2: TQuery; Edit1: TEdit; Database1: TDatabase; Button2: TButton; Button1: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Close; end; procedure TForm1.Button2Click(Sender: TObject); begin with Query1 do begin close; ParamByName('EdProjekt').AsString := edit1.Text; open; end; with Query2 do begin close; ParamByName('EdProjekt').AsString := edit1.Text; open; end; end; end. **Query.SQL: select childtypenr, name, quantity from machsparecomb, sparepart where machinenr =:EdProjekt and childtypenr = typenr **DBLookupComboBox DataSource = DataSource1 DataField = ChildTypeNr ListSource = DataSource2 KeyField = ChildTypeNr ListField = ChildTypeNr;Name Hvad kan der være galt?
Hvordan ser din database ud??
09. juli 2003 - 13:09
#10
Hvad mener du med hvordan den ser ud?
09. juli 2003 - 13:27
#11
Hvilke felter er der i tabellerne: machsparecomb, sparepart
09. juli 2003 - 13:43
#12
**machsparecomb: MaschineNr <PK, FK1> ChildTypeNr <PK, FK2> Quantity **Sparepart: TypeNr <PK> Name EAN Supplier Price Unit PackSize PriceUpdate DrawPath PicPath Key
09. juli 2003 - 14:05
#13
Ændre din SQL-forespørgsel til: SELECT M.childtypenr, M.quantity, S.name FROM machsparecomb M INNER JOIN sparepart S ON (M.childTypeNr = S.TypeNr) WHERE machinenr =:EdProjekt
09. juli 2003 - 14:06
#14
Oki jeg prøver lige :-)
09. juli 2003 - 14:36
#15
Der er en fejl i SQL strengen som jeg ikke umiddelbart kan finde, har ikke arbejdet særligt meget med INNER Joins..
09. juli 2003 - 14:42
#16
Hvilken fejl får du?
09. juli 2003 - 14:43
#17
du har defineret EdProjekt som parameter?
09. juli 2003 - 14:43
#18
ORA-00933 SQL kommando er ikke korrekt afsluttet
09. juli 2003 - 14:44
#19
Jeg har defineret den
09. juli 2003 - 14:48
#20
Den sidste linie skal være: WHERE M.machinenr =:EdProjekt
09. juli 2003 - 14:50
#21
Jeg får stadig den samme fejl...
09. juli 2003 - 14:56
#22
får du fejlen design eller runtime? Prøv at ændre datasource active til true og tilbage igen til false - får du fejlen der?
09. juli 2003 - 14:58
#23
Ja både der og når jeg kører programmet...
09. juli 2003 - 15:01
#24
Er det en SQL-database, som du bruger.
10. juli 2003 - 07:12
#25
Nej Jeg bruger Oracle
10. juli 2003 - 13:19
#26
Har fået løst problemet.. Jeg fylder følgende i ADOQuery: ADOQuery.SQL = select childtypenr, name, quantity from machsparecomb, sparepart where machinenr = 'xxx' and childtypenr = typenr Så finder den ikke noget men følgende kan blive sat på DBLookupComboBox. **DBLookupComboBox DataSource = DataSource1 DataField = ChildTypeNr ListSource = DataSource2 KeyField = ChildTypeNr ListField = ChildTypeNr;Name Og så virker det :-) men ellers tak for hjælpen
10. juli 2003 - 13:34
#27
Tak selv.
Kurser inden for grundlæggende programmering