Avatar billede mark_j Nybegynder
26. december 2001 - 00:18 Der er 20 kommentarer og
1 løsning

feltet kan ikke indeholde en null-værdi

Er det muligt ved hjælp af vba at slette en record når den ikke helt udfyldt selvom der er obligtoiske felter der i, så man ikke får access fejlmeddelse at den ikke kan indeholde en nul-værdi
Avatar billede terry Ekspert
26. december 2001 - 17:43 #1
Not sure I undersatnd your problem fully!
When you start entering data into the fields you can use the escape (ESC) key to undo the record, one hit of the key un-does the field and another hit undoes the record.

You can also use undo method for undoing changes to a form.
You can plase this in the forms before update event

Me.Undo

Avatar billede mugs Novice
26. december 2001 - 19:17 #2
Korrekt som Terry svarer, kan du ved hjælp af metoden Me.Undo fortryde indtastningen. Du kan dog automatisere handlingen, ved at indsætte en fejlhåndtering således:

Private Sub()
On Error Go To Fejlhåndtering
her indtaster du en evt. kode
Fejlhåndtering:
Me.Undo

Som betyder, at hvis der opstår en fejl ved gennemløb af procedüren, vil Access gå til Linien Fejlhåndtering og udføre kommandoen Me.Undo, som sletter den sidst udførte handling.

 
Avatar billede mark_j Nybegynder
26. december 2001 - 20:51 #3
hej Terry og Mugs dejligt at høre fra jer.
er det så ikke muligt at jeg kan kalde (esc)key
ved hjælp af noget programkode og en knap f.eks.
for som jeg forstår er det kun formularen undo metoden gør noget ved, jeg tænker på hvis man har relationer til andre tabeller
Avatar billede mugs Novice
26. december 2001 - 21:53 #4
Jo - du har på sin vis ret.
Men hvis du indsætter koden i formularens \"Before Update\" event, er tabellen endnu ikke opdateret med den nye post. Det sker først ved efter \"After Update\". Jeg vil derfor mene, at du uanset relationer kan bruge denne løsning.

jeg skal dog medgive, at det ikke er afprøvet.
Avatar billede terry Ekspert
26. december 2001 - 22:15 #5
You can use the sendkeys (see Access help) statement to send an ESC character to Access, but how many (1 or 2) do you send?
The me.undo undoes changes to th eform not just to a single field.
Avatar billede nih Novice
26. december 2001 - 23:15 #6
hej alle og god baghjul

jeg tror mark_j er ude på noget der ligner det her:

Private Sub Form_BeforeUpdate(Cancel As Integer)
    If IsNull(Me.opgave) Then
        \'Cancel = True
        \'Me.Undo
    End If
End Sub

feltnavnet er \"opgave\" og du kan prøve dig frem med om du vil bruge cancel eller undo.
Det svarer til terry\'s første indlæg, men her har du et eksembel.

Niels
Avatar billede mark_j Nybegynder
27. december 2001 - 07:24 #7
Jeg tester lie nogle af alle de her forslag og vender tilbage, jeg bliver altid overrasket over den store aktivitet her paa eksperten
Avatar billede mark_j Nybegynder
27. december 2001 - 09:44 #8
det hele virker hvis du bare har en form, men da jeg har en underformular kokser det naar hovedformen er er opdateret men du ikke udfylder underformularen
Avatar billede terry Ekspert
27. december 2001 - 15:17 #9
mark_j>It shard to say what th eproblem is as you have not said what you have tried, there was no mention of a sub form in your original question either. As much information as possible helps in giving a quick solution!

The me.undo MUST be in the sub form if its a record in the sub form you are in the process of creating. If you have already created a record on th emain form and also want to UNDO that then thats another kettle of fish (another problem)
That record HAS been created so you will have to delete it.

If thats what you want to do then you will have to set focus on th emain form and then delete the current record


Me.parent.somefield.setfocus \'chnage somefield to one of the fields on the main form.

    DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70

Avatar billede mark_j Nybegynder
27. december 2001 - 16:07 #10
sorry jeg udelod de informationer, det er naar man har stirret paa det i saa lang tid. Nu siger den at jeg ikke kan slette poster, men det kan ikke passe for jeg kan goere det manuelt og jeg har checket formularen, der er tilladelse til at slette
Avatar billede mark_j Nybegynder
27. december 2001 - 16:19 #11
jeg tror det fordi den ikke saette focus til det felt er det helt korrekt me.parent
Avatar billede mark_j Nybegynder
27. december 2001 - 18:20 #12
Jeg kan sagtens se ideen idet, jeg kan bare ikke faa det til at virke den siger bare at den ikke kan saette focus paa de felter
Avatar billede terry Ekspert
27. december 2001 - 21:11 #13
mark_j> me.parent is correct IF you are on the sub form. if you are on the main form then you dont need to set focus, it already has it.

Avatar billede mark_j Nybegynder
27. december 2001 - 21:16 #14
Jeg er paa subformen, meddelsen jeg faar er feltet kan ikke tage focus og det er alle felterne paa mainform, det er lidt irreterende fordi det er det sidste jeg mangler paa indtastningssiden(+mit lille time problem)
Avatar billede terry Ekspert
27. december 2001 - 21:55 #15
mark_j>Its still VERY hard to give you a correct answer when you still dont say what you are actually doing. Are you trying to create a record on the sub form and BECAUSE you get an error you want to cancel the entry of a record on th esub form and ALSO delete the record on the main form?

more information PLEASE!
Avatar billede nih Novice
27. december 2001 - 22:38 #16
mark_j>
Når du bruger me.parent.blabla SKAL du afprøve subformen fra mainformen.
Hvis du åbner din subform seperat vil me.parent give fejl, fordi der ingen \'parent\' er....

Niels
Avatar billede mark_j Nybegynder
28. december 2001 - 10:43 #17
Hej Terry
Det faktisk den samme database hvor du hjalp mig med hovedform og to subforme, for et stykke tid siden. Jeg mailede den til dig.Problemet opstaar
naar en medarbejder starter op med at taste noget information ind og lige pludselig fortryder at have oprettet den record, paa nuvaerende tidspunkt bliver personen noedt til at udfylde det hele inden han kan slette recorden. Det er temmeligt upraktisk
Mark
Avatar billede terry Ekspert
28. december 2001 - 17:26 #18
Hi Mark,
Ok, I have just looked at the dB from the other question I helpted you with. Having two sub forms makes things a little more difficult!

Lets say you create a record in the main form and then one or more in the first sub form. Then you enter one or more records in th esecond sub form. Do you wnat to delete ALL the records in BOTH sub forms and also the record on the main form?

Íf thats what you want to do then you can use the following

Private Sub Form_BeforeUpdate(Cancel As Integer)
    If IsNull(Me.maskinID) Then
        Me.Undo
       
        Cancel = True
       
        DoCmd.RunSQL \"DELETE * FROM tblGruppe where GruppeID = \" & Me.Parent.gruppeID
       
    End If

End Sub

You can also do this on the first sub form if need be.

I am off to England tomorrow so you wont be hearing from me before about 4th January, so have a good New Year :o)
Avatar billede terry Ekspert
28. december 2001 - 17:27 #19
Oh! and if you dont want to see the mesage about deleting a reocrd then

Docmd.setwarnings = False
...Delete
Docmd.setwarnings = True





Avatar billede mark_j Nybegynder
01. januar 2002 - 19:42 #20
Jeg er ferie tilbage d.6-1-2002
godt nytår
Avatar billede terry Ekspert
10. april 2002 - 08:06 #21
godt nytår, og tak :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester