Avatar billede pejsen Nybegynder
08. juni 2004 - 21:40 Der er 6 kommentarer og
1 løsning

Bundte postnumre

Hej

Jeg arbejder iet firma der blandt andet pakker  adresseret månedsmagasiner til Post Danmark.
Adresserne på måndesmagasinerne blive printe med nogle industri inkjet printere.
Adresserne modtager vi fra vores kunder. Disse databaser forbereder og sortere vi i en bestemt postnr. rækkefølge og eksportere til en txt. fil.
Der er imellem 1000 - 400.000 adr. i hver database.

Efter at magasinerne har fået printet adresserne på, bliver de bundtet og snørret.
Hver bundt må kun indeholde det samme postnummer.
Bundtstørrelsen er afhængigt af magasinest tykkelse. Normal bundter vi dem i antal af 20 stk. eller 25 stk., nogle gange i bundter af 100 stk. , hvis magasiner er meget tynde.
Bundterne bliver derefter stablet på paller,og her er det vigtigt at bundter har samme str. ellers er det umuligt at stable.

Jeg vil gerne have en fuktion som kan lave en markering hvergang der et bundt, udfra nogle variable kriterier. som heddder

Minimum bundtstr. = 10 stk.
Normal  bundtstr. = 20 stk.
Maximum bundtstr. = 25 stk.

Hvis der feks er 433 stk til postnr. 2100 Kbh

Udfra overstående kriterier vil der blive markeret følgende:
21 bundter med 20 stk. i hvert bundt = 420 ex.
1 bundt  med 13 stk                =  13 ex.


Et andet eksempel kunne være 207 stk. til 4000 Roskilde

Udfra overstående kriterier vil der blive markeret følgende:
9 bundter med 20 stk. i hvert bundt = 180 ex.
1 bundt  med 17 stk                =  17 ex.
1 bundt  med 10 stk                =  10 ex.

Dette er pga.  vi fastsat, at ingen bundter må være under 10 stk. og ingen bundter må være over 25 stk.

Alle de postnr hvor der så er under 10 stk til vil fra sorteret og lagt i bunden og soreret efter et andet princip.

Jeg håber i forstår hvad det er jeg søger.
Jeg har talt med en af mine bekendte, han mente det kunne laves i et filter, men han vidtse ikke hvordan.

Jeg håber i kan hjælpe mig.

med venlig hilsen
Pejsen
Avatar billede pejsen Nybegynder
08. juni 2004 - 21:43 #1
"Alle de postnr hvor der så er under 10 stk til vil fra sorteret og lagt i bunden og soreret efter et andet princip"

Der skal stå:
Alle de postnr hvor der er under 10 stk,  vil blive frasorteret og lagt i bunden af databasen og bundtet efter et andet princip
08. juni 2004 - 22:09 #2
Jeg forstår ikke helt: "Jeg vil gerne have en fuktion som kan lave en markering hvergang der et bundt"!? Hvordan og hvor skal denne markering laves? Er det i tabellen, du vil have markeret et bundtnr på hver post? eller?
Kan du give en illustration af hvordan resultatet skal se ud?
Avatar billede pejsen Nybegynder
08. juni 2004 - 23:15 #3
Hej Thomas

De inkjet printer som printer adresserne, har indbygget noget software, som kan styrer en såkaldt stacker, den kan bundte magasiner i bundter af eks, 20 stk.
Men for at den kan dette, kræver det at der i den txt. fil, som indeholder adresserne er et felt som fortæller hvornår der er et bundtskift. Så ja det skal med på hver post. Jeg havde tænkt mig at det skulle være et 1 tal hvergang der var et bundtskift og et 0 på de poster der ligger imellem 1 tallerne.

Pejsen
08. juni 2004 - 23:40 #4
ok, jeg når ikke at kigge på det i aften, da jeg skal sidde og arbejde hele natten :O(
Men hvis der ikke er dukket andre forslag op i morgen formiddag, skal jeg gerne kigge på det.
23. juni 2004 - 11:33 #5
Her er mit bud, jvf mail-korrepondance.
Har du fået testet den?

Public Function Bundte(Sortering As String)
    On Error Resume Next
    Dim cn As ADODB.Connection
    Dim rsgrupperet As ADODB.Recordset
    Dim rsAdresser As ADODB.Recordset
    Dim Antal As Long
    Dim Rest As Byte
    Dim tæller As Long
   
    Set cn = CurrentProject.Connection
    Set rsgrupperet = New ADODB.Recordset
    Set rsAdresser = New ADODB.Recordset
   
    CurrentDb.QueryDefs("QryGrupperet").SQL = "SELECT bdt, Count(bdt) AS Antal FROM [" & GetTabelnavn & "] GROUP BY bdt ORDER BY bdt"
    CurrentDb.QueryDefs("QrySætMarkeringer").SQL = "UPDATE [" & GetTabelnavn & "] SET Bundtskift = GetMarkerImellen() WHERE bdt In (select bdt From QryGrupperet)"
   
    rsgrupperet.Open "QryGrupperet", cn, adOpenStatic
       
    'marker alle poster som værende 'midt imellem'
    cn.Execute "QrySætMarkeringer"
   
    Status "Opdaterer bundter!", False, rsgrupperet.RecordCount + 1, "Opdaterer bundter!"
   
    Do Until rsgrupperet.EOF
        Status "Opdaterer " & rsgrupperet!bdt
       
        'Find ud af antal spring
        Select Case True
            Case rsgrupperet!Antal <= GetMaxBundtStr
                Antal = 0
                Rest = 25
            Case rsgrupperet!Antal Mod GetNormalBundtStr = 0
                Antal = rsgrupperet!Antal / GetNormalBundtStr
                Rest = 0
            Case rsgrupperet!Antal Mod GetNormalBundtStr > 0
                Rest = rsgrupperet!Antal Mod GetNormalBundtStr
                If Rest > 9 Then
                    Antal = Int(rsgrupperet!Antal / GetNormalBundtStr)
                Else
                    Antal = Int(rsgrupperet!Antal / GetNormalBundtStr) - 1
                End If
        End Select
        rsAdresser.Open "select * from [" & GetTabelnavn & "] where bdt = '" & rsgrupperet!bdt & "' ORDER BY IDTal " & Sortering, cn, adOpenKeyset, adLockOptimistic
        If Antal > 0 Then
            For tæller = 1 To Antal
                rsAdresser.Move GetNormalBundtStr
                If tæller = 1 Then rsAdresser.MovePrevious
                rsAdresser!Bundtskift = GetMarkerBundtskift
                rsAdresser.Update
            Next tæller
        End If
        If rsAdresser.RecordCount - rsAdresser.AbsolutePosition >= GetMaxBundtStr Then
            rsAdresser.Move rsAdresser.RecordCount - rsAdresser.AbsolutePosition - GetMinBundtStr
            rsAdresser!Bundtskift = GetMarkerBundtskift
            rsAdresser.Update
        End If
       
        'sæt markering sidst i recordsettet
        rsAdresser.MoveLast
        rsAdresser!Bundtskift = GetMarkerPostnrSkift
        rsAdresser.Update
        rsAdresser.Close
       
        rsgrupperet.MoveNext
    Loop
    Status "", True
    rsgrupperet.Close
    Set rsgrupperet = Nothing
    rsAdresser.Close
    Set rsAdresser = Nothing
    cn.Close
    Set cn = Nothing
End Function
23. juni 2004 - 11:37 #6
Netop nu ser jeg en lille rettelse, som skal laves: Et sted står der:
Rest = 25
Det skal selvfølgelig være:
Rest = GetMaxBundtStr

Ellers er det jo ikke 100% parameterstyret....

Jeg sender den rettede version til dig - men giv lige besked om der er andet, der skal laves.

/Thomas
Avatar billede pejsen Nybegynder
24. juni 2004 - 19:56 #7
jep
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester