Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi SQL query (https://www.delphipraxis.net/154826-sql-query.html)

p80286 27. Sep 2010 17:16

AW: SQL query
 
Zitat:

Zitat von value is NULL (Beitrag 1052357)
das prinzip verstehe ich nicht

wieso sieht der query so aus:
Delphi-Quellcode:
query.sql.text:='select count(*) as Meinwert from mytable';
bzw. warum dieses zeile?
Delphi-Quellcode:
meinWert:=query.fieldbyname('Meinwert').asinteger;
ich will ja nur einen Wert oder ein count absetzen wie zB:
select count(*) from tbuser oder
select username from tbuser

LG

hiermit definierst Du nur die Abfrage:
Code:
query.sql.text:='select count(*) as Meinwert from mytable';
in diesem speziellen falle wird wohl nur ein wert zurück geliefert werden, und zwar die Anzahl der Zeilen/Datensätze in "Meinwert".

Mit
Code:
meinWert:=query.fieldbyname('Meinwert').asinteger;
wird aus einer Antwortzeile das Feld "Meinwert" ausgelesen und in meinwert gespeichert.

vielleicht wird es so etwas klarer:
Delphi-Quellcode:
var
  NamensListe : tstringlist;
...
Namensliste:=tstringlist.create;
...
query.close;
query.sql.text:='select Name as Famname from mytable'; // Definition der Query
query.open;                                            // Ausführen der Query
while not query.eof do begin                           // Solange es Daten gibt
  Namensliste.add(query.fieldbyname('Famname').asinteger); // in Liste speichern
  query.next;                                          // nächster Datensatz
end;
query.close;                                           // schließen!
Dann erhällst Du als Ergebnis eine Stringliste, in der alle Namen enthalten sind.

Gruß
K-H

GHorn 28. Sep 2010 07:08

AW: SQL query
 
In #19 schreibst Du 3 Funktionen, die jeweils als Rückgabewert
einen String haben sollen. Allerdings passiert da nichts. Nirgendwo ein
Delphi-Quellcode:
 Result := 'Blabla'
Dann kannst Du auch gleich eine procedure draus machen. Oder
Du gibst etwas sinnvolles zurück, was in der aufrufenden Routine auch verwertet wird.

Wie universell sollen denn Deine Funktionen sein. Dienen sie nur
dazu, das count(*) zurückzugeben oder soll das eine Art Blackbox
werden? Wenn letzteres, musst Du das Ganze noch etwas aufbohren.
Ich denke, Beispiele findest Du hier in der DP bis zum Abwinken.

value is NULL 28. Sep 2010 07:42

AW: SQL query
 
Hi Data

habe die function soeben probiert, bekomme aber ständig: "Field 'wert' not found" zurück

was will er da von mir?

LG und DANKE!

PS: P80286 Danke für die Erklärung, es ist nun wesentlich deutlicher !

DeddyH 28. Sep 2010 08:01

AW: SQL query
 
Hast Du in der Abfrage auch einen Alias namens "wert" vergeben?

DataCool 28. Sep 2010 08:22

AW: SQL query
 
Zitat:

Zitat von value is NULL (Beitrag 1052530)
Hi Data

habe die function soeben probiert, bekomme aber ständig: "Field 'wert' not found" zurück

was will er da von mir?

LG und DANKE!

PS: P80286 Danke für die Erklärung, es ist nun wesentlich deutlicher !

Hi,

das Feld 'Wert' in der von mir geschriebenen Function war nur als Platzhalter gedacht !
Wenn Du z. B. einen SQL hast: "Select Count(*) as Anz from tablenname"
dann müßte in meiner function 'Wert' mit 'Anz' ersetzt werden,
also der Name des gesuchten Feldes den Du auslesen möchtest.

Greetz Data

value is NULL 28. Sep 2010 08:33

AW: SQL query
 
hm, und was sagt mir das jetzt? :(
steh gerade an

LG

DeddyH 28. Sep 2010 08:46

AW: SQL query
 
Ohne Alias:
Delphi-Quellcode:
Query.SQL.Text := 'SELECT COUNT(*) FROM Tabelle';
Query.Open;
IntVar := Query.Fields[0].AsInteger;
Mit Alias:
Delphi-Quellcode:
Query.SQL.Text := 'SELECT COUNT(*) AS Anzahl FROM Tabelle';
Query.Open;
IntVar := Query.FieldByName('Anzahl').AsInteger;
Im letzteren Fall kannst Du über FieldByName über das benannte Feld zugreifen.

value is NULL 28. Sep 2010 11:16

AW: SQL query
 
cool :)

so hats geklappt :)

Delphi-Quellcode:

function query(sQuerySQL : string) : string;

begin
oTmpQry := TADOQuery.Create(nil);
try
  try
    oTmpQry.Connection := Conn;
    oTmpQry.SQL.Text := sQuerySQL;
    oTmpQry.Active := True;
    result := oTmpQry.Fields[0].asString;
  except
    on e : exception do begin
      writeln(e.message);
      halt(1);
    end;
  end;
Finally
  oTmpQry.free;
end;
end;
ich danke euch VIELMAS!!!!

LG


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:19 Uhr.
Seite 3 von 3     123   

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