Jak chcete dotaz prvních N nebo N % záznamů v jazyka

Překlady článku Překlady článku
ID článku: 168241 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento článek popisuje, použijte predikát TOP vrátit horní N počet záznamů, které splňují podmínky dotazu.

S vydáním Microsoft Access verze 2.0 Predikát TOP byla zavedena v Microsoft Access SQL syntaxi. Visual Basic verze 3.0 samotný nepřijme Predikát TOP přímo, ale je možné použít Predikát TOP s jazyka verze 3.0, pokud používáte stroj Microsoft Jet 2.x dodávaná s Microsoft Access verze 2.0.

Predikát TOP je nyní přijaté syntaxe jazyka verze 4.0 a vyšší.

Další informace

Predikát TOP můžete použít k vrácení první N záznamů, které splňují podmínky dotazu, kde N je číslo menší nebo rovna součtu záznamy vrácené dotazem. Například následující dotaz vrací prvních 10 záznamů v tabulce Tituly:
   SELECT TOP 10 Titles.* FROM Titles;
				
TOP lze použít s klíčové slovo PERCENT vrátit první N % záznamy odpovídající podmínky dotazu, kde je N % mezi 0 % a 100 %. Následující dotaz například vrátí první 10 % všechny záznamy v tabulce Tituly:
   SELECT TOP 10 PERCENT Titles.* FROM Titles;
				
níže text popisuje způsob použití Predikát TOP s různými verzemi formáty jazyka a bude databáze.

Pomocí Predikát TOP v jazyka 3.0 s 1.x bude databáze

Predikát TOP pomocí jazyka verze 3.0 nadpisy, bude nutné Microsoft Access verze 2.0 a Microsoft Jet 2.0/Visual Basic Layer 3.0 Compatibility do jazyka, i když je ve formátu verze 1.x bude cílové databáze.

Jazyka verze 3.0 byla vydána s verze 1.x databáze, takže TOP není přímo podporována. Tento postup je znázorněn podle pokusu o vytvoření querydef pomocí Predikát TOP, jak je znázorněno zde:
   Dim mydb As Database, MyQuery As QueryDef
   Dim Sql$

   Sql$ = "SELECT TOP 10 Titles.* FROM Titles;"
   Set mydb = OpenDatabase("C:\VB\BIBLIO.MDB")
   Set MyQuery = mydb.CreateQueryDef("TopQuery", Sql$)
				
poslední řádek tento ukázkový kód bude generovat následující chybová zpráva:
"Neplatný příkaz SQL: očekáván 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' nebo 'UPDATE"
Tato chybová zpráva dochází, protože jazyka sama se pokouší analyzovat daný objekt CreateQueryDef v kontextu verzi databáze používána syntaxe jazyka SQL. Tato analýza nebo ověření syntaxe SQL však není prováděno při nastavování vlastnost RecordSource ovládací data, Dynaset objekt nebo objekt SnapShot pro databázi 1.x.

Následující kód funguje s jazyka verze 3.0 a databázi Microsoft Access verze 1.x:
   Dim Sql$
   Dim MyDynaset as Dynaset
   Dim MySnapshot as Snapshot
   Sql$ = "SELECT TOP 10 Titles.* FROM Titles;"

   data1.recordSource = Sql$
   ' -or-
   MyDynaset = MyDb.CreateDynaset( Sql$ )
   ' -or-
   MySnapshot = MyDb.CreateSnapshot( Sql$ )
				

Pomocí Predikát TOP jazyka 3.0 s databází aplikace 2.X

Můžete použít Predikát TOP s jazyka verze 3.0 a databází ve formátu Microsoft Access verze 2.x. To zahrnuje použití v rámci:

  • Objektu QueryDef.
  • Objekt Snapshot.
  • Dynaset objekt.
  • Data Control.
Zatímco jazyka samotný stále nerozpozná syntaxe, databázový stroj Microsoft Jet 2.0 převezme analýza a ověření i pro objektu QueryDef. Proto jazyka můžete použít následující kód bez výrobu chybě:
   Dim mydb As Database, MyQuery As QueryDef
   Dim Sql$

   Sql$ = "SELECT TOP 10 Titles.* FROM Titles;"
   Set mydb = OpenDatabase("C:\VB\BIBLIO.MDB")
   Set MyQuery = mydb.CreateQueryDef("TopQuery", Sql$)
				
pomocí predikátu TOP v aplikaci Visual Basic 4.0 + s bude 2.x nebo 3.x

Databáze

Predikát TOP jazyka verze 4.0 + rozpozná jako platné syntaxe SQL. Ačkoli Predikát TOP sám není uveden jako položka indexu v nabídce Nápověda verze 4.0 + jazyka, můžete funkci Najít použít k vytvoření indexu hledání a dotazu na TOP nebo Hledat v tomto tématu:
   ALL predicate
				
Toto téma popisuje správnou syntaxi pro ALL, DISTINCT, DISTINCTROW a TOP predikáty.

Podrobný příklad

Následující příklad ukazuje použití Predikát TOP s Querydef pomocí nové syntaxe pro objekty Microsoft Access Data v rámci jazyka verze 4.0 +:

  1. Spuštění nového projektu v jazyka verze 4.0 +. Jako výchozí je vytvořen formulář Form1.
  2. Vytvořit odkaz 3.x pomocí nabídce Nástroje v aplikaci Visual Basic 4.0 nebo v nabídce Projekt Visual Basic 5.0 a vyšší knihovna objektů Microsoft DAO.
  3. Přidání příkazového tlačítka (Command1) do formuláře.
  4. Přidejte následující kód události klepnutí pro Command1:
          Private Sub Command1_Click()
             Dim MyDB As Database, MyQuery As QueryDef, MySet As Recordset
             Dim Sql$, QueryDefName$
             QueryDefName$ = "TopTitles"
             Sql$ = "SELECT TOP 10 Titles.* FROM Titles;"
    
             ' Open Database, and create querydef:
             Set MyDB = Workspaces(0).OpenDatabase("C:\VB4\BIBLIO.MDB")
             Set MyQuery = MyDB.CreateQueryDef(QueryDefName$, Sql$)
    
             ' Create Recordset from query and load list with results:
             Set MySet = MyDB.OpenRecordset(QueryDefName$)
             MySet.MoveFirst
             While MySet.EOF = False
                debug.print MySet(0)
                MySet.MoveNext
             Wend
    
             ' Clean up -- close objects and remove querydef:
             MyDB.QueryDefs.Delete QueryDefName$
             MyQuery.Close
             MySet.Close
             MyDB.Close
             Set MyQuery = Nothing
             Set MySet = Nothing
             Set MyDB = Nothing
          End Sub
    						
  5. Spusťte program a stiskněte tlačítko Command1.
  6. Změňte řádek definování $ SQL být:
          Sql$ = "SELECT TOP 10 PERCENT Titles.* FROM Titles;"
    						
  7. Spusťte program znovu a poznamenejte si rozdíl ve výsledcích.

Vlastnosti

ID článku: 168241 - Poslední aktualizace: 2. března 2005 - Revize: 3.4
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic 4.0 Standard Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 16-bit Enterprise Edition
  • Microsoft Visual Basic 4.0 32-Bit Enterprise Edition
  • Microsoft Visual Basic 3.0 Professional Edition
  • Microsoft Visual Basic 4.0 Standard Edition
  • Microsoft Visual Basic 3.0 Professional Edition
  • Microsoft Visual Basic 4.0 Professional Edition
Klíčová slova: 
kbmt kbhowto KB168241 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:168241

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com