DMax +1 werkt niet

Status
Niet open voor verdere reacties.
Je offertenummer is dus duidelijk niet uniek, en derhalve ook geen sleutelveld. Lijkt mij een bijzonder onhandige constructie...
 
Nee, mijn nieuwe probleem heeft hier duidelijk mee te maken vermoed ik:

Het formulier past nu de in "offertes" bestaande records aan i.p.v. ze toe te voegen.....Daarbij past hij ook het bijbehorende gebruikerID aan in die tabel.....hoe dit op te lossen? Ik heb "offertenummer" en "gebruikerID" beide als primaire sleutel in de tabel offertes

In de formulier-eigenschappen:
Bewerken toestaan staat op nee
Verwijderingen toestaan ook
 
Laatst bewerkt:
Elke keer als je naar een ander record bladert, wordt de actie Form_Current() uitgevoerd. En wat mag die doen? Je offertenummer (van je bestaande record) verhogen. De formule zou je als Standaardwaarde moeten gebruiken, dus alleen bij nieuwe records. Of een check inbouwen die controleert of je op een nieuw record staat.
Code:
Private Sub Form_Current()
   If Me.NewRecord Then
      Me.Datum = Date
      Me.Offertenummer = Val(DMax("[Offertenummer]", "[Offertes]", "[GebruikerID]=" & [GebruikerID])) + 1
      Me.GebruikerID = UserID
End If
End Sub
 
Het probleem was dan ook juist dat de formule niet werkt bij standaardwaarde, omdat "besturingselementbron" al verwijst naar het veld "offertenummers" van de tabel "offertes".

Ik gebruik deze code nu:

Code:
Private Sub Form_Current()
    Me.Datum = Date
    Me.GebruikerID = UserID
   
    If Me.NewRecord Then
        Me.Offertenummer = Val(DMax("[Offertenummer]", "[Offertes]", "[GebruikerID]=" & [GebruikerID])) + 1
    End If
End Sub

Het is mijn bedoeling dat het offertenummer automatisch opgezocht en ingevuld wordt zodat de gebruiker dit niet zelf hoeft bij te houden.
Bovenstaande code controleert of het om een nieuw record gaat, maar mijns inziens is dat hier niet van toepassing gezien het tekstvak "offertenummer" nu automatisch op "1" staat en hij het dus niet herkend als NewRecord.

kan best zijn dat ik het (weer) niet snap, maar ik zoek iets dat formulier "nieuwe offerte" verteld dat hij ALTIJD een nieuw record moet aanmaken...
 
Een formule als standaardwaarde voor een veld moet prima werken; ik gebruik die techniek regelmatig zonder problemen. Dus als het bij jou niet lukt, is er iets bijzonders aan de hand. Zonder voorbeeld kan ik dat uiteraard niet controleren. D.w.z. zonder 2003 voorbeeld :)
 
Woehoe, het bedrijf heeft toegegeven dat werken met aparte offertenummers per medewerker omslachtig is. Ze willen nu dus 1 nummering van offertenummers. dit heeft de zaken vereenvoudigt :) dank
 
Ik geloof ik word gek.....ik heb vanalles geprobeerd wat hierboven staat maar ik krijg het nog niet voor elkaar......

Hij gaat bij het openen van formulier "nieuwe offerte" niet naar een nieuw record, maar geeft het huidige record weer. Als ik dat record uit de tabel haal, dan haalt hij wel het volgende nummer op en plaatst dat als record.

Ik heb de koppeling met gebruikersID eruit gehaald en offertenummer "numeriek" gemaakt waardoor iedereen dezelfde offertenummerreeks gebruikt en er geen enkel offertenummer meer dubbel voorkomt.

Ik gebruik op formulier "nieuwe offerte" in tekstvak "offertenummer" als besturingselementbroneigenschap "Offertenummer" (van tabel offertes dus) en als standaardwaarde
Code:
=DMax("[Offertenummer]";"[Offertes]")+1

wat o wat zie ik over het hoofd.....:confused:

Het bestand is te groot om te uploaden.....ik kan het wel mailen


EDIT:
het toevoegen van
Code:
DoCmd.GoToRecord , , acNewRec
helpt maar lost het niet helemaal op. bij het openen van formulier "nieuw record" voegt hij het goede offertenummer in MAAR zodra ik dan een klant selecteer in het formulier, zoekt hij die klant op in de tabel "offertes" en dat wil ik niet....dit leidt ertoe dat er alleen een offertenummer aan de tabel wordt toegevoegd maar niet de rest van de informatie, omdat hij dus gaat opzoeken ipv toevoegen
 
Laatst bewerkt:
Kijk eventjes in mijn topic 'hulp gevraagd bij requery' daar staat het in 3 .rar bestanden + bestand met verbetering van octafish. Openen in compatibiliteitsmodus 2007 moet werken? Dat werkte laatst ook in 2003
 
De methodiek en code is in alle versies hetzelfde. Dus de code kopiëren en de veldnaam en tabelnaam aanpassen zou simpel moeten zijn. Lukt het niet, maak dan een eigen vraag aan, zou ik zeggen!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan