waarde uit query overnemen

Status
Niet open voor verdere reacties.

harrybaalman

Gebruiker
Lid geworden
28 apr 2021
Berichten
6
ik heb in acces een query gemaakt welke de hoogste waarde uit een grote tabel haalt
die waarde wil ik weer gebruiken in een formulier

hoe kan ik de uitkomst ( MAX) overnemen naar een formulier

m.v.g
 
Heb je geen query voor nodig; gebruik op je formulier de functie DMax om de waarde op te halen op het formulier. Die formule kun je rechtstreeks als Besturingselementbron gebruiken.
 
dat klopt maar in de query moet ik eerst een sortering maken
het resultaat van die sortering daar de max van moet ik gebruiken in een nieuw veld
 
Dat snap ik niet; met MAX haal je ergens (een tabel) de hoogste waarde van op. Dat levert één getal op, en dat ene getal hoef je (uiteraard) niet te sorteren. In de tabel wordt de hoogste waarde ook echt niet groter of kleiner als je sorteert.
 
het is ook onduidelijk dat snap ik
zal het verduidelijken
ik heb een tabel met daarin een kolom met een nummer van een tm 12
in de tweede kolom staan nummers van 1-t/m 9999
de getallen in de eerste kolom staan gekoppeld aan de tweede
dus 1-888
2-787
310
4-786

voor het aanmaken van een nieuwe record moet ik b.v het hoogste nummer +1 van kolom twee hebben

dat hoogste nummer zoek ik met max op in een query
 
Dat is toch simpel één getal? Hoef je niet voor te sorteren.
 
Onderstaande heb ik in gebruik om een factuurnummer op te halen die 1 hoger is dan het hoogste nummer.
Dit zit onder een knop op het formulier.

Code:
Dim Faktuurnummer As Long
Dim cSQL As String
Dim rst As Recordset

                ' Bepaal het laatste faktuurnumer.
                cSQL = "SELECT Max(Factuurnummer) AS Max " & "FROM tbl_facturen"
                Set rst = CurrentDb.OpenRecordset(cSQL, dbOpenDynaset)
                If rst.EOF = False Then
                    If IsNull(rst!Max) Then
                        Factuurnummer = 1
                    Else
                        Factuurnummer = rst!Max + 1
                    End If
                    End If
 
@jacobusje: Dat ziet er niet uit als een functie die je gelijk op een tekstveld kan zetten als standaardwaarde. Bovendien moeten factuurnummers officieel elk jaar opnieuw met 1 beginnen, en dat doet jouw functie ook niet :).
 
Klopt

Door op de genoemde knop te klikken wordt de waarde in een tekstveld geplaatst.
Of de code bij standaardwaarde gebruikt kan worden weet ik niet, daarvoor weet ik er te weinig van. :eek:

In het nieuwe jaar moet je het eerste factuurnummer zelf invoeren, de rest van het jaar kan je de knop weer gebruiken.
Gelukkig heeft het nieuwe jaar een hoger nummer :cool:
 
Dan heb ik wat te leren voor je :) Ik gebruik doorgaans twee varianten: één met een koppelteken, en een zonder. De eerste levert een tekstnummer op, de tweede een numerieke. Beide functies zet je als standaardwaarde in een tekstveld, zodat je bij een nieuw nummer automatisch altijd een correct nummer krijgt, ook als een nieuw jaar begint.

Code:
Function FactuurNr() As Long
Dim rst As Recordset
Dim iFac As Integer, sFac As Integer, iJaar As Integer
Dim strSQL As String

    strSQL = "SELECT Year([Factuurdatum]) AS FactuurJaar, Max(FactuurNr) AS MaxFactuurNr FROM Facturen GROUP BY Year([Factuurdatum]) HAVING Year([Factuurdatum])=" & Year(Date)
    Set rst = CurrentDb.OpenRecordset(strSQL)
    With rst
        If .RecordCount > 0 Then
            sFac = Right("000" & CInt(Right(!MaxFactuurNr, 3)) + 1, 3)
            FactuurNr = CLng(!FactuurJaar & sFac)
        Else
            FactuurNr = CLng(Year(Date) & "001")
        End If
    End With
                
End Function

Code:
Function FactuurNummer() As String
Dim rst As Recordset
Dim iFac As Integer, sFac As Integer, iJaar As Integer
Dim strSQL As String
    
    strSQL = "SELECT Year([Factuurdatum]) AS FactuurJaar, Max(FactuurNummer) AS MaxFactuurNummer FROM Facturen GROUP BY Year([Factuurdatum]) HAVING Year([Factuurdatum])=" & Year(Date)
    Set rst = CurrentDb.OpenRecordset(strSQL)
    With rst
        If .RecordCount > 0 Then
            iFac = CInt(Split(!MaxFactuurNummer, "-")(UBound(Split(!MaxFactuurNummer, "-")))) + 1
            FactuurNummer = Year(Date) & "-" & Right("000" & iFac, 3)
        Else
            FactuurNummer = Year(Date) & "-001"
        End If
    End With
                
End Function

Maak het jezelf dus makkelijk :).
 
Bedankt :thumb:

Moet wel even met de administratie overleggen of ze doornummeren of niet.
 
Anders sloop je dat aspect er uit :). Wordt de code ook alleen maar korter en makkelijker van.
 
Van horen zeggen. En ze moeten aansluitend zijn. Ben geen boekhouder, dus doe vooral wat je zelf wilt :).
 
Het maakt mij niet uit; ik vond het wel logisch. En het schijnt dat de belastingen problemen hebben met nummering met gaten. Ook daar zie ik de logica wel van in. Doet overigens geen drol af aan de functies :).
 
Voor wie het interesseert: nummering van facturen in België :
* je kiest zelf of je doornummert of elk boekjaar van 1 herbegint
* je kiest zelf de datum waarop een nieuw boekjaar begint
Je moet wel je keuzes doorgeven aan BTW/belastingen

Als er nummers ontbreken: dat kan, maar dan moet je wel een ondertekende verklaring waarom verschaffen. Als dit te vaak gebeurt dan krijg je wel een controle.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan