-Ïîèñê ïî äíåâíèêó

Ïîèñê ñîîáùåíèé â rss_sql_ru_access_programming

 -Ïîäïèñêà ïî e-mail

 

 -Ïîñòîÿííûå ÷èòàòåëè

 -Ñòàòèñòèêà

Ñòàòèñòèêà LiveInternet.ru: ïîêàçàíî êîëè÷åñòâî õèòîâ è ïîñåòèòåëåé
Ñîçäàí: 16.03.2006
Çàïèñåé:
Êîììåíòàðèåâ:
Íàïèñàíî: 4


Ôóíêöèÿ íà îáíîâëåíèå ïðîöåíòà â òàáëèöå

Ñóááîòà, 04 Èþíÿ 2016 ã. 20:12 + â öèòàòíèê
Ïðèâåòñòâóþ!

Èñïîëüçóþ ðàçäåëåííóþ áàçó äàííûõ *.mdb â ñðåäå Access 2010

Âîçíèêëà òàêàÿ çàäà÷à:
Åñòü ñîòðóäíèêè, ó êîòîðûõ ïîñòîÿííàÿ ñòàâêà 40% îò âûïîëíåííûõ ðàáîò. Òîò, êòî çàðàáîòàë ñðåäè ñîòðóäíèêîâ ìàêñèìàëüíóþ çàðïëàòó, äîëæåí ïîëó÷àòü åå ïî ïðîöåíòíîé ñòàâêå 50%. Îðãàíèçîâàòü â ôîðìå ïîëÿ äëÿ âûâîäà: ñóììû âñåõ èíæåíåðîâ è îáùåé ñòîèìîñòè ðåìîíòîâ.

tbl_Tehniks

ID_TehniksDate_DawnSum_Remonta
155616.06.2015584.00
155721.06.20151347.00

ãäå ID_Tehniks - íîìåð òåõíèêè, Date_Dawn - Äàòà çàâåðøåíèÿ ðåìîíòà, Sum_Remonta - Îáùàÿ ñòîèìîñòü ðåìîíòà

tbl_Okazanie_Uslug

IDID_TehniksID_GoodsQtyPricePrice_Det
11115568410.00 84.00
1121556null1500.000.00

ãäå ID_Goods - íîìåð çàï÷àñòè, Qty - êîë-âî, Price - ñòîèìîñòü óñëóãè, Price_Det - ñòîèìîñòü çàï÷àñòè


tbl_Current_Tehniks
ID_Current_RemontID_TehniksID_Sotrudnik
12111111

ãäå ID_Current_Remont - íîìåð ðåìîíòà, ID_Tehniks - íîìåð òåõíèêè, ID_Sotrudnik - íîìåð ñîòðóäíèêà


tbl_Sotrudniki
ID_SotrudnikStavka
1 40%

ãäå ID_Sotrudnik - íîìåð ñîòðóäíèêà, Stavka - ïðîöåíòíàÿ ñòàâêà

Îáùóþ ñòîèìîñòü ðåìîíòîâ íàõîæó çàïðîñîì qry_SumRem
SELECT Sum(tbl_Tehniks.Sum_Remonta) AS [Sum-Sum_Remonta], tbl_Current_Tehniks.ID_Sotrudnik
FROM tbl_Tehniks INNER JOIN tbl_Current_Tehniks ON tbl_Tehniks.ID_Tehniks = tbl_Current_Tehniks.ID_Tehniks
WHERE (((tbl_Tehniks.Date_Dawn) Between dIn() And dOut()))
GROUP BY tbl_Current_Tehniks.ID_Sotrudnik;


Ñòîèìîñòü çàï÷àñòåé íàõîæó çàïðîñîì qry_SumDetIng
SELECT Sum([Qty]*[price_Det]) AS SumDet, tbl_Current_Tehniks.ID_Sotrudnik
FROM (tbl_Tehniks INNER JOIN tbl_Current_Tehniks ON tbl_Tehniks.ID_Tehniks = tbl_Current_Tehniks.ID_Tehniks) INNER JOIN tbl_Okazanie_Uslug ON tbl_Tehniks.ID_Tehniks = tbl_Okazanie_Uslug.ID_Tehniks
WHERE (((tbl_Tehniks.Date_Dawn) Between dIn() And dout()) AND ((tbl_Okazanie_Uslug.ID_Goods)>0))
GROUP BY tbl_Current_Tehniks.ID_Sotrudnik;


äàëåå ñîáèðàþ â êó÷ó çàïðîñîì qry_Sums
SELECT qry_SumDetIng.SumDet, qry_SumRem.[Sum-Sum_Remonta], qry_SumDetIng.ID_Sotrudnik
FROM qry_SumDetIng INNER JOIN qry_SumRem ON qry_SumDetIng.ID_Sotrudnik = qry_SumRem.ID_Sotrudnik;


Õî÷ó ðàçîáðàòüñÿ êàê îðãàíèçîâàòü îäèí çàïðîñ ÷òîá ïðè ìàêñèìóìå ó êîãî-òî èç ñîòðóäíèêîâ óñòàíàâëèâàëàñü ñòàâêà 50%?
Âàëèäíîñòü ñòàâêè âñåãäà ðàâíà ðàáî÷åé íåäåëå.


ìîäóëü â áàçå
Public Function dIn() As Date
    dIn = Date - Weekday(Date, vbMonday) + 1
End Function

Public Function dOut() As Date
    dOut = Date - Weekday(Date, vbMonday) + 6
End Function


Ïîêà âñå ÷òî íàðàáîòàë...
Private Sub Êíîïêà54_Click()
    Dim strSqlSRA As String
    Dim strSqlSZA As String
    Dim strSqlSD As String
    Dim strSqlSN As String
    Dim iSD As Integer
    Dim iSR As Integer
    Dim iSN As Integer
    Dim dIn As Date
    Dim dOut As Date
    Dim rst As ADODB.Recordset
        ' Òóò èñïîëüçóþ ìåñòíûé ðàñ÷åò äàòû âûáîðêè ïî ïðîöåäóðå
        dIn = Date - Weekday(Date, vbMonday) + 1
        dOut = Date - Weekday(Date, vbMonday) + 6 
        ' Çàïðîñ, êîòîðûé ïîêàçûâàåò ïðîâåäåííóþ ñóììó ðåìîíòîâ çà òåêóùóþ íåäåëþ
        strSqlSRA = "SELECT Sum(tbl_Tehniks.Sum_Remonta) AS All_Sum_Remonts FROM tbl_Tehniks " & _
                    "WHERE tbl_Tehniks.Date_Dawn Between #" & Format(dIn, "mm\/dd\/yy hh\:mm\:ss") & "#" & " AND #" & Format(dOut, "mm\/dd\/yy hh\:mm\:ss") & "# " & _
                    "And tbl_Tehniks.Otrem = True;"
        Set rst = New ADODB.Recordset
            rst.Open strSqlSRA, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
            iSR = Format(rst.Fields("All_Sum_Remonts"), "fixed")
            rst.Close
        Set rst = Nothing
        Me.fld_All_Sum_Rem = iSR
        
        'Çàïðîñ, êîòîðûé ïîêàçûâàåò ñóììó çàï÷àñòåé
        strSqlSD = "SELECT Sum(tbl_Okazanie_Uslug.Price_Det * tbl_Okazanie_Uslug.Qty) AS SumDet " & _
                    "FROM tbl_Tehniks INNER JOIN tbl_Okazanie_Uslug ON tbl_Tehniks.ID_Tehniks = tbl_Okazanie_Uslug.ID_Tehniks " & _
                    "WHERE tbl_Tehniks.Date_Dawn Between #" & Format(dIn, "mm\/dd\/yy hh\:mm\:ss") & "#" & " AND #" & Format(dOut, "mm\/dd\/yy hh\:mm\:ss") & "# " & _
                    "And tbl_Tehniks.Otrem = True;"
        Set rst = New ADODB.Recordset
            rst.Open strSqlSD, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
            iSD = Format(rst.Fields("SumDet"), "fixed")
            rst.Close
        Set rst = Nothing
        MsgBox iSD
        
        ' Çàïðîñ, êîòîðûé ïîêàçûâàåò ñóììó îò íàöåíêè íà çàï÷àñòü
        strSqlSN = "SELECT Sum(([tbl_tovary].[price_naz]-[tbl_tovary].[price_tov])*[tbl_okazanie_uslug].[qty]) AS [SumNac]" & _
                    "FROM tbl_Tehniks INNER JOIN (tbl_Tovary INNER JOIN tbl_Okazanie_Uslug ON tbl_Tovary.Id_Tovar = tbl_Okazanie_Uslug.ID_Goods) ON tbl_Tehniks.ID_Tehniks = tbl_Okazanie_Uslug.ID_Tehniks " & _
                    "WHERE tbl_Tehniks.Date_Dawn Between #" & Format(dIn, "mm\/dd\/yy hh\:mm\:ss") & "#" & " AND #" & Format(dOut, "mm\/dd\/yy hh\:mm\:ss") & "#;"

        Set rst = New ADODB.Recordset
            rst.Open strSqlSN, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
            iSN = Format(rst.Fields("SumNac"), "fixed")
            Me.fld_Pribyl = iSN
        MsgBox "Ôóíêöèÿ íàõîäèòñÿ åùå â ðàçðàáîòêå..."
        Exit Sub
        'Çàïðîñ, êîòîðûé ïîêàçûâàåò ñóììó çàðïëàò ïî âñåì èíæåíåðàì
        strSqlSZA = "SELECT Sum(([Sum-Sum_Remonta]-[SumDet])*[Stavka]) AS Zarplata " & _
                    "FROM (tbl_Sotrudniki RIGHT JOIN (qry_Sum_Rem_Ingeners LEFT JOIN qry_Sum_Detali_Ingeners " & _
                    "ON qry_Sum_Rem_Ingeners.First_Name = qry_Sum_Detali_Ingeners.Sotrudnik) " & _
                    "ON tbl_Sotrudniki.First_Name = qry_Sum_Detali_Ingeners.Sotrudnik) LEFT JOIN qry_Sum_Avans " & _
                    "ON tbl_Sotrudniki.ID_Sotrudnik = qry_Sum_Avans.ID_Sotrudnik;"
        Set rst = New ADODB.Recordset
            rst.Open strSqlSZA, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
            MsgBox rst.Fields("Zarplata")
            rst.Close
        Set rst = Nothing
End Sub


Êàê ñîåäèíèòü âñå â êó÷ó è ïðîèçâåñòè ðàñ÷åò? Áóäó ïðèçíàòåëåí çà ïîäñêàçêè, íå ôàêò ÷òî ìîé àëãîðèòì êîäà "ëó÷øèé".

http://www.sql.ru/forum/1216969/funkciya-na-obnovlenie-procenta-v-tablice


 

Äîáàâèòü êîììåíòàðèé:
Òåêñò êîììåíòàðèÿ: ñìàéëèêè

Ïðîâåðêà îðôîãðàôèè: (íàéòè îøèáêè)

Ïðèêðåïèòü êàðòèíêó:

 Ïåðåâîäèòü URL â ññûëêó
 Ïîäïèñàòüñÿ íà êîììåíòàðèè
 Ïîäïèñàòü êàðòèíêó