Farbschema: Dunkel
Sie befinden sich hier: start » sl » Dokumentacija » Integracija podatkov in dostop do podatkov » Gonilnik WKL OData ODBC » Navodila za gonilnik OData ODBC » Nastavitev prepustnih poizvedb

Nastavitev prepustnih poizvedb

Prepustna poizvedba (pass-through) pošlje svoj SQL nespremenjen podatkovni zbirki za storitvijo – za združitve, združevanje v skupine prek več tabel, spremembe mnogih vrstic ali klice procedur, ki jih ni mogoče izraziti kot zahtevo OData. Po isti poti se izvajajo tudi poizvedbe nad povezanimi tabelami, ki jih Access pošlje kot lastni stavek (združitve, podpoizvedbe).

Pregled rešitve

Gonilnik stavek posreduje na naslov za lastne stavke. Ta naslov navede bodisi storitev v svojem dokumentu metapodatkov – v tem primeru na delovnem mestu ni treba ničesar nastavljati – bodisi povezava s PASSTHROUGH. Ali se stavek sme izvesti, odloči storitev; gonilnik ga ne preverja.

Izvedba

  1. Pri skrbniku storitve preverite, katere stavke storitev sprejema. To določa storitev, ne gonilnik. Podatkovni prehod Wkl.Data.Gateway razlikuje dve vrsti:

    VrstaKaj se izvedePredpogoj v storitvi
    Preverjeni stavkiSELECT z združitvami, podpoizvedbami, UNION, združevanjem v skupine; INSERT, UPDATE, DELETE; klic procedure. Storitev vsak navedeni objekt preveri glede na pravice klicateljaprivzeto vklopljeno (AllowCheckedStatements); vsak klicatelj, katerega pravilo navaja alias. Pravilo samo za branje dovoli samo bralne stavke
    Nepreverjeni stavkipoljuben SQL, vključno s spremembami sheme, s pravicami prijave, s katero se izvedeAllowPassThrough: true pri aliasu in pravilo, ki ni samo za branje; pri ključu storitve ali pri prijavi aliasa dodatno pravica sql

    Poizvedbe nad povezanimi tabelami, ki jih Access ustvari sam, so preverjeni stavki; običajno jih ni treba posebej omogočiti. Podrobnosti so v „Aliasi, katalog in osrednje pravilo“ (dokumentacija podatkovnega prehoda).

  2. V Accessu ustvarite prepustno poizvedbo: izberite „Create“ > „Query Design“, zaprite pogovorno okno za tabele, na traku izberite „Pass-Through“ in vnesite SQL.
  3. Nastavite povezavo poizvedbe: v listu z lastnostmi pod „ODBC Connect Str“ vnesite isti niz kot pri povezanih tabelah iste datoteke, na primer

    ODBC;DRIVER={Wkl OData};URL=https://daten.example.com/odata/v4/fachdaten/dbo/;AUTH=WINDOWS

    Če stavek ne vrne rezultata (UPDATE, EXEC brez rezultata), nastavite „Returns Records“ na „No“.

    Access s prepustno poizvedbo qryUmsatzJeKunde v pogledu SQL: na traku je izbran Pass-Through, desno list z lastnostmi z ODBC-Verbindung (ODBC Connect Str) "ODBC;DSN=Fachdaten" in "Liefert Datensätze: Ja" (Returns Records: Yes)

  4. Zaženite poizvedbo. Access prevzame polja in tipe iz opisa, ki ga vrne storitev.

    Rezultat prepustne poizvedbe v podatkovnem listu: stolpca Name in Summe s tremi vrsticami

Prek VBA:

Dim qd As DAO.QueryDef
Set qd = CurrentDb.CreateQueryDef("qryUmsatzJeKunde")
qd.Connect = "ODBC;DRIVER={Wkl OData};URL=https://daten.example.com/odata/v4/fachdaten/dbo/;AUTH=WINDOWS"
qd.SQL = "SELECT k.Name, SUM(u.Betrag) AS Summe FROM dbo.Umsatz u JOIN dbo.Kunde k ON k.Id = u.Kunde GROUP BY k.Name"
qd.ReturnsRecords = True

Rezultat: poizvedba vrne iste vrstice kot isti stavek neposredno v podatkovni zbirki.

Napotki

  • En naslov za vse povezave iste datoteke. Access odprto povezavo deli z vsako poizvedbo, katere niz povezave vsebuje isto vrednost DATABASE – tudi če se razlikuje v PASSTHROUGH. Če je bila najprej odprta povezana tabela brez naslova, prepustna poizvedba doseže gonilnik prek njene povezave in je zavrnjena. PASSTHROUGH zato navedite v vsaki povezavi v datoteki ali v nobeni (v tem primeru velja naslov storitve).
  • Števila vrstic spremembe Access ne prikaže. Po prepustni poizvedbi RecordsAffected v Accessu javi 0; Access gonilnika sploh ne vpraša zanj. Neposredno prek ODBC gonilnik javi pravilno število.
  • Vezane vrednosti (? iz aplikacije) se podatkovni zbirki pošljejo kot parametri, nikoli kot besedilo. Binarna vrednost se pri tem prenese kodirana v base64; če mora stavek primerjati binarno vrednost, jo je bolje zapisati neposredno v stavek.
  • Brez naslednjih strani. Rezultat posredovanega stavka se prebere v celoti; omejuje ga omejitev števila vrstic storitve. Gonilnik odgovor bere vrstico za vrstico, medtem ko prihaja. Podatkovni prehod Wkl.Data.Gateway rezultat od 500 vrstic naprej pošlje pretočno; če se tak tok sredi prenosa prekine, aplikacija dobi 08S01 namesto skrajšanega rezultata.
  • Brez naslova za lastne stavke gonilnik stavke, ki jih ni mogoče prevesti, zavrne z 42000; glejte "ODBC--call failed" pri vsotah ali združitvah.

Sorodne teme

sl/wiki/data-conectivity/odata-odbc/how-to/set-up-pass-through-queries.txt · Zuletzt geändert: von Wolfgang van der Stille