![]() |
Datenbank: ms sql • Version: 2003 • Zugriff über: Inat OPC , Ethernet
in Comboboxen datensätze einfügen
hallo miteinander ..
und zwar möchte ich gerne die werte einer bestimmten spalte aus einer tabelle in eine combobox übertragen. dazu habe ich auch schon gegoogelt .. und den folgenden quellcode gefunden gehabt ..
Delphi-Quellcode:
Meine Frage latet nun, was ich bei FieldByName und bei Feld2 eintragen muss, so dass ich das oben beschriebene problem lösen kann !?!
procedure TForm1.ComboBox1onclick(Sender: TObject);
var adoConn : TAdoConnection; SQL : String; begin adoConn := TADOConnection.Create(Self); adoConn.ConnectionString := 'Provider=SQLOLEDB.1;Integrated ........; try if (not adoConn.Connected) then adoConn.Open; SQL := 'Select Description From Watch_Settings'; while not eof do begin Combobox1.Items.Add(FieldByName('Feld2').AsString); end; adoConn.Execute(SQL); if (adoConn.Connected) then adoConn.Close; finally if Assigned(adoConn) then FreeAndNil(adoConn); end; end; danke für eure mithilfe ! |
AW: in Comboboxen datensätze einfügen
Merkwürdiger Code. Du durchläufst eine Ergebnismenge, die Du im Anschluss erst öffnen willst :gruebel:. Es müsste dann aber (bei korrigierter Reihenfolge) FieldByName('Description').AsString heißen.
|
AW: in Comboboxen datensätze einfügen
Es fehlt irgendwie eien Query/DataSet-Kompo. Zudem fehlt ein .Next in der Schleife
|
AW: in Comboboxen datensätze einfügen
hallo,
laut quelltext wird sich erst zum server verbunden .. anschließend übergebe ich dem SQL-String die select anweisung ... in der ich die spalte Description aus der tabelle watch settings auswähle und möchte anschließend die gefundenen strings in die combobox einfügen. aber leider meckert er mir " fieldbyname " und "asstring " an .. undeklarierte bezeichner .. ich würde sie ja gerne deklarieren, wenn man nur wüsste, wofür man sie benötigt .. damit ich weiß, welchen wert ich diesen variablen zuweisen muss .. (laut quellcode würde ich sie als string definieren ) |
AW: in Comboboxen datensätze einfügen
ich möchte es ohne diverse dateset oder datasource oder list-komponenten durchführen ..
einfach nur durch den quellcode .. aber das stellt sich schwieriger raus, als gedacht ... |
AW: in Comboboxen datensätze einfügen
Delphi-Quellcode:
SQL := 'Select Description From Watch_Settings';
AdoQuery.SQL.Text := SQL; AdoQuery.Open; while not AdoQuery.eof do begin Combobox1.Items.Add(AdoQuery.FieldByName('Feld2').AsString); AdoQuery.Next; end; |
AW: in Comboboxen datensätze einfügen
Da fehlt aber noch ein Open ;)
|
AW: in Comboboxen datensätze einfügen
meine ursprüngliche frage wurde aber noch nicht beantwortet ..
für was das "fieldbyname" steht ? da fehlt ein Open ->
Code:
adoConn.Open;
|
AW: in Comboboxen datensätze einfügen
FieldByName -> Feld nach Namen (anstatt Index im Fields-Array)
|
AW: in Comboboxen datensätze einfügen
Das .Open fehlt beim Query
|
AW: in Comboboxen datensätze einfügen
ich habe jetzt folgenden kompletten code ...
Delphi-Quellcode:
aber nun bringt er mir eine zugriffsverletzung .. weiß jemand rein zufällig, woran es liegen könnte ?
procedure TForm1.ComboBox1onclick(Sender: TObject);
var adoConn : TAdoConnection; SQL : String; ADOQuery : TADOQuery; begin adoConn := TADOConnection.Create(Self); adoConn.ConnectionString := 'Provider=SQLOLEDB.1;Integrated .....'; try if (not adoConn.Connected) then adoConn.Open; SQL := 'Select Description From Watch_Settings'; ADOQuery.SQL.Text := SQL; ADOQuery.Open; while not AdoQuery.eof do begin Combobox1.Items.Add(AdoQuery.FieldByName('Description').AsString); AdoQuery.Next; end; adoConn.Execute(SQL); if (adoConn.Connected) then adoConn.Close; finally if Assigned(adoConn) then FreeAndNil(adoConn); end; end; |
AW: in Comboboxen datensätze einfügen
Was soll den das Execute bewirken? Ist das wieder so eine ADO-Spezialität?
|
AW: in Comboboxen datensätze einfügen
Du musst den Query noch instantiieren und die Connection zuweisen
Delphi-Quellcode:
adoQuery := TadoQuery.Create(Self);
AdoQuery.Connection := AdoConn; |
AW: in Comboboxen datensätze einfügen
Und jetzt im Ganzen (ich hoffe, ich habe nichts vergessen):
Delphi-Quellcode:
procedure TForm1.ComboBox1onclick(Sender: TObject);
var adoConn : TAdoConnection; SQL : String; ADOQuery : TADOQuery; begin adoConn := TADOConnection.Create(nil); try adoConn.ConnectionString := 'Provider=SQLOLEDB.1;Integrated .....'; if (not adoConn.Connected) then adoConn.Open; SQL := 'Select Description From Watch_Settings'; ADOQuery := TADOQuery.Create(nil); try ADOQuery.Connection := adoConn; ADOQuery.SQL.Text := SQL; ADOQuery.Open; while not AdoQuery.eof do begin Combobox1.Items.Add(AdoQuery.FieldByName('Description').AsString); AdoQuery.Next; end; finally ADOQuery.Free; end; //adoConn.Execute(SQL); if (adoConn.Connected) then adoConn.Close; finally // if Assigned(adoConn) then FreeAndNil(adoConn); end; end; |
AW: in Comboboxen datensätze einfügen
Delphi-Quellcode:
ich habs jetzt so hinbekommen .. aber das problem ist, dass er mir nur den ersten datensatz anzeigt .. und nicht alle datensätze .. das hängt denke ich mal noch mit der next.schleife zusammen ..
procedure TForm1.ComboBox1onclick(Sender: TObject);
var adoConn : TAdoConnection; SQL : String; ADOQuery : TADOQuery; begin adoConn := TADOConnection.Create(Self); adoConn.ConnectionString := 'Provider=SQLOLEDB.1;Integrated ......'; adoQuery := TadoQuery.Create(Self); AdoQuery.Connection := AdoConn; try if (not adoConn.Connected) then adoConn.Open; SQL := 'Select Description From Watch_Settings'; adoConn.Execute(SQL); ADOQuery.SQL.Text := SQL; ADOQuery.Open; while not AdoQuery.eof do begin Combobox1.Items.Add(AdoQuery.FieldByName('Description').AsString); AdoQuery.Next; if (adoConn.Connected) then adoConn.Close; end; finally if Assigned(adoConn) then FreeAndNil(adoConn); end; end; und das sql(execute) hängt damit zusammen dass er mir den befehl der in SQL steht auch ausführt. |
AW: in Comboboxen datensätze einfügen
Delphi-Quellcode:
muss natürlich aus der Schleife raus
if (adoConn.Connected) then
adoConn.Close; |
AW: in Comboboxen datensätze einfügen
Dafür ist das ADOQuery.Open da. Aber wenn Du nach dem ersten Datensatz die Verbindung schließt, kann ja auch nur ein Datensatz zurückkommen.
Zitat:
|
AW: in Comboboxen datensätze einfügen
danke deddyH .. für den quelltext .. funktioniert wunderbar
und danke an mkinzler :) problem behoben .. hier die finalle ausgabe des quellcodes für leute, die auch das selbe problem haben, wie ich ..
Delphi-Quellcode:
procedure TForm1.ComboBox1onclick(Sender: TObject);
var adoConn : TAdoConnection; SQL : String; ADOQuery : TADOQuery; begin combobox1.Clear; adoConn := TADOConnection.Create(nil); try adoConn.ConnectionString := 'Provider=SQLOLEDB.1;Integrated .......'; if (not adoConn.Connected) then adoConn.Open; SQL := 'Select Description From Watch_Settings'; ADOQuery := TADOQuery.Create(nil); try ADOQuery.Connection := adoConn; ADOQuery.SQL.Text := SQL; ADOQuery.Open; while not AdoQuery.eof do begin Combobox1.Items.Add(AdoQuery.FieldByName('Description').AsString); AdoQuery.Next; end; finally ADOQuery.Free; end; if (adoConn.Connected) then adoConn.Close; finally // if Assigned(adoConn) then FreeAndNil(adoConn); end; end; |
AW: in Comboboxen datensätze einfügen
Zitat:
|
AW: in Comboboxen datensätze einfügen
Und Datlef H ;)
|
AW: in Comboboxen datensätze einfügen
:lol:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:18 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