Print side | Luk vindue

Resultatet af 1 forespørgsel i en 2 forespørgsel

Udskrevet fra: Dansk Access Forum
Kategori: Hjælp til Access
Forum navn: Forespørgsler og SQL scripts (Query)
Forum beskrivelse: Spørgsmål relateret til SQL og forespørgsler
Web-adresse: https://www.accessforum.dk/forum_posts.asp?TID=7
Udskrevet den: 27-04-2024 kl. 12:04


Emne: Resultatet af 1 forespørgsel i en 2 forespørgsel
Besked fra: rassten
Emne: Resultatet af 1 forespørgsel i en 2 forespørgsel
Posteringsdato: 22-07-2012 kl. 15:31
Hej,

I den vedhæftede eksempel fil vil jeg gerne i en forespørgsel få middel værdien for beløbet for Jan 2011, denne værdi skal jeg så gerne dividere med 100 og gange i alle beløb forekomster af Jan 2012.
kolonne a = Måned, Kolonne b = år, Kolonne c= beløb

Upload virker så ikke alligevel, men jeg håber jeg har forklaret mig tydeligt ellers spørg endeligt.

Eller sagt på en anden måde, hvordan tager jeg resultatet af en forespørgsel og bruger den i en anden (opdatere) forespørgsel.





-------------
Vh Rassten



Svar:
Besked fra: hkh
Posteringsdato: 16-08-2012 kl. 08:04
Hej Rassten

Jeg ved ikke om du har fået løst problemet, men VB kunne være løsningen.

tabel1 indeholder dine data:
felterne måned,år og beløb
Fra en formular med 3 felter og en knap, kan beløbet justeres. Felterne skal indeholde [måned], [gammelt år] og [nytår]
Når der klikkes på knappen kaldes knap_justering()

Private Sub knap_Justering()

    Dim db As Object
    Dim data As Object
    Dim SqlTekst As String
    
    ' udregning af gennemsnit af sum, beløb fra tabel1, hvor måned og årstal indtastes i to felter (2011)
    SqlTekst = "SELECT DISTINCTROW Sum(Tabel1.beløb) AS [Sum Of beløb], Avg(Tabel1.beløb) AS Gennemsnit, Count(*) AS [Antal Of Tabel1] FROM Tabel1 GROUP BY Tabel1.måned, Tabel1.år HAVING (((Tabel1.måned)=" & FeltMedMåned & ") AND ((Tabel1.år)=" & FeltMedGl_År & "));"
       
    Set db = Application.CurrentProject.Connection
    Set data = CreateObject("ADODB.Recordset")
    data.Open SqlTekst, db, 1
    
    ' hvis der ingen poster er til beregning af gennemsnit, afbrydes justeringen med en meddelse
    If data.EOF = True And data.BOF = True Then
        MsgBox "Der er ingen poster, der svarer til årstal og måned i det gl. år.", vbInformation + vbOKOnly
        GoTo Afslut
    End If
    
    ' Det udregnede gennemsnit divideres med 100 og gemmes i 'justering'
    Justering = data!gennemsnit / 100
    
    ' udvælg måneder fra 2012.
    SqlTekst = "SELECT Tabel1.id, Tabel1.måned, Tabel1.år, Tabel1.beløb FROM Tabel1 WHERE (((Tabel1.måned)=" & FeltMedMåned & ") AND ((Tabel1.år)=" & FeltMedNyt_År & "));"
    data.close
    data.Open SqlTekst, db, 1
    
    ' hvis der ingen poster er til justering, afbrydes justeringen med en meddelse
    If data.EOF = True And data.BOF = True Then
        MsgBox "Der er ingen poster, der svarer til årstal og måned i det nye år.", vbInformation + vbOKOnly
        GoTo Afslut
    End If
    
    
    ' opdatering af beløb
    While data.EOF = False
        data.Edit
        data!beløb = data!beløb * Justering
        data.Update
        data.MoveNext
    Wend
       
Afslut:
    data.Close
    Set data = Nothing
    Set db = Nothing
    
End Sub



-------------
Hans



Print side | Luk vindue