Avatar billede al_pacone Nybegynder
23. juli 2006 - 23:56 Der er 7 kommentarer

Tjekke om post kan / må slettes.

Hvordan tjekker jeg med kode, om en post kan / må slettes, inden jeg forsøger at slette?
Posten har gennemtvunget referentiel integritet uden kaskadevis sletning.

En ikke så elegant løsning findes her. http://www.eksperten.dk/spm/720610
Det er vel lidt mere elegant og tjekke før man forsøger sletning eller hvad?
Avatar billede al_pacone Nybegynder
24. juli 2006 - 00:09 #1
Jeg skal bruge det til at "disable" en sletteknap, så brugeren slet ikke får muligheden for sletning af posten.
Avatar billede terry Ekspert
24. juli 2006 - 11:46 #2
In the On Current event you can use dcount to find out if there are related records and if there then disabele the button.

Example:

If Dcount("Thefield", "TheTable", "TheCriteria") > 0 Then

Me.YourButton.Enabled = True

Else

Me.YourButton.Enabled = False


End if



TheCriteria coukd for example be

"SomeFieldInTable = " & Me.SomeFieldOnForm
Avatar billede al_pacone Nybegynder
24. juli 2006 - 19:26 #3
Det vil jo kræve at jeg tjekker alle tabeller hvor posten evt. bruges.
Det kan jo i nogle tilfælde dreje sig om temmelig mange tabeller.

Hvis Access i forvejen ved om posten er i brug eller ej, findes der vel en mere elegant måde at finde svaret på?
Avatar billede terry Ekspert
24. juli 2006 - 19:39 #4
As far as I know, Access cant tell you that related records exist before you try doing something which which requires that Access checks if there are, for example a delete. Just moving through a recordset doesnt require that Access looks for related records.

How many related tables are there? You could make a query which selects the total number of related records in one field, then you just need to select that value.
Avatar billede al_pacone Nybegynder
24. juli 2006 - 19:51 #5
I den opgave jeg er igang med, er der kun en releteret tabel, så det er ikke et stort problem endnu. Men jeg ville gerne have mulighed for at bruge koden i fremtidige projekter, hvor det jo kan dreje sig om mere end en tabel der skal tjekkes.

Jeg syntes bare det er dårlig skik og lade brugeren forsøge sletning, hvis det strider imod de regler man har sat i referentiel integritet.

Hvis det ikke kan være anderledes, er det vel i den retning jeg må gå.
Avatar billede rosco Novice
24. juli 2006 - 19:54 #6
Til gengæld var det lige den funktion jeg manglede. Vil bruge den til de lister der anvendes af en Combobox.  f.eks sådan

If DCount("[Druesort]", "tblvareliste", "[Druesort] =" & Me.ID) > 0 Then
Me.bntSletPost.Enabled = False
Else
Me.bntSletPost.Enabled = True
End If
Avatar billede terry Ekspert
24. juli 2006 - 20:04 #7
Deactivating a button if realated records exist isnt always a business requirement. Some people might require that the user be asked if they first want to delete the related records.

Anyway, as I said, I dont know of any simple method. Although thiking about it, it might be possible to make some code which could find related tables and then from that checked if records existed. But it is still going to require some code. All you would get from this idea would be re-usable code.
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