Thread View: pl.comp.bazy-danych.msaccess
5 messages
5 total messages
Started by Jan Koc
Sat, 10 Dec 2016 20:27
Uff.. jak to zrobić
Author: Jan Koc
Date: Sat, 10 Dec 2016 20:27
Date: Sat, 10 Dec 2016 20:27
53 lines
3603 bytes
3603 bytes
kolega poprosił mnie o pomoc. Dostaje od klienta co miesiąc około 300 faktur, które (tego nie rozumiem) są wymieszane, ale wcześniej na jakiś formularzach do skarbówki podsumowane częściami. Ilość faktur w jednej części jest dowolna.
I kolega musi (usiłuje) pogrupować je tak by suma faktur i suma części zgadzała się.
Jest to więc problem jak wybrać z n liczb takie które dadzą wynik "suma"
Mam próbny zestaw takich liczb (341)i zacząłem kombinować. Oczywiście ta suma może składać się z 2 liczb albo z 341. Czyli silnia !!!!
Spróbowałem policzyć silnie dla kolejnych liczb w Excelu. Dał radę do 170, dla 171 odmówił.
W realu jedna część składa się nie więcej niż z 10-ciu 15-tu faktur.
I można taki zagnieżdżony program napisać. Poniżej jest kod wybierający sumę składającą się z trzech faktur
I moje pytanie jest takie.
Czy można zapisać program takiego poszukiwania idącego "w górę" dla 2,3 ... m faktur, bez literalnego wypisywania programu dla 2.3 ... m , lecz ogólnie dla m.
Jan
___________________________________________________________
Set rekord1 = Baza.OpenRecordset("Faktury", DB_OPEN_DYNASET)' pola:"Identyfikator" i "WartoscFaktury"
Set rekord3 = Baza.OpenRecordset("Wynik", DB_OPEN_DYNASET)' pola:"Wartości" i "numery"
Dim suma As Double ' wartość która jest sprawdzaną sumą faktur
Dim zakres As Integer ' ilość faktur
Dim i1, i2, i3 As Integer
rekord1.MoveFirst
suma = 2276.89 ' tu dowolna zadeklarowana wartość
zakres = Nz(DCount("Identyfikator", "Faktury"))
'szukanie po trzech wartościach
Dim P1, P2 As Double
Dim Id1, Id2 As Long
For i1 = 1 To zakres
P1 = rekord1!WartoscFaktury
Id1 = rekord1!identyfikator
For i2 = i1 + 1 To zakres
rekord1.MoveNext
P2 = rekord1!WartoscFaktury
Id2 = rekord1!identyfikator
For i3 = i2 + 1 To zakres - 1
rekord1.MoveNext
If rekord1!WartoscFaktury + P1 + P2 = suma Then
rekord3.AddNew
rekord3![Wartości] = rekord1!WartoscFaktury & P2 & "," & P1
rekord3![numery] = rekord1!identyfikator & ", " & Id2 & "," & Id1
rekord3.Update
End If
Next i3
rekord1.FindFirst "identyfikator=" & Id2
Next i2
rekord1.FindFirst "identyfikator=" & Id1
rekord1.MoveNext
Next i1
Re: Uff.. jak to zrobić
Author: LeszekN
Date: Mon, 12 Dec 2016 09:48
Date: Mon, 12 Dec 2016 09:48
8 lines
1938 bytes
1938 bytes
W dniu sobota, 10 grudnia 2016 21:27:28 UTC+1 użytkownik Jan Koc napisał: > kolega poprosił mnie o pomoc. Dostaje od klienta co miesiąc około 300 faktur, które (tego nie rozumiem) są wymieszane, ale wcześniej na jakiś formularzach do skarbówki podsumowane częściami. co to znaczy są wymieszane??? trzeba je odmieszać:), może jak będziemy znali jaki to formularz do US nie trzeba będzie liczyć silni. Prawdopodobnie wystarczy faktury poukładać po dacie wystawienia i wtedy dopasowywać do kwoty z formularza. pozdrawiam Leszek
Re: Uff.. jak to zrobić
Author: Jan Koc
Date: Mon, 12 Dec 2016 16:59
Date: Mon, 12 Dec 2016 16:59
11 lines
1996 bytes
1996 bytes
> co to znaczy są wymieszane??? trzeba je odmieszać:), może jak będziemy znali jaki to formularz do US nie trzeba będzie liczyć silni. > Prawdopodobnie wystarczy faktury poukładać po dacie wystawienia i wtedy dopasowywać do kwoty z formularza. > > pozdrawiam > Leszek W tym problem, że są wymieszane. Podatek VAT można rozliczyć nie tylko w kwartale w którym nastąpiła sprzedaż, ale również w dwóch następnych kwartałach. Kolega otrzymał z trzech kwartałów deklaracje do US (tylko końcowe kwoty- czyli te nasze sumy) oraz kilkaset faktur. I musi to pogrupować, aby sprawdzić, czy deklaracje zostały wystawione poprawnie. Dziękuję za interesującą podpowiedź. Jan
Re: Uff.. jak to zrobić
Author: Zbigniew Bratko
Date: Mon, 12 Dec 2016 22:10
Date: Mon, 12 Dec 2016 22:10
53 lines
3503 bytes
3503 bytes
W dniu 2016-12-10 o 21:27, Jan Koc pisze: > kolega poprosił mnie o pomoc. Dostaje od klienta co miesiąc około 300 faktur, które (tego nie rozumiem) są wymieszane, ale wcześniej na jakiś formularzach do skarbówki podsumowane częściami. Ilość faktur w jednej części jest dowolna. > I kolega musi (usiłuje) pogrupować je tak by suma faktur i suma części zgadzała się. > Jest to więc problem jak wybrać z n liczb takie które dadzą wynik "suma" > > Mam próbny zestaw takich liczb (341)i zacząłem kombinować. Oczywiście ta suma może składać się z 2 liczb albo z 341. Czyli silnia !!!! > Spróbowałem policzyć silnie dla kolejnych liczb w Excelu. Dał radę do 170, dla 171 odmówił. Ale wyszło Ci ok. (7,26)^306 potęgi. To nie miliardy, ale troszkę więcej niż "kwinkwagilion"(10^300) możliwych permutacji. Na szczęście Ty nie musisz operować na takich liczbach. > > W realu jedna część składa się nie więcej niż z 10-ciu 15-tu faktur. > > I można taki zagnieżdżony program napisać. Poniżej jest kod wybierający sumę składającą się z trzech faktur > > I moje pytanie jest takie. > Czy można zapisać program takiego poszukiwania idącego "w górę" dla 2,3 ... m faktur, bez literalnego wypisywania programu dla 2.3 ... m , lecz ogólnie dla m. [...] Pierwszy krok to wybrać pierwsze 10 faktur z 300 sztuk (300 po 10). To tylko ok. 1,4 tryliona możliwości (1,4^18). Potem już tylko z górki, Na 1,4 tryliona możliwości dobrać ok. przykładowych 10 faktur, ale już tylko z 290 pozostałych faktur (290 po 10) 9,9^17, potem (280 po 10) 6,9^17 .... itd. Rok ma 31,6*10^6 sekund. Jeżeli co sekundę Twój kolega będzie układał i sumował faktury, to policz sam ile czasu mu zejdzie. Mi się wydaje, że coś ok. biliona lat. Oczywiście jak posortujesz rosnąco faktury, to suma ileś tam tych pierwszych 10 (dziesiątek) faktur da kwotę wyższą niż suma, więc kolega zaoszczędzi być może klika lat z tego biliona, potrzebnych na wybranie wszystkich możliwych kombinacji, (jak również tych ostatnich, które nie dadzą wymaganej sumy). Można zacząć od zestawów z najmniejszą ilością faktur. Przykładowo dla 5 faktur z 300, to zaledwie 19 582 837 560 kombinacji (~ 20 miliardów kombinacji). Tak od siebie dodam, że ilość możliwych kombinacji w Lotto wynosi (49 po 6)=13 983 816, czyli prawie 14 milionów kombinacji. A jak trudno tysiącom ludzi trafić "szóstkę". -- Pozdrowienia BraZby www.faq.accdb.pl www.accdb.pl
Re: Uff.. jak to zrobić
Author: LeszekN
Date: Tue, 13 Dec 2016 07:59
Date: Tue, 13 Dec 2016 07:59
11 lines
2376 bytes
2376 bytes
>W tym problem, że są wymieszane. Podatek VAT można rozliczyć nie tylko w >kwartale w którym nastąpiła sprzedaż, ale również w dwóch następnych kwartałach. >Kolega otrzymał z trzech kwartałów deklaracje do US (tylko końcowe kwoty- czyli >te nasze sumy) oraz kilkaset faktur. I musi to pogrupować, aby sprawdzić, czy >deklaracje zostały wystawione poprawnie. Dalej nie napisałeś jaka to deklaracja, VAT-7 VAT-UE ??? Deklaracje VAT np VAT 7, VAT 7K powstają na podstawie rejestrów VAT! Dalej idąc, na deklaracji powstają zaokrąglenia do pełnego złotego. Sprzedaż wykazuje się w miesiącu lub kwartale sprzedaży!!! nie można wykazać sprzedaży z miesiąca np styczeń oczywiście w rozliczeniu miesięcznym w miesiącu luty, i tak samo w kwartalnych czyli z I kw w II kwartale. Co do wymieszanych faktur, faktury ewidencjonuje się w dwa sposoby po dacie wystawienia faktury lub po dacie wpływu. Zadanie nie do wykonania, chyba ze masz bardzo dużo czasu :D pozdrawiam Leszek
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads