Einzelnen Satz, kleiner als, aus einer DB in DataTable (SQL,Visual Basic, WPF)

kaktus7

Grünschnabel
Bin noch Anfänger bei diesem Thema, auch in diesem Forum

Hier das Problem:
Eine SQL DB mit einer Lieferantentabelle
Es gibt z.b 100 Lieferanten mit der Nummer 1 bis 100

Gesuchter Lieferant hat Nummer 70

Ein einzelner Satz wird in Dataset und -table eingelesen.

sql = "Select TOP 1 * FROM LIEF "
sql += "WHERE Liefer = @hinkel"
selectLIEF = New SqlCommand(sql, conn)

Wenn ich den Satz > 70 haben will, klappt das. Lieferant 71 wird angezeigt.
Satz gleich (s.o.) klappt auch.

Wenn ich den Satz < 70 haben will, klappt das nicht. Lieferant 1 wird angezeigt. Er liest wohl auch nicht nur 1 Satz in Dataset/table sondern alle < 70 und positioniert auf dem ersten.

Natürlich kann man die Tabelle umsortieren. In diesem Beispiel kein Problem.
Kann aber bei gößerer Tabelle und schnellem Rückwärtslesen das Tempo arg verlangsamen.

Der CurrenyManager geht bei WPF nicht.

Gibt es eine Möglichkeit einen einzelnen Satz, kleiner als, aus der DB zu holen?:confused:
 
Hallo,

ich denke, du suchst etwas wie:

Visual Basic:
sql = "Select TOP 1 * FROM LIEF "
sql += "WHERE Liefer < @hinkel"
sql+="ORDER BY Liefer ASC"
selectLIEF = New SqlCommand(sql, conn)

Durch dein Select-Statement wird dir immer nur ein Datensatz zurück gegeben ( TOP 1 ), jedoch ist der Lieferant mit der Nummer 1 nunmal der erste Datensatz.

Gruß
Nongs
 
Leider trifft es das nicht.

wenn es 100 sätze gibt, kann ich den ersten der größer als 70 ist finden.

aber nicht den ersten der kleiner ist.

Es scheint wohl so zu sein, daß ALLE Sätze größer als 70 gelesen/geladen werden und der erste (also 71) angezeigt wird (Top 1). Damit ist mein Wunsch um einen Datensatz weiterzublättern erfüllt.

Wenn ich das ganze mit kleiner mache, scheinen alle Sätze kleiner als 70 gelesen zu werden und davon wird wiederum der erste, also 1, angezeigt wird.

Ich will aber nur den Satz 69 haben. bzw den Satz 57 wenn es von 57 bis 70 nix gibt.
 
Arbeite mit kleiner, sortiere nach der ID absteigend, und nimm denn ersten Eintrag.

Wenns absteigend sortiert ist, bekommst ja die IDs in zum Beispiel dieser Reihenfolge: 67, 66, 65, 64,..

Der erste Eintrag dieser Liste wäre nun der mit der ID 67.

Visual Basic:
sql = "Select TOP 1 * FROM LIEF "
sql += "WHERE Liefer < @hinkel"
sql+="ORDER BY Liefer DESC"

lg,..
 
Hi,

ja, das ist es natürlich!

Warum verwechsel ich immer ASC und DESC. -_-

Alexanders Lösung sollte funktionieren.

Gruß
Nongs
 
... oder gibt es vielleicht eine Möglichkeit, zu erzwingen dass nur ein (1) Satz aus der Datenbank geholt wird?
Mit entsprechendem Select würde das dann ja klappen.

Vielleicht ist diese Frage etwas naiv, aber wie gesagt bin ich Anfänger.
 
Im Buch von Kofler:
Visual Basic 2008

steht auf Seite 1035; Kapitel 25.6 im Absatz METADATEN ZUM SELECT-ERGEBNIS:

"Wie ich bereits erwähnt habe, bit es aber keine Eigenschaft oder Methode, um die Anzahl der Ergebnisdatensätze festzustellen"

Wenn dem so ist, kann ich das Ergebnis wohl auch nicht auf 1 Satz beschränken.
(des SQL Readers)
 
Zurück