päiväyksistä vkonloput pois

otso

Pitäisi saada eräässä kyselyssä accessissa laskettua kahden ajan välinen aikaero tunteita, mutta luvuista pitäisi ottaa pois mahdolliset viikonloput?? onko tähän mitään tapaa? olen käyttänyt tähän asti DateDiff funktiota, mutta ei ainakaan itse löytänyt siitä tällaista ominaisuutta..

11

635

Äänestä

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • eakem

      ...millaisesta kyselystä on kyse.

      • eakem

        Tässä on yksi kyselyn malli:
        select * from taulu where format(pvm_kentta,'ddd') not in ('la','su');

        Nuo la ja su korvaat niillä päivillä jotka haluat jättää pois. Tosta jää lauantait ja sunnuntait pois. Jos access on eri kielinen (tai saattaa olla kiinni myös käyttiksen kieliasetuksista, en muista varmaksi) niin muutat noita 'la' ja 'su' vastaavasti.


      • otso
        eakem kirjoitti:

        Tässä on yksi kyselyn malli:
        select * from taulu where format(pvm_kentta,'ddd') not in ('la','su');

        Nuo la ja su korvaat niillä päivillä jotka haluat jättää pois. Tosta jää lauantait ja sunnuntait pois. Jos access on eri kielinen (tai saattaa olla kiinni myös käyttiksen kieliasetuksista, en muista varmaksi) niin muutat noita 'la' ja 'su' vastaavasti.

        minulla on siis taulukossa kaksi kenttää, aloitus-ja lopetusaika. minun pitäisi saada laskettua näiden kahden kentän välinen aikaero tunteina sillälailla, että viikonloppuja ei oteta huomioon. esim jos aloitusaika on 6.8.2004 23.45 (joka sattuu olemaan perjantai) ja lopetusaika on 9.8.2004 9.45 (maanantai) niin näiden välinen aikaero pitäisi olla 10 tuntia eikä 58 tuntia, jonka DateDiff laskee. Onko tähän olemassa mitään tapaa? Vieläkin parempi olisi jos pystyisi ohittamaan kaikki pyhäpäivät, mutta se taitaa jo olla aivan liian vaikeeta...


      • ...........
        otso kirjoitti:

        minulla on siis taulukossa kaksi kenttää, aloitus-ja lopetusaika. minun pitäisi saada laskettua näiden kahden kentän välinen aikaero tunteina sillälailla, että viikonloppuja ei oteta huomioon. esim jos aloitusaika on 6.8.2004 23.45 (joka sattuu olemaan perjantai) ja lopetusaika on 9.8.2004 9.45 (maanantai) niin näiden välinen aikaero pitäisi olla 10 tuntia eikä 58 tuntia, jonka DateDiff laskee. Onko tähän olemassa mitään tapaa? Vieläkin parempi olisi jos pystyisi ohittamaan kaikki pyhäpäivät, mutta se taitaa jo olla aivan liian vaikeeta...

        Ellen ole aivan väärässä, niin tuota et saa tehtyä suoraan tietokannassa, vaan se pitää tehdä jollain ohjelmointikielel, ihan helppo tommonen on tehdä.

        Otat eka kahden päivämäärän eron tolla DateDiffil tietokannasta (otat myös päivämäärä kenttien arvot mukaan) sit tarkastat ohjelmointikielelläsi onko siinä viikonloppuja välissä tai juhlapyhiä, jos on niin vähennät 24h*päivien lukumäärä, siis viikonlopussa 48h vähennys

        Ihan mielenkiinnosta mihkä sie tota tarttet?


      • osto
        ........... kirjoitti:

        Ellen ole aivan väärässä, niin tuota et saa tehtyä suoraan tietokannassa, vaan se pitää tehdä jollain ohjelmointikielel, ihan helppo tommonen on tehdä.

        Otat eka kahden päivämäärän eron tolla DateDiffil tietokannasta (otat myös päivämäärä kenttien arvot mukaan) sit tarkastat ohjelmointikielelläsi onko siinä viikonloppuja välissä tai juhlapyhiä, jos on niin vähennät 24h*päivien lukumäärä, siis viikonlopussa 48h vähennys

        Ihan mielenkiinnosta mihkä sie tota tarttet?

        tarvitsisin tätä tomintoa vaan erääseen hommaan missä pitäisi katsoa pitävätkö tietyt lähtövalmiustasot paikkansa. Siinä vain pitäisi skipata viikonloput. Tässä ohjelmointikielen käytössä on vain se ongelma, että minun tapauksessani se tieto pitäisi saada toimimaan automaattisesti kun taulukkoa taas joskus tulevaisuudessa päivitetään, joten jos teen se jotenkin muuten niin joudun aina siirtämään tiedot ensiksi omaan ohjelmaani ja takaisin ja siitä aiheutuu sitten hieman liikaa hommaa.. Mutta kiitoksia vaan avusta, yritän vielä keksiä jotain ratkaisuja ongelmaan.


      • Punikki & 7 hyypiötä
        osto kirjoitti:

        tarvitsisin tätä tomintoa vaan erääseen hommaan missä pitäisi katsoa pitävätkö tietyt lähtövalmiustasot paikkansa. Siinä vain pitäisi skipata viikonloput. Tässä ohjelmointikielen käytössä on vain se ongelma, että minun tapauksessani se tieto pitäisi saada toimimaan automaattisesti kun taulukkoa taas joskus tulevaisuudessa päivitetään, joten jos teen se jotenkin muuten niin joudun aina siirtämään tiedot ensiksi omaan ohjelmaani ja takaisin ja siitä aiheutuu sitten hieman liikaa hommaa.. Mutta kiitoksia vaan avusta, yritän vielä keksiä jotain ratkaisuja ongelmaan.

        >Tässä ohjelmointikielen käytössä on vain se ongelma, että minun tapauksessani se tieto pitäisi saada toimimaan automaattisesti kun taulukkoa taas joskus tulevaisuudessa päivitetään, joten jos teen se jotenkin muuten niin joudun aina siirtämään tiedot ensiksi omaan ohjelmaani ja takaisin ja siitä aiheutuu sitten hieman liikaa hommaa..

        No tuonhan saa VBA:lla tehtyä eli tietoja ei tarvi käyttää minkään ulkoisen ohjelman kautta.


    • paakki

      Laita hakukyselyn Ehdoksi:
      Not "la" And Not "su"

      Tämä poistaa päivämääräkentästä päivät "la" ja "su".

      Korvaat tietysti nuo "la" ja "su" sun omilla pvm-nimikkeilläsi.

      • paakki

        Mulla on Access-lomakkeessa tällainen pvm-juttu, joka on toteutettu Accessin Visual Basic-koodilla.

        Lomakkeessa on kolme Muokkausruutua:
        Muokkaus36 on muotoa Weekday(Date()).
        Muokkaus38 on pelkkä muokkausruutu ilman muotoja.
        Muokkaus40 on muotoa =Time()

        Koodi (Lomaketta aktivoitaessa):
        - - - - - - - - - -
        Private Sub Form_Activate()
        Me.Refresh

        If Muokkaus36 = 1 Then
        Muokkaus38 = "sunnuntai " & Date
        Else
        If Muokkaus36 = 2 Then
        Muokkaus38 = "maanantai " & Date
        Else
        If Muokkaus36 = 3 Then
        Muokkaus38 = "tiistai " & Date
        Else
        If Muokkaus36 = 4 Then
        Muokkaus38 = "keskiviikko " & Date
        Else
        If Muokkaus36 = 5 Then
        Muokkaus38 = "torstai " & Date
        Else
        If Muokkaus36 = 6 Then
        Muokkaus38 = "perjantai " & Date
        Else
        If Muokkaus36 = 7 Then
        Muokkaus38 = "lauantai " & Date

        End If
        End If
        End If
        End If
        End If
        End If
        End If

        End Sub
        - - - - - - - - - -
        Koodi (Muokkaus38:aa klikatessa):

        Private Sub Muokkaus38_DblClick(Cancel As Integer)

        Muokkaus40 = Time()
        MsgBox "Tänään on " & Muokkaus38 & " ja kello on " & Muokkaus40 & "."
        Me.Refresh

        End Sub
        - - - - - - - - - -
        Eli kun kun lomake aktivoituu (avautuu), saa tietyt muokkausruudut arvoiksi joko ajan tai viikonpäivän. Ja kun klikkaa Muokkaus38:aa, tulee sen arvoksi "Tänään on maanantai 23.8.2004 ja kello on 12:11:45."

        Aika pitkä ja ehkä sekavakin juttu, mutta tuo toimii täysin. Sun kohdalla voisit tehdä kyselyn, joka poistaa siis lauantait ja sunnuntait. Tällöin joudut kyllä käyttämään muokkausruutujen asemesta taulukoissa olevia kenttiä, joille annat muodoiksi joko pvm, klo tai teksti.


    • eakem

      ...alku- ja loppuajan välillä, ts. useita viikonloppuja? Jos ei, voisi tehdä union kyselyn, jossa aikajakson pilkkoo osiin, esim:

      SELECT nimi,alkuaika,loppuaika,alkuaika as uusialkuaika, datevalue(dateadd('d',1,alkuaika))-alkuaika as hyv_aika
      FROM Taulukko1
      where loppuaika-alkuaika>0
      UNION
      SELECT nimi,alkuaika,loppuaika,datevalue(alkuaika 1) as uusialkuaika,
      iif(dateadd('d',2,alkuaika)0 and format(alkuaika 1,'ddd') not in ('la','su')
      UNION
      SELECT nimi,alkuaika,loppuaika,datevalue(alkuaika 2) as uusialkuaika,
      iif(dateadd('d',3,alkuaika)0 and format(alkuaika 2,'ddd') not in ('la','su')
      UNION
      SELECT nimi,alkuaika,loppuaika,datevalue(alkuaika 3) as uusialkuaika,
      iif(dateadd('d',4,alkuaika)0 and format(alkuaika 3,'ddd') not in ('la','su')
      UNION
      SELECT nimi,alkuaika,loppuaika,alkuaika 4 as uusialkuaika,
      iif(dateadd('d',5,alkuaika)0 and format(alkuaika 4,'ddd') not in ('la','su')
      UNION
      SELECT nimi,alkuaika,loppuaika,alkuaika 5 as uusialkuaika,
      iif(dateadd('d',6,alkuaika)0 and format(alkuaika 5,'ddd') not in ('la','su')
      UNION SELECT nimi,alkuaika,loppuaika,alkuaika 6 as uusialkuaika,
      iif(dateadd('d',7,alkuaika)0 and format(alkuaika 6,'ddd') not in ('la','su');

      Tämän toiminta edellyttää, että alku- ja loppuajan välillä on max 7 vuorokautta. Jos aikajaksot on pitkiä, ei ole (ehkä) mitään järkeä tehdä näin. Tuon voi sitten vielä summata uudessa kyselyssä, jolloin saa yhden tietueen per tapahtuma, esim:
      SELECT kysely4.nimi, kysely4.alkuaika, kysely4.loppuaika, sum(kysely4.hyv_aika) AS arkipaiva_aika
      FROM kysely4
      GROUP BY kysely4.nimi, kysely4.alkuaika, kysely4.loppuaika;

      Tulos on näissä kyselyissä päivinä, kun päivämääriä vähennetään toisistaan.
      Kysely4 on tässä tapauksessa tuo eka union kysely.

      Myös switch- funktiolla voisi olla käyttöä tilantessasi.
      Datan luonne (lähinnä alku- ja loppuajan välisen jakson maksimipituus) ratkaisee sen, onko järkevää lähteä tekemään kyselyä, joka hanskaisi homman.

      • otso

        kiitos vaan vastauksesta mutta tässä tapauksessa on niin, että aikajakson pituus saattaa tietyissä tilanteissa lähennellä monia kuukausia joten tuo mainitsemasi ehdotus voi olla hieman hankala


    • Kunde

      Sub Tunnit(Alku As Date, Loppu As Date)
      Dim Tunnit As Double
      Dim x As Date
      x = Format(Alku, "dd/mm/yyyy")
      Tunnit = DateDiff("h", Alku, Loppu)
      While x 5 Then
      laskuri = laskuri 1
      x = x 1
      Else
      x = x 1
      End If
      Wend
      Tunnit = Tunnit - laskuri * 24
      MsgBox Tunnit
      End Sub

      Sub Koe()
      Tunnit TxtAlku.Text,txtLoppu.Text
      End Sub

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Hoitajalakko peruuntuu, tilalle joukkoirtisanoutumiset

      "Tehyn ja Superin hallitukset kokoontuivat tänään toteamaan, että tilanne edellyttää järeämpiä työtaistelutoimia." https://www.hs.fi/politiikka/art-2
      Maailman menoa
      739
      9166
    2. Johan tuli oikea aivopieru Britti Lordilta

      Emeritusprofessori Lordi Robert Skidelsky sanoi Suomen rikkovan YYA sopimusta joka on tehty Neuvostoliiton kanssaa 1948. Mitä pir
      Maailman menoa
      373
      7947
    3. Tehyn Rytkösellä tallessa tekstiviestit A-studiokohussa

      https://www.mtvuutiset.fi/artikkeli/a-studiosta-kohu-tehyn-rytkosen-mukaan-ministeri-linden-sai-paattaa-osallistujat-ohjelma-kiistaa-vaitteen/8407068
      Maailman menoa
      161
      5657
    4. William ja Sonja Aiello ERO

      Hyvä Sonja! Nyt etsit uudet kaverit ja jätät nuo huume- ja rahanpesu porukat haisemaan taaksesi!
      Kotimaiset julkkisjuorut
      54
      2353
    5. Oho! Seurapiirikaunotar, ex-missi Sabina Särkkä yllättää tällä harvinaisella kyvyllä: "Mulla on..."

      Sabina Särkkä on nähty monissa tv-reality-sarjoissa. Mutta tiesitkö, että Särkällä on valokuvamuisti? https://www.suomi24.fi/viihde/oho-seurapiirikaun
      Kotimaiset julkkisjuorut
      6
      2091
    6. Se siitä sitten

      Kirjoitan tänne kun en sulle voi. En vaivaa sua enää koskaan. En ikinä tarkoittanut olla ahdistava tai takertuva. Tunteet heräsi enkä osannut olla tyy
      Ikävä
      82
      1740
    7. Ohhoh! Rita Niemi-Manninen otti ison tatuoinnin - Herätti somekansan: "Täydellinen paikka!"

      Rita Niemi-Mannisen suuri, uusi tatuointi on saanut somekansan heräämään talvihorroksesta. Niemi-Manninen otti tatskan rakkauslomalla Aki-miehensä kan
      Kotimaiset julkkisjuorut
      20
      1688
    8. Ihastumisesta kertominen

      Olen päättänyt kertoa tunteistani ihastukseni kohteelle. Erityisen vaikeaksi tilanteeni tekee se, että kyseessä on ns. kielletty rakkaus. Olen jo toi
      Ihastuminen
      92
      1427
    9. Taas Venäjän tiedoittaja akka Varoitti Suomea ja Ruotsia liittymästä Natoon

      Juuri sopivasti julkaistu varoitus, kun Suomen eduskunta alkaa klo 13:50 käsitellä asiaa suorassa TV 1:n lähetyksessä. ILtasanomat.
      Maailman menoa
      438
      1358
    10. Harvoin julkisuudessa nähty Jari Sillanpää, 56, julkaisi uusia kuvia - Karisti Suomen pölyt jaloista

      Huumekohun jälkeen matalaa profiilia pitänyt Jari "Siltsu" Sillanpää on ollut vaitonainen elämästään. Tänä keväänä miehen some on ollut hiljainen. Nyt
      Kotimaiset julkkisjuorut
      7
      1283
    Aihe