Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   in Comboboxen datensätze einfügen (https://www.delphipraxis.net/152396-comboboxen-datensaetze-einfuegen.html)

arcon 21. Jun 2010 13:35

AW: in Comboboxen datensätze einfügen
 
ich habe jetzt folgenden kompletten code ...

Delphi-Quellcode:
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;
aber nun bringt er mir eine zugriffsverletzung .. weiß jemand rein zufällig, woran es liegen könnte ?

DeddyH 21. Jun 2010 13:38

AW: in Comboboxen datensätze einfügen
 
Was soll den das Execute bewirken? Ist das wieder so eine ADO-Spezialität?

mkinzler 21. Jun 2010 13:41

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;

DeddyH 21. Jun 2010 13:46

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;

arcon 21. Jun 2010 13:48

AW: in Comboboxen datensätze einfügen
 
Delphi-Quellcode:
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;
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 ..

und das sql(execute) hängt damit zusammen dass er mir den befehl der in SQL steht auch ausführt.

mkinzler 21. Jun 2010 13:49

AW: in Comboboxen datensätze einfügen
 
Delphi-Quellcode:
    if (adoConn.Connected) then
    adoConn.Close;
muss natürlich aus der Schleife raus

DeddyH 21. Jun 2010 13:52

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:

Delphi-Quellcode:
while not AdoQuery.eof do
begin
    Combobox1.Items.Add(AdoQuery.FieldByName('Description').AsString);
    AdoQuery.Next;
    if (adoConn.Connected) then
    adoConn.Close; //hier
end;

Außerdem gibst Du die Query nicht wieder frei. Hast Du meinen Code einmal versucht?

arcon 21. Jun 2010 13:54

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;

DeddyH 21. Jun 2010 13:56

AW: in Comboboxen datensätze einfügen
 
Zitat:

Zitat von arcon (Beitrag 1030649)
und danke an m.kanzler :)

Markus Merkel? :mrgreen: :duck:

mkinzler 21. Jun 2010 13:58

AW: in Comboboxen datensätze einfügen
 
Und Datlef H ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:01 Uhr.
Seite 2 von 3     12 3      

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