1) Als een bepaald veld (in de heading) ingevuld is op het form, dan mogen de records in het subform niet meer aangepast worden.
2) In de subform: als een veld een bepaalde waarde heeft dan moet een ander veld (geen primary key) verplicht ingevuld worden.
Hoe kan ik dit het beste oplossen?
Alvast bedankt!!!
0
Comments
Je kan het in de OnAfterValidate() van het veld zetten of op het moment wanneer je je check wil laten uitvoeren.V.b.
IF veld <> ' ' then
CurrForm.Subformname.editable(false)
else
Currform.Subformname.editable(true);
Deze script moet je dan ook in de onaftergetrecord trigger van het form zetten.
2 In de Onactivate van de velden die volgen na het geconditioneerd verplicht veld zet je dan
IF veldA = 'X' and verplichtveld = ' ' then
Message('Verplicht veld moet worden ingevuld als veldA de waarde X heeft')
Je kan die script ook zetten in de OnAfterGetRecord van het form .Je krijgt dan die message zodra het record wordt opgehaald.
Error kan ook gebruikt worden ,alleen wordt je dan uit de form gesmeten
Hopelijk helpt dit je op weg.
Maar voor puntje 2: Als je een message zet gaat hij toch nog door naar het volgende record en word er een verkeerde record geinsert. Hoe kan je ervoor zorgen dat die dan in het huidige en foute record blijft?
Plaats deze code binnen de tabel binnen de trigger OnInsert()
IF (VeldA <> '' ) AND ( Verplichtveld = ' ' ) THEN
ERROR('Verplicht veld moet worden ingevuld als veldA de waarde X heeft');
if (veldA = 'X' )and (verplichtveld = ' ' )
waarbij X natuurlijk de specifieke waarde is waarvoor er geen lege waarde in het ander veld mag zijn
gr,
Patrick
Sommige velden in het subform moeten verplicht ingegeven worden
Als ik in de tabel zelf aanduid dat deze NotBlank zijn dan wordt er een foutmelding gegeven en vlieg ik er gewoon uit.
Als ik NotBlank af zet en bij
OnInsert()
IF (VeldA = '') THEN
ERROR(....)
Dan vlieg ik er ook uit.
Bij een ander veld lukt dit wel met ERROR(...)
Heeft dit te maken met de primary key. Het veld waar het niet lukt behoort tot een samengestelde primary key, terwijl het veld waar het lukt geen primary key is.
Die NotBlank Property heeft pas effect nadat de waarde in het veld gevalideerd is m.a.w. je moet eerst in het veld geweest zijn dus dat is niet echt een verplichting want men hoef niet in het veld te klikken.
Ik heb op het forum volgende oplossing gevonden:
op tabelniveau:
onInsert() + onModify() trigger:
TESTFIELD(verplichte veld);
Bij props van verplichte veld:
NotBlank = Yes
op formniveau:
DelayedInsert = Yes
Maar ook dit werkt niet!!!
Er kan namelijk wanneer jij dan ook maar wilt een check worden gedaan op de inhoud van velden.
De functie MESSAGE geeft een melding maar je kan dan verder gaan(niet verplicht)
De Functie ERROR op Form niveau geeft je een melding maar gooit je uit het scherm.
De Functie ERROR op Tabel niveau geeft je een melding maar gooit je niet uit het scherm.
En de Property Notblank verplicht je een veld in te vullen alleen als je daarna een testfield doet.
Je testfield kan worden aangeroepen bij de onactivate trigger van de daarna volgende velden of bij de oninsert trigger van de tabel.
Het probleem echter is dat als de melding verschijnt het een beetje onduidelijk kan zijn voor de gebruiker maar probeer dit:
Zet NotBlank op Yes van verplicht veld.
Zet Testfield (Verplicht veld)in Onactivate trigger van volgende velden
Zet Testfield (Verplicht veld)in OnInsert van tabel.
Het zou ook moeten werken voor velden in een samengestelde PK
- Heb dus prop NotBlank van veldA op yes gezet
- Onactivate van de volgende velden: TESTFIELD(veldA);
- OnInsert van tabel: TESTFIELD(veldA);
Run
Krijg dan de volgende melding:
You must specify <veldA> in <tabelnaam>...
En dan vlieg ik eruit
Notblank bij alle velden op no
Dan een functie aangemaakt bij de tabel zelf. Deze voert een controle uit op het veld en geeft dan de waarde true of false terug
Bij OnInsert() van tabel gaan we dan deze functie oproepen voor dat veld en afhankelijk van de waarde die hij terug geeft wordt er een ERROR getoond.
En dan gaat het bij mij wel.
Toch bedankt voor de hulp
Wordt er nu weer elke keer uit gegooid bij het gebruik van ERROR of TESTFIELD!!!
Wat moet ik doen?
Ik denk da ik de oorzaak heb gevonden. Ik doe tussen door een update van mijn form om een veld editable(false) te maken. Als ik dit verwijder dan werkt het wel naar behoren. Hoe moet ik da dan oplossen met mijn veld dat editable/niet editable moet gemaakt worden?
Iemand een idee? :?: :?: :?: