Apibendrinimas ataskaitose. Apskaičiuoti prieigos užklausų laukai Suvestinių duomenų, kuriuos galite įtraukti į ataskaitą, tipai

Eilutę „Access“ iš viso galite greitai peržiūrėti lentelės stulpeliuose esančių duomenų santrauką. Pavyzdžiui, jei į lentelę, kurioje yra išsami informacija apie pirkimus, įtraukiate eilutę Iš viso, galite rodyti pardavimo sumą, bendrą prekės vienetų skaičių arba įsigytų prekių skaičių.

Pastaba: Kad būtų rodoma stulpelio reikšmių suma, turite nustatyti stulpelio duomenų tipą į skaitinį, trupmeninį arba valiutą. Neskaitmeniniams stulpeliams galite pasirinkti tik reikšmių skaičiaus suvestinės tipą.

Pridėti eilutę „Iš viso“.

Bendro tipo pasirinkimas

Pridėjus eilutę rezultatus pasirenkate kiekvieno stulpelio rodomos sumos tipą. Pavyzdžiui, suvestiniai rodikliai, tokie kaip sumos, gali būti rodomi, kai duomenų tipas yra skaičius, dešimtainis skaičius arba valiuta. Skaičiuoti reikšmes galima, jei duomenų tipas yra teksto reikšmė.

Leiskite, kad šio pavyzdžio lentelėje būtų rodoma stulpelių reikšmių suma Pirkimo kaina Ir Nupirktos prekės ir bendra stulpelio suma Padėtis kaip parodyta paveikslėlyje žemiau.

Kaip veikia Sumos ir kitos suvestinės funkcijos

Suvestinės funkcijos atlieka duomenų stulpelių skaičiavimus ir pateikia vieną rezultatą. Jie gali būti naudingi, jei reikia apskaičiuoti vieną vertę, pvz., sumą arba vidurkį. Atminkite, kad suvestinės funkcijos taikomos duomenų stulpeliams. Tai gali atrodyti akivaizdu, tačiau kurdami ir naudodami duomenų bazes paprastai sutelkiate dėmesį į duomenų eilutes ir atskirus įrašus, kad vartotojai galėtų įvesti duomenis į lauką, perkelti žymeklį į dešinę arba į kairę, kad užpildytų kitą lauką ir tt. naudoti agregatų funkcijas, sutelkiant dėmesį į įrašų grupes stulpeliuose.

Tarkime, kad naudojate „Access“ pardavimo duomenims saugoti ir stebėti. Naudodami agregavimo funkcijas galite apskaičiuoti parduotų prekių skaičių viename stulpelyje, bendrą pardavimą per sekundę ir vidutinį kiekvienos prekės pardavimą trečiame.

Toliau pateiktoje lentelėje aprašomos Prieigos agregatinės funkcijos, pasiekiamos eilutėje Iš viso. Atminkite, kad programoje „Access“ yra ir kitų agregatų funkcijų, tačiau jos naudojamos užklausose.

Funkcija

apibūdinimas

Palaikomi duomenų tipai

Ar yra eilutėje „Iš viso“?

Skaičiuoja vidutinę stulpelio reikšmę. Stulpelyje turi būti skaitinės, piniginės arba datos ar laiko reikšmės. Funkcija nepaiso tuščių reikšmių.

Vertybių skaičius

Skaičiuoja elementų skaičių stulpelyje.

Visi duomenų tipai, išskyrus sudėtingus pasikartojančius skaliarinius duomenis, pvz., daugiareikšmio sąrašo stulpelį. Norėdami gauti daugiau informacijos apie kelių reikšmių sąrašus, žr. Geriausios kelių reikšmių laukų kūrimo ir ištrynimo praktikos kelių reikšmių laukų mokymo programose.

Didžiausia vertė

Grąžina didžiausios vertės elementą. Teksto duomenims didžiausia reikšmė yra paskutinė abėcėlės reikšmė, o Access neskiria didžiųjų ir mažųjų raidžių. Funkcija nepaiso tuščių reikšmių.

, "Data ir laikas"

Minimali vertė

Grąžina elementą su mažiausia verte. Teksto duomenims mažiausia reikšmė yra pirmoji abėcėlės reikšmė, o Access neskiria didžiųjų ir mažųjų raidžių. Funkcija nepaiso tuščių reikšmių.

„Skaičius“, „Realus“, „Valiuta“, „Data ir laikas“

Standartinis nuokrypis

"Skaičius", "Realus", "Valiuta"

Sumuoja elementus stulpelyje. Tinka tik skaitiniams ir piniginiams duomenims.

"Skaičius", "Realus", "Valiuta"

Sklaida

Apskaičiuoja visų stulpelio reikšmių statistinę dispersiją. Tinka tik skaitiniams ir piniginiams duomenims. Jei lentelėje yra mažiau nei dvi eilutės, „Access“ pateikia tuščią reikšmę. Daugiau informacijos apie dispersijos funkciją rasite kitame skyriuje.

"Skaičius", "Realus", "Valiuta"

Sužinokite daugiau apie standartinio nuokrypio ir dispersijos funkcijas

Funkcijos Standartinis nuokrypis Ir Sklaida apskaičiuojamos statistinės vertės. Visų pirma, jie naudojami reikšmėms, kurios yra netoli jų vidutinės vertės ir atitinka normalaus pasiskirstymo dėsnį (yra Gauso kreivėje).

Tarkime, atsitiktine tvarka pasirinkote 10 įrankių, pagamintų toje pačioje mašinoje, ir išmatavote jų trūkimo stiprumą mašinos apžiūrai ir kokybės kontrolei. Jei paskaičiuosite vidutinę trūkimo stiprio reikšmę, pamatysite, kad daugumos įrankių trūkimo stipris yra artimas vidutinei vertei, tačiau yra ir didesnių bei mažesnių verčių įrankių. Tačiau jei apskaičiuosite tik vidutinę trūkio stiprio vertę, šis skaičius neduos jokios informacijos apie kokybės kontrolės efektyvumą, nes keli neįprastai stiprūs ar trapūs įrankiai gali padidinti arba sumažinti vidutinę vertę.

Funkcijos kintamumas Ir standartiniai nuokrypiai nurodykite šią problemą, nurodydami, kiek reikšmės yra artimos vidurkiui. Kritinio stiprumo atveju mažesni skaičiai, kuriuos grąžina viena iš funkcijų, rodo, kad jūsų gamybos procesai veikia normaliai, nes kai kurie iš jų yra riboto masto, viršijantys arba mažesni už vidutinį.

Išsamus dispersijos ir standartinio nuokrypio aprašymas nepatenka į šio straipsnio taikymo sritį. Daugiau informacijos apie abi funkcijas galite rasti statistikos svetainėse. Kai naudojate funkcijas Sklaida Ir Standartinis nuokrypis Prisiminkite šias taisykles.

Klausimas: „Access“ stulpelių suma?


Apskritai užduotis yra tokia:
Apskaičiuokite kiekvienos prekės rūšies praėjusių metų sandėlio pelną.
Produktų tipai nustatomi pagal kodą iš lentelės „Pavadinimas“. (Tai yra, vaizdas = vardas)
Pelnas yra lentelės „Užsakymas“ laukas „Užsakymo suma“.

Dėl to reikia išvesti
Pavadinimas -> Bendra suma

Atsakymas: Problema išspręsta.
Ačiū)

Klausimas: Mysql: Indeksas pagal stulpelių sumą


Sveiki visi.
Neseniai pradėjau mokytis indeksų mysql. Susidūriau su tokiu klausimu, į kurį atsakymo neradau.
Yra pasirinkimo užklausa, kuri apima sąlygą, pagrįstą stulpelių suma, tarkime:
Kaip teisingai sukurti tam tikros sąlygos indeksą (1 stulpelis + 2 stulpelis)?
Maniau, kad tai galima padaryti taip:
SQL
1 KURTI RODYKLĄ col1col2 ON table1(col1+ col2) ;

Tačiau kyla abejonių dėl šio įrašo teisingumo.
Ar kas nors gali pasakyti, kaip tai padaryti teisingai?

Atsakymas: Dėkojame už pasiūlymus, kaip išspręsti problemą.

Klausimas: Viršutinių eilučių su konkrečiu stulpelio kiekiu pasirinkimas


Yra stalas
IDKiekis
1 50
2 100
3 50
4 20
5 60
6 20
7 100

kur Id 1 yra naujausias įrašas, Id 7 yra seniausias.
Turite pasirinkti viršutines eilutes, kurių bendra stulpelio „Kiekis“ suma yra bent 250, tai yra, laukiamas rezultatas:
IDKiekis
1 50
2 100
3 50
4 20
5 60

Kol kas pasiekiau tik tiek:
SELECT * FROM ( SELECT SUM (Kiekis) OVER (ORDER BY Id ASC ) AS S, a.* FROM my_table a ) WHERE S< 250
Dėl to gaunu 1 eilute mažiau nei reikia:

Tie. ar turi omeny, kad jis veikė su ROWS BETWEEN UNBUNDED PRECEDING IR 1 PRECEDING be NVL?
Apmąstykite, kas pateiks pirmąją EILUtę / DIAPAZONą su 1 PRIEŠ.

SY.
Hmm, be nvl praranda pirmą eilutę/diapazoną, visa kita išvesta teisingai. Taip, sunku tai pavadinti „suveikė“.

Klausimas: prieiga prie datos laiko


Laba diena, turiu klausimą
Sukūriau duomenų bazę accses 2016 ir susidūriau su problema, kad apskaičiuojamame stulpelyje turiu atsižvelgti į savaitgalius ir šventes.
skaičiuojamas stulpelis apskaičiuojamas kaip stulpelio „komandiruotės pradžios data“ + „darbo dienų skaičius“ suma. Būtina, kad pridėjus pirmus du terminus būtų tikrinama savaitės diena ir jei ketvirtadienis pridedamos 5 dienos, jei penktadienis yra 5 dienos, jei šeštadienis yra 4 dienos ir jei kitos dienos yra 3 dienos , o po to skaičius įvedamas į šiam stulpeliui sukurtą lentelę. Nežinau, ar tai tikra, ar ne, bet aš jau pamečiau galvą, jei kas žino sprendimą, pasakykite man.

Prie pranešimo pridedamas failas. Dydis - 22Kb

Atsakymas: stalkermen4884,
- ar užklausa veikia taip, kaip norite?
-funkcijos rašomos tame modulyje, kuris naudojamas užklausoje (atidžiau pažiūrėkite, kas parašyta laukeliuose projektavimo režimu) ir užklausos laukus naudokite kaip argumentus (st-field[s],fin-field)
-jei norite, kad visose funkcijose kelionės laikotarpis būtų skaičiuojamas įskaitant paskutinę dieną, pataisykite i=0
- įdėkite pertraukos tašką funkcijos viduje ir, vykdydami ją žingsnis po žingsnio, galėsite pamatyti, kaip ji veikia.
-skaityti knygas (bent pamokas internete) - ten viskas parašyta (jei skaitysite apgalvotai, analizuodami, kas parašyta, viską suprasite - aš jų jums neperpasakosiu. Šiame forume daroma prielaida, kad turite bazines žinias)

Klausimas: stulpelio sumavimas eilėmis


Sveiki visi!

Iš anksto atsiprašau, bet nesuprantu, kaip apskaičiuoti stulpelio eilučių sumą. Programoje Excel viskas paprasta (pridedama).
Kaip tai daroma naudojant prieigą?

Iš anksto dėkoju!

Atsakymas: Labai ačiū!

Pridėta po 23 valandų 57 minučių
Tęsiant temą. Prašau pagalbos optimizuojant užklausą sukaupus bendrą sumą.

ZnachRURSum eilučių skaičius yra apie 3000. Prieiga suskaičiuojama labai ilgai. Ar yra būdas jam padėti?

Ps: tada visa tai pateks į mysql.

Klausimas: Stulpelių suma


Man labai reikia pagalbos, turiu įsitikinti, kad iš produktų, paslaugų ir užsakymų lentelių paėmiau pavadinimą, kainą ir kiekį, o pabaigoje laukelyje parodysiu jų sumą. Pačios duomenų bazės pavyzdys pridedamas archyve. Aš būsiu amžinai dėkingas, aš negaliu to padaryti pats.

Atsakymas: Viačeslavas I, taip pat mačiau, ką galima padaryti su pavaldžios formos pagalba, bandžiau – net melodramą.


Yra lentelė Vartotojas

Prašau pasakyk man)
Atsiprašau, kad rodau lenteles paveikslėlių pavidalu) Nežinau, kaip čia naudoti SQL redaktorių.

Atsakymas:

Pranešimas nuo cweic

Dėl kokių nors priežasčių jūsų užklausa neveikia.

Gal būt. Nepatikrino. Dabar patikrinsiu.

Pranešimas nuo cweic

Ar galite pasakyti, ką reiškia ketvirta eilutė?

Stulpelio SUM pasirinkimas iš lentelės „reat_sum“, gautas naudojant antrinę užklausą.

Pranešimas nuo cweic

Ir vis dar neaišku, 16 eilutėje yra slapyvardis AS t1? Ar tai turi ką nors bendro su pirmąja lentele?

T1 yra lentelės, kuri bus grąžinta atlikus šią užklausą, pavadinimas:

Klausimas: kas gerai žino „Access“? Draudimo registracija


„Access“ „forma“, vadinama „Draudimo registracija“, susideda iš kelių laukų
-Kliento kodas,
- Draudimo kodas,
- pilnas kliento vardas, pavardė,
- Kliento adresas,
- Telefonas,
- tarifo kodas,
- draudimo data,
- įmokos suma,
- Tarifo pavadinimas.

Man reikia susidėlioti dizainą, kad iš kombinuoto laukelio pasirinkus Tarifo kodą būtų automatiškai apskaičiuojama įmokos suma, t.y. Laukelis „Mokėjimo suma“ užpildomas automatiškai pagal tarifą.

Be to, Tarifo kodas ir Mokėjimo suma yra atskiroje lentelėje „Draudimo įkainiai“, taip pat lentelėje „Draudimo registracija“, kuri yra „Formos“ „Draudimo registracija“ šaltinis.

Žmonės prašau padėti, kas žino.

Atsakymas: 1. Tarifo kodo eilučių šaltinyje pridedamas 3 stulpelis su tarifine kaina, nurodoma, kad yra 3 stulpeliai, įterpiamas kodas (pirmas), matomas antrasis (pavadinimas), pirmas ir trečias yra nesimato – tai lemia kolonų plotis (2cm; 0cm; 0cm). Visa tai yra konstruktoriuje, kombinuoto langelio savybėse.
2. Tuo atveju, kai po atnaujinimo Kainai priskiriama 2 stulpelio reikšmė (3 stulpelis, VBA sunumeruotas nuo 0), ten rašoma pasirinkto tarifo kaina.

Klausimas: užklausa pagal stulpelius


Sveiki.
Aš uždaviau klausimą
Dabar tema panaši tik su stulpeliais.
Kaip pateikti prašymą apskaičiuoti, pavyzdžiui, sumą stulpeliuose NUO 3 stulpelių
pavyzdžiui, yra stulpelis O4 ir daug tokių stulpelių, pvz., O5, O6, O7 ir tiek daug
ir pridėkite sumą O4, O5... bet suma ne iš viso, o atskirai bet vienoje lentelėje
Iš esmės stulpelių nuo O4 iki galo suma (kiek jų yra, net jei pridedate naujų)
Naujoje lentelėje turi būti stulpelio pavadinimas ir jo suma.
Daug teksto, bet tikiuosi, kad jis aiškus)

Atsakymas: alvk, na, kaskart vis labiau šokiruojate savo žiniomis.

Klausimas: Kaip sukurti išskleidžiamąjį sąrašą programoje Access prijungtoje lentelėje iš MySql?


KLAUSIMAS:
Kaip „Access“ sukurti išskleidžiamąjį sąrašą?
Kokia turėtų būti katalogų lentelė: stulpeliai (tipas) - ? dalykų.
Kur reikėtų (ar patartina) dėti katalogą: in Prieiga prie nuorodų lentelės arba atskirame prijungta nuorodų lentelė iš MySql?
Ar yra kitų protingesnių būdų šiai užduočiai atlikti?

BŪTINA:
„Access“ sukurkite išskleidžiamąjį sąrašą prijungta lentelė iš MySql.
Išskleidžiamojo sąrašo ypatybės:
- skaičiuoti poz.< 10штук
- turinys: 1 OUT ATP POSITION, OUT ATP POSITION 2, OUT ATP POSITION 3,... OUT ATP POSITION 10
Duomenys išskleidžiamajame sąraše turi būti iš:

arba

pagal tinkamiausią scenarijų.

ĮDIEGTA:
- KOMP 1
- MySql įdiegtas iš centrinės duomenų bazės.
- Duomenų bazėje (DB) yra lentelė_1 su šiais stulpeliais:

- KOMP 2
- Prieiga prie MySql duomenų bazės prisijungia per ODBC kaip klientas.

SĄLYGOS:
- Prieigos nuorodų lentelė - Nuorodų lentelė Nr. 1 (žr. ekrano kopiją);
- prijungta nuorodų lentelė iš MySql - Nuorodų lentelė Nr. 2 (žr. ekrano kopiją);
- prijungta lentelė iš MySql - kliento duomenų bazės lentelė (žr. ekrano kopiją);

Atsakymas: Nesvarbu, ar kursite formą nuo nulio, ar išardysite mano pavyzdį, laikas bus toks pat.

Naršymo juostoje pasirinkite pagrindinę lentelę. Juostelėje Kurti pasirinkite mygtuką Forma. Vedlys sukurs jums formą su visais jūsų lentelės laukais.

Perjungti į dizaino režimą. Raskite lauką, kuriame vertės turėtų būti paimtos iš katalogo sudėtinio langelio (nesvarbu, ar jis pridedamas, ar vietinis - norint pasiekti, pridedamos lentelės daugeliu atvejų nesiskiria nuo vietinių, būtent taip).

Dešiniuoju pelės mygtuku spustelėkite šį lauką ir pasirinkite "konvertuoti lauką į" - "kombinuotasis laukelis"

Gautame kombinuotame laukelyje pakeiskite ypatybes:
Duomenų šaltinis – čia rašome lentelės pavadinimą arba užklausos pavadinimą arba užklausos tekstą
Susietas stulpelis - yra 1, paprastai taip ir turi būti (tai yra stulpelio numeris su identifikatoriumi arba kodu, jei jis nėra 1 - galite pakeisti užklausos eilę arba pataisyti susieto stulpelio numeris)
Stulpelių skaičius paprastai yra 2, bet prireikus gali būti ir daugiau
Stulpelio plotis - paprastai rašomas 0 plotis, kuris yra būtinas arba tiesiog 0 - tada stulpelis su kodu nesimato ekrane, matomos tik reikšmės. Jei turite skirtingą stulpelių skaičių arba skirtingą tvarką, atitinkamai koreguojami pločiai.

Na, tai viskas. Lauką galima naudoti.

Pridėta po 6 minučių

Pranešimas nuo texnik-san

norint pasiekti, sujungtos lentelės daugeliu atvejų nesiskiria nuo vietinių

Tiesą sakant, todėl nėra aiškių priežasčių, kodėl nešvaistyti Visi lenteles vienoje bendroje duomenų bazėje. Kalbant apie patogumą, plėtra vis tiek bus tokia pati. O veikiant bendra bazė apsaugos jus nuo daugybės kvailų situacijų.

Pavyzdžiui, Vasya netyčia pateko į žinyną ir ištrynė visas ten esančias reikšmes (sistema tai leido, žinynas yra vietinis). Tada bijojau, kad mane išbars, ir niekam nieko nesakiau, tiesiog atsisėdau ir vėl užpildžiau visas vertybes. Tekstas atitinka senąjį. Bet Vasja nežino, kad raktai skiriasi. Tada prasideda: „Pasirinkau tą patį, ką visada rinkdavausi, o programa parašo klaidą „susietoje lentelėje tokios reikšmės nėra“. Manote, kad taip neatsitiks? Asmeniškai aš esu užlipęs ant tokio grėblio

Pridėta po 1 minutės
Taigi, jei įmanoma viską padaryti vienoje duomenų bazėje ir nustatyti išorinio rakto apribojimus, kurie užtikrina vientisumą, ši parinktis yra pageidautina.

Šiame straipsnyje kalbėsime apie apskaičiuotus laukus „Access“ užklausose. Užklausa, kaip ir lentelė, gali atlikti kiekvieno įrašo skaitinių, eilučių ar datos reikšmių skaičiavimus, naudojant duomenis iš vieno ar kelių laukų. Skaičiavimo rezultatas užklausos lentelėje suformuoja naują apskaičiuotą lauką. Skirtingai nuo apskaičiuotų lentelių laukų, apskaičiuoti laukai šaltinio duomenų bazės lentelėse naujų laukų nesukuria. Kiekvieną kartą, kai vykdoma užklausa, skaičiavimai atliekami pagal esamas lauko reikšmes.

Apskaičiuotose laukų išraiškose, be laukų pavadinimų, gali būti naudojamos konstantos ir funkcijos. Apdorojant išraišką galima gauti tik vieną reikšmę.

1 užduotis. Lentelėje PRODUKTAS yra laukai KAINA ir RATE_PVM Apskaičiuokite kainą su PVM ir palyginkite ją su kaina, gauta lentelės Kaina su PVM laukelyje.

  1. Sukurkite lentelės PRODUCT pasirinkimo užklausą projektavimo režimu. Vilkite laukus NAME_TOV, KAINA, RATE_VAT ir Kaina su PVM į užklausos formą (4.6 pav.).
  2. Norėdami apskaičiuoti kainą su PVM, sukurkite apskaičiuotą lauką, tuščiame eilutės Laukas langelyje įrašydami išraišką [KAINA]+[KAINA]*[RATE_VAT].
  3. Norėdami pasirinkti įrašus, kurių reikšmė yra didesnė nei 5000 apskaičiuotame lauke, eilutėje Kriterijai įveskite > 5000
  4. Įvedus išraišką, sistema pagal nutylėjimą sugeneruoja apskaičiuoto lauko pavadinimą Išraiška 1, kuris tampa lentelės su užklausos rezultatais stulpelio antrašte. Šis pavadinimas bus įterptas prieš išraišką [PRICE]+[PRICE]*[VAT_RATE]. Kiekvieno naujo apskaičiuoto lauko užklausoje išraiškos skaičius padidėja vienu. Apskaičiuotas lauko pavadinimas nuo išraiškos atskiriamas dvitaškiu. Norėdami pakeisti pavadinimą, užveskite pelės žymeklį į apskaičiuotą užklausos formos laukelį ir spustelėkite dešinįjį pelės mygtuką. Kontekstiniame meniu pasirinkite Savybės(Ypatybės) lauką ir antraštės eilutėje įveskite naują lauko pavadinimą - Kaina su PVM 1. Dabar lentelėje su užklausos rezultatais šis pavadinimas bus rodomas apskaičiuoto stulpelio antraštėje. Lauko pavadinimą taip pat galima pataisyti tiesiogiai užklausos formoje.
  5. Norėdami pamatyti užklausos rezultatą, spustelėkite mygtuką Vykdyti(Bėk) grupėje rezultatus(Rezultatai). Apskaičiuotas lentelės laukas ir užklausa turi tas pačias reikšmes.
  6. Pakeiskite prekės kainą viename iš užklausos įrašų. Abiejų apskaičiuotų laukų reikšmės bus akimirksniu perskaičiuotos.
  7. Norint sudaryti sudėtingą išraišką apskaičiuotame lauke arba pasirinkimo sąlygoje, patartina naudoti išraiškų kūrimo priemonę. Kūrėjas leidžia pasirinkti reiškinyje reikalingus laukų pavadinimus iš lentelių, užklausų, operacijos ženklų ir funkcijų. Pašalinkite išraišką apskaičiuotame lauke ir naudokite kūrimo priemonę, kad ją sugeneruotumėte.
  8. Iškvieskite išraiškų kūrimo priemonę spustelėdami mygtuką Statybininkas(Statybininkas) grupėje Užklausos sąranka(Užklausos sąranka) juostos dizainas, arba pasirinkdami Sukurti(Sukurti) kontekstinio meniu. Pelės žymeklis pirmiausia turi būti išdėstytas išraiškos įvesties langelyje.
  9. Kairėje lango pusėje Išraiškų kūrimo priemonė(Expression Builder) (4.7 pav.) pasirinkite PRODUCT lentelę, kuria grindžiama užklausa. Jo laukų sąrašas bus rodomas dešinėje. Iš eilės pasirinkite reikiamus laukus ir operatorius dukart spustelėdami juos išraiškoje. Išraiška bus suformuota lango viršuje. Atkreipkite dėmesį, kad statytojas prieš lauko pavadinimą nurodė lentelės, kuriai ji priklauso, pavadinimą ir nuo lauko pavadinimo atskyrė šauktuku.
  10. Užbaikite išraiškos kūrimo procesą apskaičiuotame lauke spustelėdami Gerai.
  11. Išsaugokite užklausą pavadinimu ― Kaina su PVM ir uždarykite.
  12. Vykdykite išsaugotą failą pasirinkdami jį naršymo srityje ir kontekstiniame meniu pasirinkdami Atidaryti.


2 užduotis. Apskaičiuojamuose laukuose ir filtravimo sąlygose galite naudoti integruotas funkcijas. „Access“ apibrėžta daugiau nei 150 funkcijų.
Tegul reikia pasirinkti visas sąskaitas faktūras, kurioms buvo siunčiama per tam tikrą mėnesį. SĄSKAITOS SĄSKAITOS, siuntimo data saugoma lauke DATE_OTG su duomenų tipu Data/Time.

  1. Sukurkite lentelės INVOICE pasirinkimo užklausą dizaino režimu. Vilkite laukus NOM_NAKL ir CODE_SK į formą (4.8 pav.).
  2. Sukurkite apskaičiuotą lauką tuščioje eilutės langelyje Laukas(laukas) ten įrašydami vieną iš posakių: Format([INVOICE]![DISPOSITION_DATE];"mmmm") - ši funkcija grąžins visą mėnesio pavadinimą
    arba Formatas([INKNYGA]![DISPOSITION_DATE];"mm") – ši funkcija grąžins mėnesio numerį.
  3. Norėdami pasirinkti tam tikrą mėnesį išrašytas sąskaitas faktūras, skaičiuojamajame laukelyje Pasirinkimo sąlyga (kriterijai) eilutėje įveskite mėnesio pavadinimą, pvz., Kovas (4.8 pav.), arba mėnesio numerį, pvz. parametrą funkcijoje Format.
  4. Užpildykite užklausą spustelėdami mygtuką Vykdyti(Bėk) grupėje rezultatus(Rezultatai) juostelės skirtuke Darbas su užklausomis | Konstruktorius(Užklausos įrankiai | Dizainas).
  5. Apskaičiuotame laukelyje įrašykite funkciją Mėnuo (INVOICE!DATE_OTG) ir įsitikinkite, kad ši funkcija grąžina mėnesio numerį, išskirtą iš datos.
  6. Norėdami pasirinkti visas su antruoju ketvirčiu susijusias eilutes, eilutėje Kriterijai įveskite operatorių tarp 4 ir 6, kuris nustato, ar išraiškos reikšmė patenka į nurodytą intervalą.
  7. Apskaičiuotame lauke įrašykite išraišką MėnesioPavadinimas(Mėnuo(INVOICE!DATE_OTG)) ir įsitikinkite, kad funkcija Mėnesio pavadinimas konvertuoja mėnesio skaičių į pilną pavadinimą.


Norėdami tai sustiprinti, žiūrėkite vaizdo įrašą.

Šiame straipsnyje aprašoma, kaip skaičiuoti užklausos grąžintus duomenis. Pavyzdžiui, formoje arba ataskaitoje galite suskaičiuoti elementų skaičių viename ar daugiau lentelės laukų arba valdiklių. Taip pat galite apskaičiuoti vidurkius, rasti didžiausias ir mažiausias vertes bei seniausią ir naujausią datą. „Access“ taip pat teikia įrankį, vadinamą sumos eilute, kuris leidžia suvesti lentelės duomenis nekeičiant užklausos struktūros.

Pasirinkite norimą veiksmą

Duomenų skaičiavimo metodai

Elementų skaičių lauke (reikšmės stulpelyje) galite suskaičiuoti naudodami funkciją Skaičius. Funkcija Skaičius priklauso daugybei funkcijų, vadinamų suvestinėmis funkcijomis. Suvestinės funkcijos atlieka duomenų stulpelių skaičiavimus ir pateikia vieną reikšmę. Be funkcijos Skaičius, „Access“ turi šias bendras funkcijas:

    Suma sumuoti skaičių stulpelius;

    Vidutinis apskaičiuoti skaičių stulpelio vidurkį;

    Maksimalus rasti didžiausią reikšmę lauke;

    Minimumas rasti mažiausią reikšmę lauke;

    Standartinis nuokrypisįvertinti reikšmių sklaidą, palyginti su vidutine verte;

    Sklaida apskaičiuoti visų stulpelio reikšmių statistinę dispersiją.

„Access“ suteikia du būdus pridėti funkciją Suskaičiuoti ir kitas suvestines funkcijas į užklausą. Tu gali:

    Atidarykite užklausą duomenų lapo rodinyje ir pridėkite bendrą eilutę. Sumos eilutė leidžia naudoti suvestines funkcijas viename ar daugiau užklausos rezultatų stulpelių, nekeičiant jos struktūros.

    Sukurkite galutinę užklausą. Suvestinės užklausa apskaičiuoja įrašų grupių tarpines sumas. Pavyzdžiui, jei norite apskaičiuoti visų pardavimų tarpinę sumą pagal miestą arba ketvirtį, naudokite suvestinės užklausą, kad sugrupuotumėte įrašus pagal kategorijas ir susumuotų visus pardavimus. Kita vertus, galite naudoti bendrą eilutę, kad apskaičiuotumėte bendrą vieno ar kelių duomenų stulpelių (laukų) sumą.

Pastaba: Tolesniuose šio straipsnio skyriuose išsamiai aprašomas funkcijos naudojimas. Suma, tačiau atminkite, kad visose eilutėse ir užklausose galite naudoti kitas agregavimo funkcijas. Daugiau informacijos apie kitų suvestinių funkcijų naudojimą rasite toliau pateiktame skyriuje.

Norėdami gauti daugiau informacijos apie kitų suvestinių funkcijų naudojimo būdus, žr.

Tolesniuose skyriuose aprašomi veiksmai, kuriuos turite atlikti norėdami pridėti bendrą eilutę, ir aprašoma, kaip naudoti bendrą užklausą duomenims skaičiuoti. Atkreipkite dėmesį, kad funkcija Skaičius veikia su daugiau duomenų tipų nei kitos agregacinės funkcijos. Funkcija Skaičius galima naudoti bet kokio tipo laukams, išskyrus tuos, kuriuose yra sudėtingų, pasikartojančių skaliarinių duomenų, pvz., kelių reikšmių sąrašo lauką.

Kita vertus, daugelis agregatų funkcijų veikia tik su duomenimis laukuose, kurie turi konkretų duomenų tipą. Pavyzdžiui, funkcija Suma Veikia tik su duomenų tipais Skaičius, Realus ir Valiuta. Daugiau informacijos apie duomenų tipus, reikalingus kiekvienai funkcijai, rasite toliau pateiktame skyriuje.

Jei reikia bendros informacijos apie duomenų tipus, žr. Lauko duomenų tipo keitimas.

Duomenų skaičiavimas naudojant bendrą eilutę

Norėdami į užklausą įtraukti bendrą eilutę, atidarykite ją duomenų lapo rodinyje, pridėkite eilutę ir pasirinkite funkciją Skaičius arba, pavyzdžiui, kitą suminę funkciją Suma, Minimumas, Maksimalus arba Vidutinis. Šiame skyriuje paaiškinama, kaip sukurti paprastą pasirinkimo užklausą ir pridėti bendrą eilutę.

Sukurkite paprastą pasirinkimo užklausą

Bendros eilutės pridėjimas

Slėpti visą eilutę

    Skirtuke namai grupėje Įrašai spustelėkite mygtuką Rezultatai.

Norėdami gauti daugiau informacijos apie sumos eilutės naudojimą, žr. Sumų rodymas pagal lentelės stulpelį.

Duomenų skaičiavimas naudojant suvestinės užklausą

Kai reikia suskaičiuoti kai kuriuos arba visus įrašus, pateiktus užklausoje, galite naudoti bendrą užklausą, o ne bendrą eilutę. Pavyzdžiui, galite suskaičiuoti bendrą operacijų skaičių arba operacijų skaičių konkrečiame mieste.

Paprastai suvestinė užklausa naudojama vietoj bendros eilutės, kai norite naudoti rezultato reikšmę kitoje duomenų bazės dalyje, pvz., ataskaitoje.

Visų įrašų skaičiavimas užklausoje

Įrašų skaičiavimas grupėje arba kategorijoje

Suvestinių funkcijų nuoroda

Šioje lentelėje išvardytos ir paaiškintos Access agregate funkcijos, kurias galite naudoti visose eilutėse ir užklausose. Atminkite, kad „Access“ turi daugiau apibendrinančių užklausų funkcijų nei visų eilučių. Be to, kai dirbate su „Access“ projektu (išorine „Access“ duomenų baze, kuri jungiasi prie „Microsoft SQL Server“ duomenų bazės), galite naudoti patobulintą SQL serverio teikiamų agreguotų funkcijų rinkinį. Daugiau informacijos apie juos rasite Microsoft SQL Server Books Online.

Funkcija

apibūdinimas

Palaikomi duomenų tipai

Suma

Sumuoja elementus stulpelyje. Tinka tik skaitiniams ir piniginiams duomenims.

Vidutinis

Skaičiuoja vidutinę stulpelio reikšmę. Stulpelyje turi būti skaitinės, piniginės arba datos ar laiko reikšmės. Funkcija nepaiso tuščių reikšmių.

Skaičius

Skaičiuoja elementų skaičių stulpelyje.

Visi duomenų tipai, išskyrus sudėtingus pasikartojančius skaliarinius duomenis, pvz., daugiareikšmio sąrašo stulpelį.

Norėdami gauti daugiau informacijos apie kelių reikšmių sąrašus, žr. Geriausios kelių reikšmių laukų kūrimo ir ištrynimo praktikos kelių reikšmių laukų mokymo programose.

Maksimalus

Grąžina didžiausios vertės elementą. Teksto duomenims didžiausia reikšmė yra paskutinė abėcėlės reikšmė, o Access neskiria didžiųjų ir mažųjų raidžių. Funkcija nepaiso tuščių reikšmių.

„Skaičius“, „Realus“, „Valiuta“, „Data/Laikas“

Minimumas

Grąžina elementą su mažiausia verte. Teksto duomenims mažiausia reikšmė yra pirmoji abėcėlės reikšmė, o Access neskiria didžiųjų ir mažųjų raidžių. Funkcija nepaiso tuščių reikšmių.

„Skaičius“, „Realus“, „Valiuta“, „Data/Laikas“

Standartinis nuokrypis

Rodo, kiek reikšmės skiriasi nuo vidurkio.

Daugiau informacijos apie šią funkciją rasite straipsnyje Rodyti stulpelio sumas lentelėje.

"Skaičius", "Realus", "Valiuta"

Sklaida

Apskaičiuoja visų stulpelio reikšmių statistinę dispersiją. Tinka tik skaitiniams ir piniginiams duomenims. Jei lentelėje yra mažiau nei dvi eilutės, „Access“ pateikia tuščią reikšmę.

Norėdami gauti daugiau informacijos apie dispersijos skaičiavimo funkcijas, žr. stulpelių sumų rodymas lentelėje.

"Skaičius", "Realus", "Valiuta"

Pavyzdys, kaip apskaičiuoti bendrą sumą Microsoft Access duomenų bazės lentelėje nenaudojant SQL užklausos

Kartais duomenų bazės lentelėje reikia apskaičiuoti tam tikro stulpelio skaitinių reikšmių sumą. Tam yra skirtingi skaičiavimo metodai, kurių vienas yra pagrįstas naudojant atitinkamą SQL užklausą.

Šioje užduotyje, kaip pavyzdį naudojant Microsoft Access lentelę, bendra suma apskaičiuojama nenaudojant SQL užklausos. Be to, apskaičiuojamas nurodyto stulpelio langelių verčių aritmetinis vidurkis.

Naudodami šį pavyzdį galite sukurti bet kokį skaitinį skaičiavimą keliuose nurodyto stulpelio įrašuose.

Užduotis

Dėl to ADOConnection1 komponente susidaro ConnectionString (2 pav.). Šioje eilutėje nurodomas duomenų teikėjo tipas ir visas kelias į duomenų bazės failą.

Ryžiai. 2. ADOConnection1 komponento ConnectionString

  1. Komponentų sąranka ADOConnection1, ADOTable1, DataSource1, DBGrid1.

Norėdami rodyti duomenų bazės lentelę, turite sukonfigūruoti šias komponento ypatybes:

– ADOConnection1 komponente LoginPrompt ypatybė = "false" (3 pav.) (atšaukiama vartotojo vardo ir slaptažodžio užklausa prieigai prie duomenų bazės);

– ADOTable1 komponente Connection ypatybė = „ADOConnection1“ (4 pav.);

– DataSource1 komponente DataSet ypatybė = “ADOTable1” (5 pav.);

– DBGrid1 komponente DataSource ypatybė = "DataSource1" (6 pav.);

– ADOTable1 komponente ypatybė TableName = „Worker“ (7 pav.);

– DBGrid1 komponente iš ypatybės Options nustatykite parinktį dgEditing = false (draudžiama įvesti duomenis į lentelės langelius tiesiai iš DBGrid1 tinklelio) (8 pav.).

Ryžiai. 3. ADOConnection1 komponento ypatybė LoginPrompt

Ryžiai. 4. ADOTable1 komponento ryšio savybė

Ryžiai. 5. DataSet1 komponento ypatybė

Ryžiai. 6. DBGrid1 komponento ypatybė DataSource

Ryžiai. 7. ADOTable1 komponento TableName ypatybė

Ryžiai. 8. DBGrid1 komponento ypatybės Options parinktis dgEditing

  1. Lentelės aktyvinimas.

Norėdami pateikti duomenis lentelėje, turite atlikti šiuos veiksmus (9 pav.):

– pasirinkti lentelę ADOTable1;

– savybė Aktyvus = tiesa.

Po to lentelės duomenys bus rodomi DBGrid1.

Ryžiai. 9. Aktyvioji ADOTable1 komponento savybė

  1. Komponentų dydžių ir formų nustatymas.

Kitas žingsnis – sureguliuoti formoje esančių komponentų dydžius ir padėtis, kaip parodyta 10 paveiksle.

Ryžiai. 10. Pagrindinė paraiškos forma

  1. ID_Worker lauko slėpimas DBGrid1.

Kad rodoma lentelė atrodytų teisingai, reikia paslėpti lauką ID_Worker, kuris yra rakto laukas. Lentelėje šis laukas yra skaitiklis. Pridedant naują įrašą, reikšmė šiame lauke generuojama automatiškai (padidinama 1).

Pirmiausia reikia iškviesti ADOTable1 komponento lauko redaktorių („Fields Editor…“) iš kontekstinio meniu (11 pav.).

Ryžiai. 11. ADOTable1 komponento lauko redaktoriaus iškvietimas

Atsidarys langas Form1.ADOTtable1. Šiame lange, naudodami pelę, turite iškviesti kontekstinį meniu. Kontekstiniame meniu pasirinkite komandą „Pridėti visus laukus“.

Dėl to redaktoriaus langas atrodys taip, kaip parodyta 12 pav.

Ryžiai. 12. Lauko redaktorius

Form1.ADOTable1 lauko redaktorius rodo visus lentelės Darbuotojas laukus. Norėdami ištrinti lauką ID_Worker, turite dešiniuoju pelės mygtuku spustelėti ID_Worker eilutę ir kontekstiniame meniu pasirinkti komandą Naikinti. Po to galite uždaryti redaktorių.

Dėl to DBGrid1 lentelėje bus rodomi tik du laukai (13 pav.).

Ryžiai. 13. Darbuotojų lentelės su dviem laukais atvaizdavimas

  1. Lauke Atlyginimas nustatykite išvesties filtrą iki dviejų skaičių po kablelio.

Kad sumos reikšmė (2 skaitmenys po kablelio) būtų teisingai rodoma lauke Atlyginimas, turite atlikti šiuos veiksmus.

Pasirinkite ADOTable1 komponentą. Iškvieskite laukų rengyklę „Laukų redaktorius...“, kaip aprašyta 6 veiksme. Atsidarys dviejų laukų Vardas ir Atlyginimas sąrašas. Pasirinkite eilutę pavadinimu Atlyginimas. Objekto tikrintuve bus suaktyvintas objektas pavadinimu ADOTable1Salary.

Kitas žingsnis – objekto inspektoriaus lauke „Rodymo formatas“ nustatyti „0.00“ (14 pav.).

Ryžiai. 14. Išvesties formato nustatymas objekto ADOTable1 lauke Atlyginimas

Atlikus veiksmus, lentelės laukas Atlyginimas bus rodomas 2 ženklų po kablelio tikslumu.

  1. Vidinių kintamųjų įvedimas.

Norėdami išsaugoti sumos ir aritmetinio vidurkio duomenis, į TForm1 formos klasės tekstą turite įvesti vidinius kintamuosius sum ir avg.

Kintamieji įvedami privačioje skiltyje. TForm1 formos klasės kodo fragmentas atrodo taip:

... tipo TForm1 = klasė(Tforma) ADOConnection1: TADOConnection; DataSource1: TDataSource; ADOTable1: TADOTable; DBGrid1: TDBGrid; StaticText1: TStaticText; StaticText2: TStaticText; StaticText3: TStaticText; ADOT lentelės1 pavadinimas: TWideStringField; ADOTable1Atlyginimas: TFloatField; procedūra FormActivate(Siuntėjas: TObject); procedūra FormClose(Siuntėjas: TObject; var veiksmas: TCloseAction); privatus( Privačios deklaracijos ) sum:real; // suma avg:real; // vidutinis viešas(Viešieji pareiškimai) galas; ...
  1. Formos aktyvinimo įvykio programavimas.

Kai tik vartotojas atsisiunčia programą, turite nedelsdami apskaičiuoti sumos ir aritmetinio vidurkio vertes lentelėse.

Todėl turite užprogramuoti Form1 įvykį OnActivate. Įvykis OnActivate bus iškviestas, kai forma bus suaktyvinta po to, kai programa bus paleista vykdyti.

Detaliai aprašytas įvykių programavimo Delphi pavyzdys.

Mūsų atveju įvykių tvarkytuvas atrodo taip:

procedūra TForm1.FormActivate(Siuntėjas: TObject); var f:TFlaukas; // papildomas "lauko" tipo kintamasis pradėti // 1. Patikrinimas, ar lentelėje yra įrašų jeigu ADOTable1.RecordCount = 0 tada išeiti; // 2. Išjungti vizualizaciją DBGrid1 ADOTable1.DisableControls; // 3. Pakartokite visus darbuotojų lentelės įrašus 3.1. Eikite į pirmąjį įrašą ADOTable1.First; 3.2. Iš naujo nustatyti sumą į nulį suma:= 0; // 3.3. Paimkite atlyginimo vertę iš pirmojo įrašo f:= ADOTtable1.FieldByName("Atlyginimas"); // 3.4. Lentelėje esančių įrašų peržiūra // - patikrinkite, ar pasiekta lentelės pabaiga kol ADOTable1.Eof<>tiesa daryti pradėti 3.4.1. Padidinti sumą suma:= suma + f.Vertė; 3.4.2. Eiti į kitą įrašą ADOTable1.Next; galas; // 4. Apskaičiuokite aritmetinį vidurkį avg:= suma / ADOTable1.RecordCount; // 5. Užpildykite TStaticText tipo eilutes StaticText1.Caption:= "Suma: " + FloatToStr(sum, ffFixed, 8, 2); StaticText2.Caption:= "Vidutinis atlyginimas: " + FloatToStr(vid., ffFiksuotas, 8, 2); // 6. Įgalinkite vizualizaciją DBGrid ADOTable1.EnableControls; galas;

Paaiškinkime kai kuriuos kodo fragmentus.

Metodai DisableControls ir EnableControls yra atsakingi už vaizdinių valdiklių, prijungtų prie duomenų rinkinio (duomenų bazės), išjungimą ir įgalinimą. Iškvietus DisableControls metodą, galima žymiai pagreitinti įrašų kartojimo procesą, nes tai neleis programai gaišti laiko perbraižant DBGrid1 valdiklio turinį kiekvieną kartą keisdama įrašą.

Nuosavybė

ADOTable1.RecordCount

nurodo įrašų skaičių lentelėje.

ADOTable1.Pirmiausia

nustato aktyvų pirmąjį lentelės įrašą.

ADOTable1.FieldByName()

leidžia gauti TField tipo objektą tam tikram laukui. Tada šiame objekte galite gauti informaciją iš esamo įrašo. Programoje, norint pasiekti atlyginimo lauko įrašų reikšmes, naudojamas papildomas kintamasis f tipo TField. Norėdami perskaityti dabartinio lauko atlyginimo įrašo reikšmę, tiesiog paskambinkite operatoriui

f.Vertė

Nuosavybė

ADOTable1.Eof

tampa tiesa, jei pasiekiamas lentelės galas.

ADOTable1.Kitas

įgyvendina perėjimą prie kitos lentelės įrašo.

Sumos rezultatas rodomas komponento StaticText1 ypatybėje Caption.

Vidutinė aritmetinė reikšmė rodoma StaticText2 komponento ypatybėje Caption.

  1. Paraiškos paleidimas vykdyti.

Dabar galite paleisti programą.