Ako vytvoriť parametrický dotaz prostredníctvom prístupu k údajom objektov

Preklady článku Preklady článku
ID článku: 142938 - Zobraziť produkty, ktorých sa tento článok týka.
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

SUHRN

Tento článok vysvetľuje, ako vytvoriť a používať parametrický dotaz pomocou údajov Objekty programu Access (DAO). Parametrický dotaz je typ QueryDef špecifické pre databázový nástroj Microsoft Jet, používa program Visual Basic, Microsoft Access, a iné výrobky. Parametrické dotazy umožňuje automatizáciu procesu meniace sa kritériá dotazu. Pomocou parametrického dotazu, môžete nastaviť nové hodnoty pre parametre vždy, keď spustíte dotaz.

DALSIE INFORMACIE

Parametrický dotaz je vytvorená v programe pomocou CreateQueryDef() Funkcia. Nasleduje syntax pre CreateQueryDef() funkcie:
Nastaviť querydef = databázy.CreateQueryDef (meno, sqltext)

QueryDef - objektu QueryDef
databáza - objektu databázy
názov - reťazec obsahujúci názov dotazu
sqltext - reťazec obsahujúci text dotazu SQL
Sqltext reťazec je voliteľná alebo môže byť definované pomocou.SQL Vlastnosť QueryDef. Ak chcete vytvoriť parametrický dotaz, umiestnite PARAMETRE vyhlásenie v sqltext reťazci. Tu je syntax pre PARAMETRE vyhlásenie:
PARAMETRE parametertext datatype

parametertext - názov parametra
údajový typ - typ parametra
Nasledujúca tabuľka uvádza príslušný typ údajov Microsoft Jet SQL že sa môže použiť parametre vyhlásenie, ako aj zodpovedajúce pole typu Microsoft Access, premennej typ jazyka Visual Basic, a konštantnú hodnotu z DATACONS.TXT súboru.

Poznámka: Visual Basic 4.0 a novšej a Office 95 a novších verziách Basic podporujú ďalšie typy údajov (Boolean, Byte, bajtové pole). Nižšie uvedená tabuľka uvádza rovnocenné základné typy pre staršie verzie základného:
   Microsoft      Microsoft        Visual
   Access SQL     Access Field     Basic Type      DATACONS.TXT Constant
   ---------------------------------------------------------------------
   Bit            Yes/No           Integer/Boolean   DB_BOOLEAN = 1
   Byte           Byte             Integer/Byte      DB_BYTE = 2
   Short          Integer          Integer           DB_INTEGER = 3
   Long           Long Integer     Long              DB_LONG = 4
   Currency       Currency         Double            DB_CURRENCY = 5
   IEEESingle     Single           Single            DB_SINGLE = 6
   IEEEDouble     Double           Double            DB_DOUBLE = 7
   DateTime       Date/Time        Variant           DB_DATE = 8
   Binary         Binary           String/Byte Array
   Text           Text             String            DB_TEXT = 10
   LongBinary     OLE Object       String/Byte Array DB_LONGBINARY = 11
   LongText       Memo             String            DB_MEMO = 12
				
Po parametre vyhlásenie v sqltext reťazci, miesto dotaz. Dotaz môže byť parameter (parametertext) s názvom v PARAMETRE vyhlásenie. Kdekoľvek dotazu odkazuje na parameter, aktuálne hodnota sa nahradí, keď dotaz je popravený.

Napríklad, ak je text dotazu:
PARAMETRE som krátky; Vyberte priečinok od tbl kde priečinok = i
a parameter bol nastavený na 42 v programe, parameter by sa nahradené a výsledné dotazu by sa rovná:
Vyberte priečinok od tbl kde priečinok = 42

Viaceré parametre v parametre vyhlásenie

Je tiež možné mať viacero parametrov v parametre vyhlásenie. Vykonáte to použitie čiarok na oddeľovanie parametrov takto:
PARAMETRE parametertext datatype, údajový typ parametertext...
Pred vykonaním dotaz nastaviť parametre pomocou nasledovnej syntaxe:
QueryDef! parametertext = hodnota

QueryDef - objektu QueryDef parametertext - názov parametra vo výkaze parametre hodnota - hodnota parametra bude mať
V predchádzajúcom príklade by ste použiť QD! i = 42 pred vykonaním dotaz.

Akonáhle sú nastavené parametre, ste pripravení spustiť dotaz. Existujú tri metódy (spustiť, CreateDynaset a CreateSnapshot) podporované QueryDef, že spôsobí dotazu.

Príklad parametrické dotazy

Nasledujúci príklad ilustruje použitie krátkych parameter v dotaze. V príklade má dve časti. Prvá časť vytvorí nové QueryDef pre BIBLIO.MDB (vzorka databázy Microsoft Access že lode s Visual Basic) a by mala byť vykonaná len raz. Druhá časť používa QueryDef Ak chcete vytvoriť snímku, ktorá sa potom zobrazí. Otestovať príklad, umiestnite každý nasledujúci kód segmentov na CommandButton kliknite na položku udalosti .

Poznámka: Existuje niekoľko menších rozdielov medzi staršie DAO syntax použiť Visual Basic 3.0 a prístup 1.x a novšie syntax použiť navzájom výrobky, na ktoré sa tento článok sa uplatňuje. Staré a nové DAO syntax sú ozna?ené Poznámky:
   'Create QueryDef "by date"
   Dim Db As Database
   Dim Qd As QueryDef
   Set Db = OpenDatabase("C:\VB\BIBLIO.MDB")                 ' Old
   Set Db = DBEngine(0).OpenDatabase("C:\VB4-32\BIBLIO.MDB") ' New
   Set Qd = Db.CreateQueryDef("By date") 'Create the query "By date"
   QdText = "PARAMETERS dp Short; "
   QdText = QdText & "SELECT * from Titles WHERE [Year Published] = dp"
   Qd.SQL = QdText
   Print Qd.SQL
   Qd.Close

   ' Create Snapshot from QueryDef
   Dim Rs As Snapshot                   ' Old
   Set Qd = Db.OpenQueryDef("By Date")  ' Old
   Dim Rs As Recordset                  ' New
   Set Qd = Db.QueryDefs("By Date")     ' New
   Qd!dp = 1991                         'Set the value of the dp parameter
   Set Rs = Qd.CreateSnapshot()                ' Old
   Set Rs = Qd.OpenRecordset(dbOpenSnapshot)   ' New
   Do Until Rs.EOF
      For i = 1 To Rs.Fields.Count - 1
         Print Rs(i);                   'Display results of query
      Next
      Print
      Rs.MoveNext
   Loop
   Rs.Close
   Qd.Close
   Db.Close
Druhý príklad zobrazuje, ako použiť akciu parametrický dotaz. Všimnite si, že akčné dotazy sú vyvolaná s spustiť metódu, nie CreateDynaset alebo CreateSnapshot, pretože nemôže vrátiť záznamy:
   'Create QueryDef
   Dim Db As Database
   Dim Qd As QueryDef
   Set Db = OpenDatabase("C:\VB\BIBLIO.MDB")                 ' Old
   Set Db = DBEngine(0).OpenDatabase("C:\VB4-32\BIBLIO.MDB") ' New
   Set Qd = Db.CreateQueryDef("Delete by name") 'Create the query
   QdText = "PARAMETERS p1 Text; "
   QdText = QdText & "DELETE * FROM Authors WHERE Author = p1;"
   Qd.SQL = QdText
   Print Qd.SQL
   Qd.Close

   ' Execute the QueryDef
   Set Qd = Db.OpenQueryDef("Delete by name")  ' Old
   Set Qd = Db.QueryDefs("Delete by name")     ' New
   Qd!p1 = "Bob"
   Qd.Execute           'Perform the action query
   Qd.Close
   Db.Close
				

ODKAZY

Viac informácií o parametrické dotazy je k dispozícii v jazyku Visual Basic, verzia 3.0 a 4.0, "Profesionálne funkcie Book 2."

Vlastnosti

ID článku: 142938 - Posledná kontrola: 17. októbra 2011 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Access 1.0 Standard Edition
  • Microsoft Access 1.1 Standard Edition
  • Microsoft Access 2.0 Standard Edition
  • Microsoft Access 97 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Word 97 Standard Edition
Kľúčové slová: 
kbhowto kbprogramming kbmt KB142938 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:142938

Odošlite odozvu

 

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