Stránka 1 z 1

Dotaz v Access pro výpis možných výskytu výpočtem

Napsal: 03 dub 2013 14:24
od geniusz
Prosím o pomoc
Jelikož delší dobu nikdo nereagoval prosím alespoň o radu kde se zaměřit se studiem!
Jde o proceduru, která by měla udělat asi toto:
Z formuláře vzít datum od a datum do, ke každému dni v rozpětí zjistit zda událost tento den je či nikoli a pak vypsat do formuláře jako datový list.
Jako začátečník samouk zvládnu sestavit smyčky pro vypočet i načteni potřebných údajů z tabulek, ale nevím kterou metodu použit pro sestaveni vypočtu do nějakého objektu a jak následně s objektem zacházet.


Mám tabulku, do které ukládám hodnoty pro výpočet data pravidelně opakovaných události.
Příklad:

ID |Název Události |Den Události |Opakovaní Události |
1. | Událost - 1. .. | Pondělí . . . | Každý týden . . . . |
2. | Událost - 2. .. | Čtvrtek . . . | Sudé týdny . . . . . |
3. | Událost - 3. .. | Úterý . . . . | Třetí v měsíci . . . .|
4. | Událost - 4. .. | Pátek . . . . | Poslední v měsíci . |

Kde:
Událost 1 se opakuje každé pondělí
Událost 2 je každý čtvrtek v sudých týdnech
Událost 3 je ve třetí úterý v měsíci
Událost 4 je vždy v poslední pátek v měsíci
Atd.
Vytvořil jsem si funkci vypocetData(Aktuální datum, Den Události, Opakovaní Události), která mi vrací výskyt události v týdnu, v němž je Aktuální datum.
Potřebují ale vytvořit dotaz pro zobrazení dat událostí za jiné období než týden, například tento měsíc (duben), kde pro „Událost 1“ by v dotazu bylo 5 řádku, pro „Událost 2“ 2 řádky a pro ostatní po jednom řádku s datem výskytu.

Nemusí to byt vyloženě dotaz. Možná by bylo vhodnější toto protáhnout smyčkou, ale zase nevím jak to seskládat na formulář (datový list).

Re: Dotaz v Access pro výpis možných výskytu výpočtem

Napsal: 08 dub 2013 14:34
od geniusz
Jelikož delší dobu nikdo nereagoval prosím alespoň o radu kde se zaměřit se studiem!
Jde o proceduru, která by měla udělat asi toto:
Z formuláře vzít datum od a datum do, ke každému dni v rozpětí zjistit zda událost tento den je či nikoli a pak vypsat do formuláře jako datový list.
Jako začátečník samouk zvládnu sestavit smyčky pro výpočet i načteni potřebných údajů z tabulek, ale nevím kterou metodu použit pro sestaveni vypočtu do nějakého objektu a jak následně s objektem zacházet.

Re: Dotaz v Access pro výpis možných výskytu výpočtem

Napsal: 10 dub 2013 19:19
od geniusz
Možná jsem se upnul špatným směrem, ale něco v tomto smyslu by to mělo byt. Uvítám jakýkoli názor a pomoc. Už jsem v google přeložil asi polovinu nápovědy a začátek už nepamatuji, pořád nemohu narazit na potřebný příklad.

Kód: Vybrat vše

Public Sub cmdZobrazit_Clik()
Dim PoleProUskladněni As ?????
Dim Dotaz As ?????
Dim MySQL As String   
Dim DatumOd As Date
Dim DatumDo As Date
Dim DatumVypoctu As Date
Dim PocetDnu As Integer

DatumOd = txtDatumOd
DatumDo = txtDatumDo
PocetDnu = DateDiff("d",DatumOd,DatumDo)
DatumVypoctu = DatumOd
  For 0 To PocetDnu
    MySQL = "Select Id, Udalost, ZpusobOpakovani, DenDenOpakovani," & _
            " FunkceVypoctu(ZpusobOpakovani,DenDenOpakovani,DatumVypoctu) As VypocitaneDatum" & _
            " From TabulkaUdalosti;"
    Dotaz = MySQL
       
' Vypis "Dotaz " bude obsahovat všechny položky, takže bych potřeboval z něho odstranit
' řádky, ve kterých "VypocitaneDatum <> DatumVypoctu"

' Seskládat do nějakého objektu
    PoleProUskladněni = PoleProUskladněni & Dotaz
' přičíst den     
    DatumVypoctu = DateAdd("d",1,DatumVypoctu)
' zopakovat smyčku s každým datem
  Next
' Teď rozbalit a seskládat do textových polí na formuláři
  Něco.? = PoleProUskladněni
           txtId.ControlSource = "Id"
           txtUdalost.ControlSource = "Udalost"
           txtVypocitaneDatum.ControlSource = "VypocitaneDatum"

End Sub

Re: Dotaz v Access pro výpis možných výskytu výpočtem

Napsal: 11 dub 2013 14:50
od geniusz
Pro upřesněni
Procedura by měla v podstatě řešit obdobnou věc co v Outlooku opakované událostí.
Akorát mé výpočty zahrnují opakování událostí navíc, jako např. v neděli po Jiřím (24.4.), nebo čtvrtek před desátou neděli po velikonocích, atd. (Jedná se o různé poutě a jiné slavnosti)
Potřebuji formulář se dvěma poli pro zadávaní vstupních dat, datum Od a datum Do a podformulář s tabulkou, ve které bude výpis událostí připadajících na toto období.
Mám vytvořené funkce pro vypočet. Tyto funkce vrací datum událostí „funkceVelikonoce(VstupniDatum)“ . U událostí ročních vrátí datum dle roku ve „VstupniDatum“, u událostí měsíčních dle měsíce a roku, atd.
V php bych patřičný výsledek dosáhl cca obdobným kódem:

Kód: Vybrat vše

$dotaz = "SELECT * FROM TabkaUdalosti ";
$datum_vypoctu = $datum_od

       if (!($vysledek = @mysql_db_query($databaze, $dotaz)))
   {
   echo "Chyba"; 
   }
      for ($j= $datum_od;$j<$datum_do;$j+ $den) // For (jen priklad)
 {
      if(($pocet_radku = @mysql_num_rows($vysledek))!=0)
   {
      while($radek = @mysql_fetch_array($vysledek))
      {
       $datum_udalost = FunkceVypoctu($radek["zpusob_vypoctu"],$datum_vypoctu)
          if ( $datum_udalost == $datum_vypoctu)
          {
              echo "<tr><td>"$radek["id_udalosti"] "</td>";
              echo "<td>"$radek["nazev_udalosti"] "</td>";
              echo "<td>"$datum_vypoctu "</td></tr>";
          }
      }
   }
 } 

Nezkoušel jsem to, nehodlám tuto databázi provozovat na webu.