Fout 3201 en Setfocus

Status
Niet open voor verdere reacties.

Nico84

Gebruiker
Lid geworden
21 jul 2011
Berichten
191
Goedemorgen,
2 problemen die ik niet opgelost krijg.

1:
Op het formulier Debiteur Overzicht klik ik op Nieuwe debiteur, maar bij het openen van
de Debiteurkaart wil hij de focus niet op Debiteur naam zetten.

2:
Als ik op de Debiteurkaart een adres wil toevoegen, wordt het formulier DebiteurAdressenKaart geopend.
Vul de gegevens in, maar bij het opslaan krijg ik de foutmelding 3201.
Vul ik een aantal velden op de Debiteurkaart eerst in krijg ik de melding niet.
Hoe kan ik ervoor zorgen dat bij het openen van de Debiteurkaart direct het record opgeslagen wordt?

Voorbeeldje heb ik bijgevoegd.Bekijk bijlage Voorbeeld1.zip
 
Ad 1: dit wordt veroorzaakt door 2 dingen: om te beginnen had je een <Bij openen> gebeurtenis gemaakt die de focus zet op het veld [DebiteurID]. Dan kun je hoog een laag springen, maar dan is dát het veld waar de cursor staat. En als je die code weg zou halen, zou de focus daar nog steeds op liggen omdat dat veld in de tabvolgorde als eerste staat, en niet [Debiteurnaam]. Verder zou het nog steeds niet werken, omdat je, na het openen van het formulier, de focus weer op het oorspronkelijke formulier zet dat je dan sluit. Gevolg: nu heeft helemaal niks de focus meer, dus ook niet het formulier frmDebiteurkaart. Wil je de focus op een formulier houden, dan moet je daarna niks anders meer doen.
Je tweede probleem snap ik niet helemaal; je mag natuurlijk pas een adres invullen als er een DebiteurID is. Anders valt er niks te koppelen. Logisch dus dat je die fout krijgt. Je kunt het subformulier bijvoorbeeld uitschakelen en pas actief maken als de hoofdvelden zijn ingevuld. Op die manier voorkom je dat een gebruiker een adres toevoegt van een niet-bestaande debiteur.
 
1: Stom domweg over het hoofd gezien.

2: Code omgedraaid en nu krijgt het veld wel de focus.
Code:
DoCmd.Close acForm, "frmDebiteurOverzicht"
DoCmd.OpenForm "frmDebiteurKaart", acNormal, , , acFormAdd, acWindowNormal

3: Is het mogelijk om bij het openen direct het record op te slaan.
Het veld DebiteurID bevat bij het openen al een debiteurnr. door middel van de standaardwaarde =Nz(DMax("DebiteurID";"tblDebiteur");0)+1
Als het record gelijk opgeslagen wordt bij openen kan er eventueel direct een adres toegevoegd worden.
Nu wordt het na 1 of 2 acties pas opgeslagen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan