Avatar billede PERJR Novice
29. maj 2013 - 16:05 Der er 6 kommentarer og
1 løsning

Forhindre sletning af rækker i en forespørgsel

Hej
Access 2007. Har en Front-End database med en forespørgsel, som en række brugere skal kunne åbne og indtaste oplysninger i (trækker kun data fra 1 tabel). Brugerne skal kunne tilføje nye rækker; men jeg vil gerne forhindre dem i, at kunne slette eksisterende rækker.
Hvordan gør jeg det?
Avatar billede fdata Forsker
29. maj 2013 - 17:20 #1
Det er som regel ikke så smart at lade brugerne arbejde direkte i en forespørgsel (=en tabel).

Opret en Fortløbende formular med forespørgslen som kilde og sæt så formularens TilladSletninger egenskab til Nej.
Avatar billede PERJR Novice
30. maj 2013 - 08:51 #2
Hej fdata
Du har selvfølgelig ret - igen!
Og mit spørgsmål denne gang hænger faktisk sammen med noget du tidligere har hjulpet mig med (spørgsmål fra 20/3). For forespørgslen som jeg ønsker at forhindre sletninger i genereres ud fra et brugervalg. Hvis jeg skal have en fortløbende formular (dataark), skal den dannes parallelt og med sletning ikke tilladt og sorteret tilsvarende forespørgslen.Så hvordan får jeg dannet en ny formular med de 2 felter "PROGRAM" og "Brugernavn", og det så er den der åbnes fremfor forespørgselen?

Den kode jeg aktualt bruger til det er:

Private Sub Kommandoknap2_Click()
  Const Qname = "Gisprogrammer_FSP"
  Dim BrugerNavn As String
  Dim Q As QueryDef
 
  On Error Resume Next  'Første gang findes forespørgslen jo ikke
  CurrentDb.QueryDefs.Delete Qname
  On Error GoTo 0

  BrugerNavn = Forms![Opstartsformular].Kombinationsboks0
  Set Q = CurrentDb.CreateQueryDef(Qname, "SELECT PROGRAM, " & BrugerNavn & " FROM Gisprogrammer ORDER BY Sortering, Program")
  Set Q = Nothing

  DoCmd.OpenQuery Qname
End Sub
Avatar billede fdata Forsker
30. maj 2013 - 22:19 #3
Du opretter en fortløbende formular, som er baseret på "Gisprogrammer_FSP", og gemmer den.

Så kan du bare udskifte
  DoCmd.OpenQuery Qname
med
  DoCmd.OpenForm "DinForm"
Avatar billede PERJR Novice
31. maj 2013 - 13:11 #4
Hej fdata
Det fungerer ikke. Den første del af min kode danner jo forespørgslen og udtrækker et bestemt felt, som indsættes i forespørgselen afhængigt af et brugervalg(brugernavn). Og formularen vil jo fortsat referere til det felt (det brugernavn) som var aktivt, da jeg lavede formularen.Så som jeg ser det så må formularen dannes påny, og åbne som en dataarksformular og med begrænsning på sletmulighed.
Avatar billede fdata Forsker
03. juni 2013 - 20:18 #5
Du kan da bare snyde formularen  :O)

Hvis du retter forespørgslen til

  SELECT PROGRAM, " & BrugerNavn & " AS Snyd FROM Gisprogrammer ORDER BY Sortering, Program

... kan du lade formularen vise feltet Snyd. Det vil altid eksistere.
Avatar billede PERJR Novice
04. juni 2013 - 09:13 #6
Altså fdata
Det er jo genialt det der - og kreativt !
Det funker - og når jeg indsætter :
DoCmd.OpenForm "Gisprogrammer_FORM", acFormDS
så åbner formularen bare i dataarksview - og med blokeret slettemulighed.
Perfekt!
1000 tak for hjælpen fdata :-)
Avatar billede fdata Forsker
04. juni 2013 - 19:26 #7
Velbekomme. Access er jo ganske smart, ikke?  :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

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