![]() |
Datenbank: Access • Version: 2000 • Zugriff über: ODBC
SQL-Abfrage: Alle Werte aus einer Spalte
Hi, ich möchte mit einer Abfrage alle Werte einer Spalte ausgeben die eine bestimmte Bedingung erfüllen. Bis jetzt mache ich das so:
Delphi-Quellcode:
Das Problem ist aber, das ich hier nicht alle Ergebnisse geliefet bekomme sonder nur eins (es müsste aber mehrere sein). Weiß jemand was ich verändern muss um alle Werte die diese Abfrage als Ergbnis ausgibt bekomme. Wäre nett wenn mir jemand helfen könnte. MfG DF.A
select Feldname from Meta_Daten where Datenbankname = :SpeichernDatenbankname and Tabellenname = :SpeichernTabellenname
|
Re: SQL-Abfrage: Alle Werte aus einer Spalte
kA was dieser ":" macht, wenn es sowas wie 'like "%foobar%"' iss? dann mus danach vllt noch son ":"
|
Re: SQL-Abfrage: Alle Werte aus einer Spalte
Lässt du dir das Ergebnis in einem DBGrid anzeigen?
@barf00s: Das sind die Doppelpunkte vor einem Parameter. Die habe nnichts mit "like" zu tun. |
Re: SQL-Abfrage: Alle Werte aus einer Spalte
ahso
|
Re: SQL-Abfrage: Alle Werte aus einer Spalte
Ich lasse mir über nen String in nem Memo anzeigen. Es wird immer nur der letzte passenden Wert ausgegeben.
|
Re: SQL-Abfrage: Alle Werte aus einer Spalte
Ich hasse diese Raterei.
Machst du das etwa so:
Delphi-Quellcode:
Ansonsten zeig doch mal ein bisschen Source.
while not query1.eof do
begin memo1.text := query1.fieldbyname('feldname').asstring; query1.next; end; |
Re: SQL-Abfrage: Alle Werte aus einer Spalte
ok, also so mach ichs
Delphi-Quellcode:
in der Abfrage steht halt das besagte SQL-Statement.
Datenbankname := edtDatenbankname.Text;
Tabellenname := edtTabellenname.Text; qry_Speichern.ParamByName('SpeichernDatenbankname').AsString := Datenbankname; qry_Speichern.ParamByName('SpeichernTabellenname').AsString := Tabellenname; qry_Speichern.ExecSQL; qry_Speichern.Close; with qry_Speichern do begin open; while not eof do begin str := ''; for j := 0 to Fields.Count -1 do begin str := str + ';' + Fields[j].AsString; end; next; end; dbMetaDaten.Close; dbMetaDaten.Open; end; Memo1.Text := str; |
Re: SQL-Abfrage: Alle Werte aus einer Spalte
Hallo,
Zitat:
Daraus folgt: Im Resultset kann nur ein Wert existieren mfg wo |
Re: SQL-Abfrage: Alle Werte aus einer Spalte
Zitat:
|
Re: SQL-Abfrage: Alle Werte aus einer Spalte
Mit Deiner Fields-Schleife sprichst Du die alle einzelnen Spalten an. Du willst aber nur eine Spalte haben:
Delphi-Quellcode:
In Deinem ersten Beispiel ist Deine Schleife dennoch korrekt, da Du ja nur eine Spalte abfragst. Da Du aber explizit nach allen Werten aus einer Spalte gefragt hast, dachte ich, es zumindest Deinem Wortlaut nach zu erwähnen. :wink:
str := str + ';' + Fields[0].AsString;
Ausserdem löschst Du Deine String-Variable str in jedem Zeilendurchlauf, ohne damit irgendetwas getan zu haben. So iterierst Du korrekt über alle Zeilen und ermittelst alle Werte der Spalte 0:
Delphi-Quellcode:
while not qrySpeichern.Eof do
begin str := str + ';' + qrySpeichern.Fields[0].AsString; qrySpeichern.Next; end; |
Re: SQL-Abfrage: Alle Werte aus einer Spalte
Einmal komplett:
Delphi-Quellcode:
Und "str" ist nicht gut als Variable, weil es eine gleichlautende Funktion in Delphi gibt.
qry_Speichern.Close;
qry_Speichern.ParamByName('SpeichernDatenbankname').AsString := edtDatenbankname.Text; qry_Speichern.ParamByName('SpeichernTabellenname').AsString := edtTabellenname.Text; with qry_Speichern do begin open; str := ''; while not eof do begin str := str + ';' + Fields[0].AsString; next; end; if length(str) > 0 then delete(str,1,1); dbMetaDaten.Close; dbMetaDaten.Open; end; Memo1.Text := str; |
Re: SQL-Abfrage: Alle Werte aus einer Spalte
ähm, ich glaube ich habe vielleicht irgendwie das problem nicht ganz richtig erklärt. Also Datenbankname ist ein Feld in einer Tabelle (Tabellenname auch). Ich möchte jetzt auf diese Werte den Wert in einem anderen Feld nachfragen. Da die Kombination zwischen Datenbankname und Tabellenname aber öfters vorkommt gibt es dazu mehrer Feldnamen (auch ein Feld in der Tabelle). Ich möchte alle Feldnamen die zu der Kombination von Tabellenname und Datenbanknamen passt ausgegeben bekommen und nicht nur den letzten Wert.
|
Re: SQL-Abfrage: Alle Werte aus einer Spalte
Dann must du den Code von Jasocul so umbauen:
Delphi-Quellcode:
mfg
qry_Speichern.Close;
qry_Speichern.ParamByName('SpeichernDatenbankname').AsString := edtDatenbankname.Text; qry_Speichern.ParamByName('SpeichernTabellenname').AsString := edtTabellenname.Text; with qry_Speichern do begin open; Memo1.clear; while not eof do begin Memo1.Lines.add(FieldByName('feldname').asString; next; end; dbMetaDaten.Open; end; wo |
Re: SQL-Abfrage: Alle Werte aus einer Spalte
ok, habs jetzt endlich hingekrieg. ziemlich blöde fehler. vielen dank für eure tipps :-)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:43 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 by Thomas Breitkreuz