Avatar billede fogh Nybegynder
23. januar 2003 - 21:39 Der er 13 kommentarer og
1 løsning

Tildeling af nummersekvens fra kriterier !! terry? thomasjepsen?

En database samler op på registrerede arbejdssedler, og når man ønsker det samles disse registreringer op og faktureres. Jeg har brug for at tildele de enkelte records et Fakturanummer. Både til at indikere at disse records allerede er behandlet, og til at genskabe fakturaer med.

Det lyder meget simpelt, MEEEEN : Data skal grupperes !! Jeg kan sagtens få det ønskede output ved at lave grupperinger i rapporten der udskriver bilaget. MEN jeg kan ikke finde ud af at bygge den logik ind når der skal tildeles et fakturanummer via forespørgsler / sql ???

Eksempel :

En forespørgsel giver følgende data :

Rekv.    Projekt    Opgave    Varenr    Beskrivelse    Antal
1    100313    121    135    Vare 135    22,00
1    100313    121    213    Vare 213    12,00
2    100313    121    135    Vare 135    10,00
2    100313    121    213    Vare 213    10,00
2    100313    177    9999    Fritekst 2    1,00
2    700112    445    9999    Fritekst 1    2,00

Ved tildelingen af et fakturanummer skal der skal grupperes på :

1.    Rekv.
2.    Projekt
3.    Opgave

Data ovenfor vil således give :

Fakturanr 1 : De to første linier(Rekv 1, Projekt 100313 og Opgave 121)

Fakturanr 2 : De to næste linier(Rekv 2, Projekt 100313 og Opgave 121)

Fakturanr 3 :    Den femte linie(Rekv 2 Projekt 100313 og Opgave 177)

Fakturanr 4 :    Den sidste linie(Rekv 2 Projekt 700112 og Opgave 445)

************ Gav det mening ???
Jeg har altså brug for at kunne tildele et løbende nummer fra en nummersekvens for hver unik kombination af Rekv. Projekt og Opgave.

Håber der er nogen der har forstået mig og har mod på opgaven (kan man give mere end 200 point???)
På forhånd tak !!! - Thomas
Avatar billede _darkstar_ Nybegynder
23. januar 2003 - 22:12 #1
SELECT * FROM fakturaer ORDER BY Rekv
Avatar billede _darkstar_ Nybegynder
23. januar 2003 - 22:17 #2
Sorry. Det gik lige hurtigt nok. Ignorér venligst ovenstående.

Det er ikke specielt nemt at lave med enkelte SQL-forespørgsler alene.

Du bliver nødt til at lave et lille script som tildeler det næste nummer, når en af værdierne æRekv, Projekt, Opgave ændrer sig i følgende forespørgsel:

SELECT * FROM opgaver ORDER BY Rekv, Projekt, Opgave
Avatar billede hossein Nybegynder
23. januar 2003 - 22:23 #3
Avatar billede nih Novice
23. januar 2003 - 22:28 #4
Du er nødt til lidt kode:

Sub indsaetFakturaNr()
    Dim counter As Integer
    Dim rsGroup As DAO.Recordset
    Dim rsTabel As DAO.Recordset
   
    counter = DMax("[fakturanr]", "tblGroup")
    Set rsGroup = CurrentDb.OpenRecordset("Q_group")
 
        Do While Not rsGroup.EOF
            counter = counter + 1
            strSQL = "SELECT * FROM tblGroup " & _
                "WHERE rekv=" & rsGroup!rekv & _
                " AND projekt= " & rsGroup!projekt & _
                "AND opgave= " & rsGroup!opgave
            Set rsTabel = CurrentDb.OpenRecordset(strSQL)
            Do While Not rsTabel.EOF
                rsTabel.Edit
                rsTabel!fakturanr = counter
                rsTabel.Update
                rsTabel.MoveNext
            Loop
           
        rsGroup.MoveNext
        Loop

End Sub
Avatar billede nih Novice
23. januar 2003 - 22:29 #5
Q_group:
SELECT tblGroup.rekv, tblGroup.projekt, tblGroup.opgave
FROM tblGroup
GROUP BY tblGroup.rekv, tblGroup.projekt, tblGroup.opgave;
Avatar billede nih Novice
23. januar 2003 - 22:30 #6
tabellen har jeg kaldt tblGroup.

Håber du kan få det til at spille :)

Niels
Avatar billede nih Novice
23. januar 2003 - 22:37 #7
Den overskriver de eksisterende fakturanumre :(
indsæt strSQL således:

            strSQL = "SELECT * FROM tblGroup " & _
                "WHERE rekv=" & rsGroup!rekv & _
                " AND projekt= " & rsGroup!projekt & _
                " AND opgave= " & rsGroup!opgave & _
                " And isNull(fakturanr)"

læg din mail, hvis du vil have ekseplet tilsendt

Niels
Avatar billede fogh Nybegynder
23. januar 2003 - 22:41 #8
Hej Niels (og i andre)
Jeg havde på fornemmelsen dette var lidt "out of my league", så Niels du er velkommen til lige at sende mig et eksempel !! fogh@private.dk (zipped...jeg bruger outlook) på forhånd tak - Thomas
Avatar billede nih Novice
23. januar 2003 - 22:48 #9
Lige en rettelse mere:

counter = Nz(DMax("[fakturanr]", "tblGroup"), 0)

Niels
Avatar billede fogh Nybegynder
23. januar 2003 - 22:58 #10
OK, Niels! Jeg får nu tildelt et fakturanr til hver linie. Men de to første linier skal have samme nummer! ( da Rekv, Projekt og Opgave er ens..)
De næste to linier skal så have næste fakturanr... Get it ??
Avatar billede nih Novice
23. januar 2003 - 23:03 #11
Det får de da også.

Du tænker på rækkefølgen - så er du nødt til at sortere i forespørgslen Q_group evt.
     
      ORDER BY min(tblGroup.dato);

hvis du har et datofelt

Niels
Avatar billede nih Novice
23. januar 2003 - 23:04 #12
Q_group laver en tilfældig rækkefølge af posterne i tabellen
Avatar billede nih Novice
23. januar 2003 - 23:07 #13
Hvis du har indsat min rettelse: 23/01-2003 22:48:11

og derefter sletter ALLE fakturanumrene - så virker det :)
Avatar billede fogh Nybegynder
23. januar 2003 - 23:14 #14
Du har ret jeg havde glemt rettelsen!! Nu har jeg noget at gå videre med ! 1000 tak!!
mvh Thomas
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