Avatar billede fastwrite Nybegynder
15. november 2002 - 23:09 Der er 26 kommentarer og
1 løsning

Felt må ikke indeholde mere end 2 af samme tegn

Hej.
Jeg har et problem jeg ikke helt kan overskue.
Jeg har 16 rum - og i de 16 rum er der 2 senge der kan benyttes. Det vil sige at når jeg i min formular vælger rum 1, er det meningen at jeg kun kan oprette max 2 poster for rum 1-.

Hvordan gør jeg det rent teknisk?
Avatar billede mugs Novice
15. november 2002 - 23:11 #1
Det må kunne gøres ved en brug af Dcount funktionen.
Avatar billede fastwrite Nybegynder
15. november 2002 - 23:19 #2
Dcount?!...

HEY  - mugs - dig med den kæmpeviden.. jeg er sikker på at du kan hoste et lille eksempel ud af ærmet.

imens studerer jeg lige hjælpefilen omkring Dcount..

tak for ledetråden!
Avatar billede mugs Novice
15. november 2002 - 23:22 #3
Hvis du skal tælle på alfanumeriske værdier skal den se sådan ud:

If DCount("[tekst]", "Tabel1", "[tekst]= 'a'") > 2 Then
MsgBox "Der er oprettet for mange logerende i dette værelse."
End If

Men numeriske værdier sådan:

MsgBox DCount("[tal]", "Tabel1", "[tal]= 1")


Jeg har faktisk et eksempel. Læg din e-mail
Avatar billede fastwrite Nybegynder
15. november 2002 - 23:22 #4
Hmm.. det virker mere som om at den bare tæller antal af poster.

Hvad jeg søger er en funktion der siger: "Nix - der er allerede 2 felter der har nummer 5, så du kan ikke oprette en ny post med nummer 5"
Avatar billede mugs Novice
15. november 2002 - 23:23 #5
Så kan du kombinere det med en Undo, der annullerer den sidste oprettelse:


If DCount("[tekst]", "Tabel1", "[tekst]= 'a'") > 2 Then
MsgBox "Der er oprettet for mange logerende i dette værelse."
Me.Undo
End If
Avatar billede fastwrite Nybegynder
15. november 2002 - 23:29 #6
hmm.. jeg har prøvet at skrive følgende:
(hey - min e-mail: info@tsmedia.dk)

Private Sub rumnr_AfterUpdate()
If DCount("[1]", "tblPersoner", "[1]= 1") > 2 Then
MsgBox "Der er oprettet for mange logerende i dette værelse."
End If
End Sub

men kan ikke få det til at virke.

1 tallerne i Dcount har jeg skrevet. Men er det rigtigt? Jeg har skrevet det for værende rum 1

Tabellen hedder "tblPersoner"
Avatar billede mugs Novice
15. november 2002 - 23:41 #7
If DCount("[rum]", "tblPersoner", "[rum]= 1") > 2

Hvis feltet hedder rum
Avatar billede fastwrite Nybegynder
15. november 2002 - 23:43 #8
hej mugs.
tak for tilsendte.
Det jeg kunne tænke var en formular der med det samme siger "NIX, din tumpe - du kan ikke oprette flere logerende i dette værelse". skal den så ikke indsættes i en "efterændring"?
Avatar billede fastwrite Nybegynder
15. november 2002 - 23:46 #9
skal if Dcount oprettes for hvert nummer, mugs?
Avatar billede mugs Novice
15. november 2002 - 23:50 #10
Rolig nu - arbejder på sagen. Denne refererer til den indtastede værdi i feltet tekst:
DCount("[tekst]", "Tabel1", "[tekst] = '" & Me.tekst & "'") > 2 Then
Avatar billede fastwrite Nybegynder
15. november 2002 - 23:55 #11
:o)
tjekker den lige igennem.
Avatar billede mugs Novice
15. november 2002 - 23:56 #12
Den kom til at se sådan ud:

If DCount("[tekst]", "Tabel1", "[tekst] = '" & Me.tekst & "'") > 1 Then
MsgBox "Der er for mange"
Me.Undo
End If

Koden indsættes i feltet "tekst" i BeforeUpdate. Det hat jeg gjort fordi jeg ikke vil have tabellen opdateret før koden har talt antal poster. Kriteriet skal så være >1, idet den post vi forsøger at oprette endnu ikke er i tabellen. D.v.s. Antal poster i tabellen + den vi forsøger at oprette må ikke være større end 2.

Nyt eksempel sendt.
Avatar billede fastwrite Nybegynder
16. november 2002 - 00:23 #13
hmm.. mugs - jeg ved ikke om jeg har forklaret mig ordentligt..

Jeg har lavet det sådan at jeg i mit felt "tekst" må skrive tallet "1" to gange, men ikke tre gange, så skal den brokke sig.

Er det også sådan du har forstået?
Avatar billede fastwrite Nybegynder
16. november 2002 - 00:26 #14
din kode virker til dels. Men jeg kan kun oprette 2 poster, og ikke alle de poster jeg har lyst til. Jeg har jo 16 rum med hver 2 værelser = 32 poster.
Avatar billede mugs Novice
16. november 2002 - 00:26 #15
Ja - Det kan jeg godt se, men så skal kriteriet blot ændres fra 1 til 2 sådan:

If DCount("[tekst]", "Tabel1", "[tekst] = '" & Me.tekst & "'") > 2 Then
MsgBox "Der er for mange"
Me.Undo
End If
Avatar billede mugs Novice
16. november 2002 - 00:28 #16
Feltert tekst referer til rummets navn / benævnelse. Du kan oprette lige så mange poster du vil, men aldrig mere end 2 poster med den samme rum-benævnelse.
Avatar billede fastwrite Nybegynder
16. november 2002 - 00:33 #17
Rummets navn er meget enkelt: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16.

I disse værelser må der oprettes max 2 poster. ALtså - jeg skriver 1 i mit felt. det gør jeg to gange. prøver jeg nu at skrive 1 for 3. gang skal den brokke sig, og undo mine forsøg.
Avatar billede mugs Novice
16. november 2002 - 00:35 #18
YES - og det gør mit eksempel.
Avatar billede fastwrite Nybegynder
16. november 2002 - 00:36 #19
post 1: værelsenr: 1  (OK)
post 2: værelsenr: 1  (OK)
post 3: værelsenr: 1  (NIX... allerede to i forvejen)

Det er det jeg ønsker
Avatar billede fastwrite Nybegynder
16. november 2002 - 00:37 #20
mugs - jeg kan desværre ikke helt se at den gør det.. det er nok bare mig der er noget i vejen med. men i din database har du to felter tekst og tal. Jeg har kun brug for tal.
Avatar billede mugs Novice
16. november 2002 - 00:39 #21
OK - Min db fungerer efter tekstfeltet. Vender lige tilbage om lidt.
Avatar billede fastwrite Nybegynder
16. november 2002 - 00:40 #22
tak.. du er mig en stor hjælp!!!!
Avatar billede mugs Novice
16. november 2002 - 00:56 #23
Men numeriske værdier ser den sådan ud:

If DCount("[tal]", "Tabel1", "[tal] =  " & Me.tal & "") > 1 Then
MsgBox "Der er allerede oprettet max brugere af dette rum."
Me.Undo
End If

Ny db sendt.
Avatar billede fastwrite Nybegynder
16. november 2002 - 01:23 #24
NU virker det!!

Tusind tak for din store hjælp, Mugs!! Hvis du har nogle gode links til at lære mere i Access, må du meget gerne lægge dem ud..

Tager du imod bestillingsarbejde?
Avatar billede fastwrite Nybegynder
16. november 2002 - 01:24 #25
til andre

[tal] = feltets navn
"Tabel1" - er tabellens navn der indeholder værdien (som regel den der også er i formularen)
Avatar billede mugs Novice
16. november 2002 - 01:30 #26
Fint det virker.

nej jeg tager ikke bestillingsarbejde. Jeg er simpelthen ikke god nok til at tage penge for dette. Så skal du have fat i nogle helt andre.

Jeg har lært utrolig meget af andre brugere her i kategorien, så jeg giver blot lidt af denne viden til andre, der har har de problemer jeg også sloges med inden jeg loggede på her for første gang.

Der er utallige eksempler i ekspertens database. det er blot at søge efter dem. Jeg kunne f.eks ikke huske hvordan du i en Dcount refererer til et felt i formularen, men ved at søge på dcount, kom der mange eksempler frem.
Avatar billede fastwrite Nybegynder
16. november 2002 - 01:38 #27
mugs - du er god! Ingen tvivl om det.
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