Advertisement
Guest User

Untitled

a guest
Apr 27th, 2015
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 11.34 KB | None | 0 0
  1. Function maken_deelbestand()
  2.  
  3. Dim dbdatabase As Database
  4. Dim t_statistiek, t_afwezig, t_aantal, Q_lot, q_afw_nu, t_controledatum, t_deelbestand As Recordset
  5. Dim q_kandidaat As Recordset
  6. Dim dagen, var_teller, antw, afw_nr, aantal_trek, aantal_rec, Teller, arr_teller As Long
  7. Dim tot_vandaag, dagen_verschil, stat_nr, var_afwezignr, aantal As Long
  8. Dim aanwezig, vandaag_afwezig As Boolean
  9. Dim vw_voldaan As Integer
  10. Dim einddatum, startdatum As Date
  11. Dim sqlstring, where_str As String
  12. Dim vandaag, dag As Date
  13. Dim bladwijzer As Variant
  14. Dim tabellen As TableDef
  15.  
  16. On Error GoTo Err_maken_deelbestand
  17.  
  18.  'Controleren of u vandaag al een bestand gemaakt hebt, indien wel wordt dat
  19.  'aan de gebruiker medegedeeld
  20.  Set dbdatabase = CurrentDb
  21.  sqlstring = "SELECT STATISTIEK.Trek_datum, CONTROLEDATUM.afwezigheidnr, CONTROLEDATUM.commentaarnr FROM CONTROLEDATUM "
  22.  sqlstring = sqlstring & "LEFT JOIN STATISTIEK ON CONTROLEDATUM.statistieknr = STATISTIEK.Statistieknr "
  23.  sqlstring = sqlstring & "ORDER BY STATISTIEK.Trek_datum;"
  24.  Set t_statistiek = dbdatabase.OpenRecordset(sqlstring)
  25.  vandaag = Date
  26.  If Not (t_statistiek.BOF) Then
  27.    t_statistiek.MoveLast
  28.    dag = t_statistiek.Fields![Trek_datum]
  29.    If dag = vandaag Then
  30.       antw = MsgBox(Chr(10) & Chr(13) & "U hebt vandaag reeds een controle-lijst gemaakt." & Chr(10) & Chr(13) & _
  31.       "Wilt U doorgaan?", vbYesNo, "Melding")
  32.       If antw = 7 Then
  33.         Exit Function
  34.       Else
  35.         Set t_afwezig = dbdatabase.OpenRecordset("select afwezigheid_nr, contr_oproep from afwezig order by afwezigheid_nr")
  36.         Do While dag = vandaag
  37.           afw_nr = t_statistiek.Fields![afwezigheidnr]
  38.           If t_statistiek.Fields![commentaarnr] = 1 Then
  39.             t_afwezig.FindFirst "[afwezigheid_nr] = " & afw_nr
  40.             If Not (t_afwezig.NoMatch) Then
  41.               t_afwezig.Edit
  42.               t_afwezig.Fields![Contr_oproep] = Empty
  43.               t_afwezig.Update
  44.             End If
  45.           End If
  46.           t_statistiek.MovePrevious
  47.           If t_statistiek.BOF Then
  48.             Exit Do
  49.           Else
  50.             dag = t_statistiek.Fields![Trek_datum]
  51.           End If
  52.         Loop
  53.       End If
  54.    End If
  55.  End If
  56.  t_statistiek.Close
  57.    
  58.  'Verwijderen van tabel deelbestand
  59.  aanwezig = False
  60.  For Each tabellen In dbdatabase.TableDefs
  61.     If tabellen.Name = "Deelbestand" Then
  62.       aanwezig = True
  63.       Exit For
  64.     End If
  65.  Next
  66.  If aanwezig Then
  67.    dbdatabase.Execute "DROP TABLE [deelbestand];"
  68.    dbdatabase.Close
  69.  End If
  70.  
  71.  'bepalen hoeveel dagen tussen de opeenvolgende werkdagen zich bevinden (var_teller)
  72.  dagen_verschil = 0
  73.  dagen = 0
  74.  einddatum = Date
  75.  startdatum = Date - 1
  76.  While (dagen <> 1)
  77.    dagen = aantal_dagen(startdatum:=CDate(startdatum), einddatum:=Date)
  78.    dagen_verschil = dagen_verschil + 1
  79.    startdatum = startdatum - 1
  80.    dagen = dagen - 1
  81.  Wend
  82.  
  83.  'kijken of er vandaag afwezig zijn
  84.  Set dbdatabase = CurrentDb
  85.  Set q_afw_nu = dbdatabase.OpenRecordset("select stamnr from q_afwezig_nu")
  86.  If q_afw_nu.BOF Then
  87.    vandaag_afwezig = False
  88.  Else
  89.    vandaag_afwezig = True
  90.  End If
  91.  q_afw_nu.Close
  92.  
  93.  'personeelsleden die vandaag afwezig zijn worden in de pot gestoken
  94.  'Set dbdatabase = CurrentDb
  95.  'Randomize
  96.  'sqlstring = "SELECT FREQUENTIE.Stamnr, Int(Rnd(frequentie.stamnr)*1000) AS Volgorde, Q_afwezig_nu.Controle_result AS "
  97.  'sqlstring = sqlstring & "contrresult, Q_afwezig_nu.Controle_result2 INTO Deelbestand "
  98.  'sqlstring = sqlstring & "FROM Q_afwezig_nu LEFT JOIN FREQUENTIE ON Q_afwezig_nu.Stamnr = FREQUENTIE.Stamnr;"
  99.  If vandaag_afwezig Then
  100.    sqlstring = "SELECT Q_afwezig_nu.Stamnr,Q_afwezig_nu.stamnr as Volgorde, Q_afwezig_nu.Controle_result AS "
  101.    sqlstring = sqlstring & "contrresult, Q_afwezig_nu.Controle_result2 INTO Deelbestand "
  102.    sqlstring = sqlstring & "FROM Q_afwezig_nu LEFT JOIN FREQUENTIE ON Q_afwezig_nu.Stamnr = FREQUENTIE.Stamnr;"
  103.    dbdatabase.Execute sqlstring
  104.    Set t_deelbestand = dbdatabase.OpenRecordset("select * from deelbestand")
  105.    t_deelbestand.MoveFirst
  106.    While Not (t_deelbestand.EOF)
  107.      Randomize
  108.      t_deelbestand.Edit
  109.      t_deelbestand.Fields![volgorde] = Int(Rnd * 1000000)
  110.      t_deelbestand.Update
  111.      t_deelbestand.MoveNext
  112.    Wend
  113.    t_deelbestand.Close
  114.  End If
  115.  
  116.  'tabel statistiek wordt aangevuld
  117.  'Set dbdatabase = CurrentDb
  118.  aanwezig = False
  119.  For Each tabellen In dbdatabase.TableDefs
  120.     If tabellen.Name = "Deelbestand" Then
  121.       aanwezig = True
  122.       Exit For
  123.     End If
  124.  Next
  125.  If aanwezig Then
  126.    Set t_deelbestand = dbdatabase.OpenRecordset("select stamnr from deelbestand")
  127.    t_deelbestand.MoveFirst
  128.    t_deelbestand.MoveLast
  129.    tot_vandaag = t_deelbestand.RecordCount
  130.    t_deelbestand.Close
  131.  Else
  132.     tot_vandaag = 0
  133.  End If
  134.  Set t_statistiek = dbdatabase.OpenRecordset("select * from statistiek")
  135.  t_statistiek.AddNew
  136.  t_statistiek.Fields![Tot_afwezig] = tot_vandaag
  137.  t_statistiek.Update
  138.  t_statistiek.MoveLast
  139.  stat_nr = t_statistiek.Fields![Statistieknr]
  140.  t_statistiek.Close
  141.  If Not (vandaag_afwezig) Then
  142.    MsgBox "Er zijn vandaag geen afwezigen!!", vbOKOnly, "Melding"
  143.    Exit Function
  144.  End If
  145.  
  146.  
  147.  'De niet "J" in de controle van deelbestand verwijderen
  148.   'dbdatabase.Execute "UPDATE deelbestand SET contrresult = '' WHERE contrresult = 'N';"
  149.   'dbdatabase.Execute "UPDATE deelbestand SET controle_result2 = '' WHERE controle_result2 = 'N';"
  150.  
  151.  'aantal dat er getrokken moet worden
  152.   Set dbdatabase = CurrentDb
  153.   Set t_aantal = dbdatabase.OpenRecordset("select stamnr from deelbestand")
  154.   t_aantal.MoveFirst
  155.   t_aantal.MoveLast
  156.   aantal_rec = t_aantal.RecordCount
  157.   If (aantal_rec = 0) Then
  158.     aantal_trek = 0
  159.   Else
  160.     If (aantal_rec Mod 5 = 0) Then
  161.        aantal_trek = aantal_rec / 5
  162.     Else
  163.        aantal_trek = Int(aantal_rec / 5) + 1
  164.     End If
  165.   End If
  166.   t_aantal.Close
  167.   If (aantal_trek = 0) Then
  168.     MsgBox "Er is geen controle vandaag !!", vbOKOnly
  169.     Exit Function
  170.   End If
  171.  
  172.  'array opvullen met stamnummers
  173.   ReDim a(aantal_trek)
  174.   ReDim opmerk(aantal_trek)
  175.   Set Q_lot = dbdatabase.OpenRecordset("select volgorde, stamnr from Q_pot_volgorde")
  176.   Teller = 1
  177.   Q_lot.MoveFirst
  178.   arr_teller = 1
  179.   a(arr_teller) = Q_lot.Fields![Stamnr]
  180.   Do While (Teller < aantal_trek)
  181.     Q_lot.MoveNext
  182.     If Q_lot.EOF Then
  183.       aantal_trek = Teller
  184.       Exit Do
  185.     End If
  186.     'For var_teller = 1 To teller
  187.     '  If a(var_teller) = Q_lot.Fields![Stamnr] Then
  188.     '     Exit For
  189.     '  End If
  190.     'Next var_teller
  191.     'If (var_teller = teller + 1) Then
  192.       arr_teller = arr_teller + 1
  193.       a(arr_teller) = Q_lot.Fields![Stamnr]
  194.     ' End If
  195.     Teller = Teller + 1
  196.   Loop
  197.   Q_lot.Close
  198.  
  199.   'criteria met de verschillende stamnummers in de where string zetten
  200.    where_str = "where ([Q_afwezig_nu]![Stamnr] = " & a(1) & ")"
  201.    If aantal_trek > 1 Then
  202.      For var_teller = 2 To aantal_trek
  203.        If Nz(a(var_teller)) = "" Then
  204.           Exit For
  205.        End If
  206.        For Teller = 1 To var_teller - 1
  207.          If a(Teller) = a(var_teller) Then
  208.            Exit For
  209.          End If
  210.        Next Teller
  211.        If (Teller = var_teller) Then
  212.           where_str = where_str & " or ([Q_afwezig_nu]![Stamnr] = " & a(var_teller) & ")"
  213.        End If
  214.      Next var_teller
  215.    End If
  216.      
  217.   'openen van de query q_afwezig_nu
  218.    sqlstring = "select * from Q_afwezig_nu " & where_str
  219.    Set q_afw_nu = dbdatabase.OpenRecordset(sqlstring)
  220.    
  221.   'de getrokken worden in de tabel "controledatum" bijgehouden
  222.    Set t_controledatum = dbdatabase.OpenRecordset("select * from controledatum")
  223.      
  224.   'records toevoegen van de getrokken in de tabel controledatum
  225.    For var_teller = 1 To aantal_trek
  226.      If Nz(a(var_teller)) = "" Then
  227.        Exit For
  228.      End If
  229.      t_controledatum.AddNew
  230.      t_controledatum.Fields![Stamnr] = a(var_teller)
  231.      t_controledatum.Update
  232.      q_afw_nu.MoveFirst
  233.      q_afw_nu.FindFirst "[stamnr] = " & a(var_teller)
  234.      bladwijzer = q_afw_nu.Bookmark
  235.      var_afwezignr = q_afw_nu.Fields![Afwezigheid_nr]
  236.      t_controledatum.MoveLast
  237.      t_controledatum.Edit
  238.      t_controledatum.Fields![afwezigheidnr] = var_afwezignr
  239.      t_controledatum.Fields![Statistieknr] = stat_nr
  240.      t_controledatum.Update
  241.      vw_voldaan = 0
  242.      'kijken of men reeds uitgeloot is en dat men al een controle resultaat heeft
  243.      If Nz(q_afw_nu.Fields![Enddate]) = "" And Nz(q_afw_nu.Fields![Contr_oproep]) <> "" Then
  244.        vw_voldaan = 6
  245.      End If
  246.      'kijken of men reeds de vorige werkdag geloot is
  247.      q_afw_nu.Bookmark = bladwijzer
  248.      vandaag = Date - dagen_verschil
  249.      If IsNull(q_afw_nu.Fields![Contr_oproep]) Then
  250.        dag = Date
  251.      Else
  252.        dag = q_afw_nu.Fields![Contr_oproep]
  253.      End If
  254.      If (dag = vandaag) Then
  255.        vw_voldaan = 5
  256.      End If
  257.      'kijken of de afwezige al gecontroleerd is
  258.      If Nz(q_afw_nu.Fields![Enddate]) <> "" Then
  259.        vw_voldaan = 4
  260.      End If
  261.      'kijken of de afwezige verlenging is van ziekte
  262.      If q_afw_nu.Fields![mogelijkheid verlenging (Gekoli)] = -1 Then
  263.        vw_voldaan = 3
  264.      End If
  265.      'kijken of de afwezige vrijstelling heeft van controle
  266.      If q_afw_nu.Fields![VRIJSTELLING] = -1 Then
  267.        vw_voldaan = 2
  268.      End If
  269.      'bijvoegen van commentaarnr in tabel controledatum
  270.      t_controledatum.MoveLast
  271.      t_controledatum.Edit
  272.      If vw_voldaan = 0 Then
  273.        t_controledatum.Fields![commentaarnr] = 1
  274.        opmerk(var_teller) = 1
  275.      Else
  276.        t_controledatum.Fields![commentaarnr] = vw_voldaan
  277.        opmerk(var_teller) = vw_voldaan
  278.      End If
  279.      t_controledatum.Update
  280.    Next
  281.    t_controledatum.Close
  282.    q_afw_nu.Close
  283.    
  284.    'toevoegen in tabel kandidaattrekkers
  285.    sqlstring = "SELECT Deelbestand.Stamnr, Count(Deelbestand.Stamnr) AS frequentie FROM Deelbestand "
  286.    sqlstring = sqlstring & "GROUP BY Deelbestand.Stamnr;"
  287.    Set Q_lot = dbdatabase.OpenRecordset(sqlstring)
  288.    Set q_kandidaat = dbdatabase.OpenRecordset("select * from kandidaattrekkers")
  289.    Q_lot.MoveFirst
  290.    Do While Not (Q_lot.EOF)
  291.       q_kandidaat.AddNew
  292.       q_kandidaat.Fields![Stamnr] = Q_lot.Fields![Stamnr]
  293.       q_kandidaat.Fields![FREQUENTIE] = Q_lot.Fields![FREQUENTIE]
  294.       q_kandidaat.Fields![Statistieknr] = stat_nr
  295.       q_kandidaat.Update
  296.       Q_lot.MoveNext
  297.    Loop
  298.    Q_lot.Close
  299.    q_kandidaat.Close
  300.    
  301.   'zetten van controle datum nl. dag van vandaag, in afwezigheid nu
  302.    Set q_afw_nu = dbdatabase.OpenRecordset("select stamnr, contr_oproep from Q_afwezig_nu")
  303.    For var_teller = 1 To aantal_trek
  304.      If Nz(a(var_teller)) = "" Then
  305.         Exit For
  306.      End If
  307.      q_afw_nu.MoveFirst
  308.      q_afw_nu.FindFirst "[stamnr] = " & a(var_teller)
  309.      If q_afw_nu.NoMatch Then
  310.        MsgBox "U moet de programmeur verwittigen (fout = 1)!", vbOKOnly, "Melding"
  311.        Exit Function
  312.      Else
  313.        If opmerk(var_teller) = 1 Then
  314.          q_afw_nu.Edit
  315.          q_afw_nu.Fields![Contr_oproep] = Date
  316.          q_afw_nu.Update
  317.        End If
  318.      End If
  319.    Next var_teller
  320.    q_afw_nu.Close
  321.    
  322.    'Wordt gevraagd of men de controle-lijst wilt zien
  323.    antw = MsgBox(Chr(10) & Chr(13) & "De controle-lijst is aangemaakt." & Chr(10) & Chr(13) & _
  324.           "Wilt U deze zien?", vbYesNo, "Vraag")
  325.    If antw = 6 Then     'Ja
  326.       controle_lijst
  327.    End If
  328.  
  329. Exit_maken_deelbestand:
  330.     Exit Function
  331.  
  332. Err_maken_deelbestand:
  333.  
  334.     MsgBox Err.Description & " " & Err.Number
  335.     Resume Exit_maken_deelbestand
  336. End Function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement