Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   TADO Query (https://www.delphipraxis.net/160247-tado-query.html)

value is NULL 4. Mai 2011 13:28

TADO Query
 
Hey Leutz

habe folgende function:

Delphi-Quellcode:
function query(sQuerySQL : string) : string;

begin
oTmpQry := TADOQuery.Create(nil);
try
  try
    oTmpQry.Connection := Conn;
    oTmpQry.CommandTimeout := 5000;
    oTmpQry.SQL.Text := sQuerySQL;
    oTmpQry.Active := True;
    result := oTmpQry.Fields[0].asString;
  except
    on e : exception do begin
      assert := e.message;
      Writeln(assert);
      halt(1);
    end;
  end;
Finally
  oTmpQry.free;
end;
end;
die funktioniert auch sehr gut, ABER nur bei results die einen wert betragen also zb. Select count(*) from TABLE
Jetzt will ich mir aber alle ergebnisse in eine TStringlist laden. wie sollte ich hier vorgehen?

ich schätze mal das es hier result := oTmpQry.Fields[0].asString; eine andere Möglichkeit gibt?!

LG

DonManfred 4. Mai 2011 13:40

AW: TADO Query
 
Zitat:

Zitat von value is NULL (Beitrag 1098839)
Delphi-Quellcode:
function query(sQuerySQL : string) : string;

begin
oTmpQry := TADOQuery.Create(nil);
try
  try
    oTmpQry.Connection := Conn;
    oTmpQry.CommandTimeout := 5000;
    oTmpQry.SQL.Text := sQuerySQL;
    oTmpQry.Active := True;
    result := oTmpQry.Fields[0].asString;
  except
    on e : exception do begin
      assert := e.message;
      Writeln(assert);
      halt(1);
    end;
  end;
Finally
  oTmpQry.free;
end;
end;

Delphi-Quellcode:
oTmpQry.Active := True;
if oTmpQry.RecordCount > 0 then begin
  oTmpQry.First;
  while not oTmpQry.eof do begin
    wert := oTmpQry.Fields[0].asString;
    // oder
    wert := oTmpQry.FieldByName['feldname'].asString;
    // mach was mit wert ...

    // nächsten Datensatz holen
    oTmpQry.Next;
  end;
end;
so ungefähr!? Oder meinstest Du was anderes?

value is NULL 4. Mai 2011 14:09

AW: TADO Query
 
naja das ich praktisch als Result eine TStringlist bekomme ist mein ziel

Delphi-Quellcode:
function query(sQuerySQL : string) : string;
var
 sl : TStringlist;
begin
oTmpQry := TADOQuery.Create(nil);
try
  try
    oTmpQry.Connection := Conn;
    oTmpQry.CommandTimeout := 5000;
    oTmpQry.SQL.Text := sQuerySQL;
    oTmpQry.Active := True;
    if oTmpQry.RecordCount > 0 then begin
       oTmpQry.First;
       while not oTmpQry.eof do begin
             sl.add[oTmpQry.Fields[0].asString];
             oTmpQry.Next;
       end;
    end;
except
    on e : exception do begin
      assert := e.message;
      Writeln(assert);
      halt(1);
    end;
  end;
Finally
  oTmpQry.free;
end;
end;
so müsste das glaube ich rein theoretisch gehen, aber wie ordne ich dem result die stringlist (in dem fall sl) zu?

LG

DeddyH 4. Mai 2011 14:15

AW: TADO Query
 
Du kannst einer Stringliste kein Dataset zuweisen, sondern nur die Liste aus den Daten des Dataset befüllen, und das machst Du ja jetzt.

value is NULL 4. Mai 2011 14:18

AW: TADO Query
 
hm ok, wieder klüger geworden,
aber kann ich die jetzt verwendet stringlist als result übergeben? habe es so versucht:

Delphi-Quellcode:
function query(sQuerySQL : string) : TStringlist;
var
 sl : TStringlist;
begin
oTmpQry := TADOQuery.Create(nil);
try
  try
    oTmpQry.Connection := Conn;
    oTmpQry.CommandTimeout := 5000;
    oTmpQry.SQL.Text := sQuerySQL;
    oTmpQry.Active := True;
    if oTmpQry.RecordCount > 0 then begin
       oTmpQry.First;
       while not oTmpQry.eof do begin
             sl.add[oTmpQry.Fields[0].asString];
             oTmpQry.Next;
       end;
    end;
    result := sl;
except
    on e : exception do begin
      assert := e.message;
      Writeln(assert);
      halt(1);
    end;
  end;
Finally
  oTmpQry.free;
end;
end;

DeddyH 4. Mai 2011 14:25

AW: TADO Query
 
Ungetestet:
Delphi-Quellcode:
procedure DoQuery(const sQuerySQL : string; DestList: TStrings);
begin
  Assert(Assigned(DestList));
  DestList.BeginUpdate;
  try
    DestList.Clear;
    oTmpQry := TADOQuery.Create(nil);
    try
      try
        oTmpQry.Connection := Conn;
        oTmpQry.CommandTimeout := 5000;
        oTmpQry.SQL.Text := sQuerySQL;
        oTmpQry.Open;
        while not oTmpQry.eof do begin
          DestList.add(oTmpQry.Fields[0].asString);
          oTmpQry.Next;
        end;
      except
        on e : exception do begin
          Writeln(e.message);
          halt(1);
        end;
      end;
    Finally
      oTmpQry.free;
    end;
  finally
    DestList.EndUpdate;
  end;
end;

value is NULL 4. Mai 2011 14:53

AW: TADO Query
 
so leicht kanns gehen! Funktioniert PRIMA!

Danke schön!

p80286 4. Mai 2011 16:03

AW: TADO Query
 
Frage am Rande:
Warum bei einem nicht visuellen TStrings das BeginUpdate/EndUpdate ?

Gruß
K-H

Bernhard Geyer 4. Mai 2011 16:06

AW: TADO Query
 
Zitat:

Zitat von p80286 (Beitrag 1098865)
Warum bei einem nicht visuellen TStrings das BeginUpdate/EndUpdate ?

Wenn ein Listener dran hängt (OnChange, OnChanging) könnte es trotzdem gebremst werden wenn der Listener was mit der GUI macht.

DeddyH 4. Mai 2011 16:38

AW: TADO Query
 
Außerdem: TMemo.Lines, TListBox.Items, TComboBox.Items... alles TStrings ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 Uhr.
Seite 1 von 2  1 2      

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