Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

access: waarde van vorig record als default in huidig record

Wiep Corbier
11 antwoorden
  • Ik ben bezig een database te bouwen voor het bijhouden van ontvangen facturen.
    Die facturen die krijgen allemaal een stempel met zo'n stempel die automatisch doornummert.
    Dit nummer komt natuurlijk in mijn database, maar 99 van de 100 keer is het volgende nummer gelijk aan het vorige nummer + 1.

    Nu wil ik graag als defaultwaarde in het veld "waarde laatste record + 1" opnemen. maar ik krijg het niet voor elkaar.

    Hoe ga ik te werk?
  • Tja, dat kan op verschillende manieren. Een daarvan is een 'invoerdatum' meegeven tijdens opslaan van record.

    Dan in de sql Select…Top 1 order by invoerdatum DESC
    Nummer is nummer + 1
  • Dat had ik dus ook al geprobeerd, maar dat met Group By: Last

    Dan krijg ik de laatst ingevoerde waarde in een query. Maar dan krijg ik die waarde niet in mijn formulier ge-upload…
  • Hoezo…Group By?

    Probeer het maar eens zoals ik het schrijf.
  • heb de volgende query gegenereerd:
    [code:1:9ac1b2b9ec]SELECT TOP 1 tblVouchers.VoucherNumber
    FROM tblVouchers
    ORDER BY tblVouchers.InvoiceID DESC;[/code:1:9ac1b2b9ec]Ik heb voor de ID gekozen, omdat ik per dag wel 100 facturen inbreng, dus de datum is niet uniek genoeg

    in de query staat nu "3" en dat klopt: er zitten 3 vouchers in de tabel en het hoogste nummer is 3.

    In mijn form blijft het veld echter "1" roepen
  • Als je een datum/tijd type gebruikt worden de verschillen in 100-sten van een seconde aangegeven.

    Kun je de tabel en code voor het optellen even geven?
  • Sorry,

    Maar ik begrijp de vraag niet…
  • Ik neem aan dat je een tabel hebt waar je de gegevens in opslaat.

    Geef even de relevante kolommen.

    Daarnaast, je telt 1 bij het laatst ingevoerde nummer op; hoe ziet dat er uit.

    Ik wil dus weten bij welke kolom je die 1 optelt, hoe je dat doet en hoe je dat toont.
  • tblEntities
    EntityID*(1)
    EntityName

    tblVouchers
    InvoiceID*
    Entity(1)
    EntryDate
    VoucherNumber(2)
    Supplier
    Expired
    Comment
    User

    tblMailto
    MailtoID
    Voucher(2)
    MailtoName
    SendDate
    ReturnDate
    Comment
    Reason
    User

    Feitelijk heb ik dus geen enkel idee waar ik die ene er bij op moet tellen. mijn laatste probeersel was om in de property "default value" de volgende formule op te nemen:[code:1:c7d29f0dcc]=[qryLastRecord]![LastOfVoucherNumber][/code:1:c7d29f0dcc]Volgens mij heb ik dan altijd nog de keuze of ik van de Query een Expressie maak en er 1 bij optel, of ik mik +1 achter de formule.

    toch gaat het nog steeds niet goed…
  • In de hoop dat ik niet inbreek in een Levendige discussie :wink:

    Wat je kunt doen als je niet bang bent voor een klein beetje VBA:

    Plaats de volgende code in het OnCurrent Event van je formulier.
    [code:1:b93a03cdcd]
    Dim cnn As ADODB.Connection
    Dim rst As New ADODB.Recordset
    Dim strSQL As String
    Dim lngNummer As Long

    If Me.txbVouchernummer Is Null Then
    strSQL = "SELECT max(Vouchernummer) FROM tblVouchers;"
    Set cnn = CurrentProject.Connection
    rst.Open strSQL, cnn, adOpenDynamic
    rst.MoveFirst
    lngNummer = rst.Fields(0).Value + 1
    Me.txbVouchernummer = lngNummer
    End If
    [/code:1:b93a03cdcd]


    Suc6,
  • [code:1:ea278e8d45]Option Compare Database

    Private Sub Form_Current()

    Dim cnn As ADODB.Connection
    Dim rst As New ADODB.Recordset
    Dim strSQL As String
    Dim lngNummer As Long

    If Me.Vouchernumber Is Null Then
    strSQL = "SELECT max(Vouchernumber) FROM tblVouchers;"
    Set cnn = CurrentProject.Connection
    rst.Open strSQL, cnn, adOpenDynamic
    rst.MoveFirst
    lngNummer = rst.Fields(0).Value + 1
    Me.Vouchernumber = lngNummer
    End If

    End Sub[/code:1:ea278e8d45]Ik heb even de code opnieuw gepost want er zaten een paar spelfoutjes in, maar ik krijg een foutmelding in de IF regel en ik snap niet goed wat er mis is

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.