Invoeren tabel bovenste regel i.p.v. onderste regel

Status
Niet open voor verdere reacties.

dirkdrent

Gebruiker
Lid geworden
3 jan 2006
Berichten
382
Misschien een makkelijke vraag maar ik heb een hoofdformulier met hierin een subformuiler die wordt weergegeven als rijen met hierboven de velden. Wanneer ik een nieuwe gegevens in het subformulier invoer gebeurt dit altijd op de laatste regel van de tabel waardoor je uiteindelijk na beneden zou moeten gaan scrollen om nieuwe gegevens in te vulllen.

Bestaat er een mogelijkheid dat ik de eerste regel van de tabel kan gebruiken voor invoer en dat de voorgaande gegevens een naar beneden schuift... Of wel het omgekeerde van bovenstaande?

ps. Ik heb zelf al geprobeerd om in de query aan te geven met aflopend/oplopend te sorteren maar dit werkt alleen voor de gegevens die al staan ingevoerd en niet voor de nieuwe invoer.
 
Deze vraag is al eens eerder gesteld, en het antwoord was toen (en nu ook): Nee, dat kan niet. Wil je records invoeren, dan zou ik een aparte knop maken, die het nieuwe record gelijk selecteert, zodat je niet hoeft te scrollen. Of het subformulier in Toevoegmodus zetten, zodat er maar één record is (een nieuwe).
 
Je zal het inderdaad ook met een knop moeten doen.
Maar als je die knop nou direct een formulier(tje) laat openen (acdialog) waarbij de gegevens worden ingevuld kun je deze mbv een ado routine toevoegen.
Een voordeel hiervan is dat de laatste record nu altijd boven komt te staan vermits de sorteervolgorde van het subformulier ook zo staat ingesteld.
N.b. Het formuliertje heeft geen datasource. Het zijn dus dummy velden.
Met een knop op het formuliertje voeg je de dummy velden toe aan het subformulier


Een plaatje uit het postboek:
NieuweBriefUit.JPG

De vba code van de voegtoe
Code:
Private Sub Voegtoe()
    On Error GoTo FOut
    Dim RS As New ADODB.Recordset
    Dim h As Variant, idpb As Long, inuit As String
    h = Split(Me.OpenArgs, "|")
    idpb = h(0)
    inuit = h(1)
    If Me.datum2 < P_D11 Or Me.datum2 > P_Dvd + 1 Then
        MsgBox "Geef een datum tussen " & P_D11 & " en " & P_Dvd + 1
        Me.datum2.SetFocus
        Exit Sub
    End If
    If Len(Nz(Me.kenmerk)) = 0 Then
        MsgBox "Geef een kenmerk"
        Me.kenmerk.SetFocus
        Exit Sub
    End If
    If Len(Nz(Me.onderwerp)) = 0 Then
        MsgBox "Geef een onderwerp"
        Me.onderwerp.SetFocus
        Exit Sub
    End If
    Dim LastSuffix
    LastSuffix = LaatsteSuffix(Year(datum2), inuit)
    RS.Open inuit, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    RS.AddNew
    RS.Fields("id-pb") = idpb
    RS.Fields("datum2") = Me.datum2
    RS.Fields("Kenmerk") = Trim(Me.kenmerk)
    RS.Fields("onderwerp") = Trim(Me.onderwerp)
    If inuit = "brievenuit" Then RS.Fields("Mailing") = False
    RS.Fields("suffix") = Left(LastSuffix, 2) & Val(Right(LastSuffix, Len(LastSuffix) - 2)) + 1
    RS.Fields("behandelddoor") = Me.Behandelddoor
    RS.Update
    RS.Close
    DoCmd.Close
Exit_fout:
    Exit Sub
FOut:
    MsgBox Err.Description
    Exit Sub
End Sub
Wellicht heb je er wat aan.
Jan
 
Da's toch wel omslachtig met een los formulier; zoals ik al zei: met een knop op het hoofdformulier kan het ook:

Code:
Private Sub cmdNieuwRecord_Click()

    If Me!werkadressen2.Form.DataEntry = True Then
        Me.cmdNieuwRecord.Caption = "Record Toevoegen"
        Me!werkadressen2.Form.DataEntry = False
        Me!werkadressen2.Form.Requery
    Else
        Me.cmdNieuwRecord.Caption = "Records tonen"
        Me!werkadressen2.Form.DataEntry = True
    End If
End Sub
 
Nu ik je code heb uitgeprobeerd zie ik dat alles wel zijn voor- en nadelen heeft.
Een voordeel van een extra fomulier is dat bij gebruik van <Esc> het nummer in het autonummeringsveld of een daarvan afgeleid veld , niet verloren gaat. (mocht dat belangrijk zijn)

Jan
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan