Avatar billede 49jensen Nybegynder
16. september 2008 - 08:15 Der er 21 kommentarer og
2 løsninger

Standardværdi eller hvad?

Jeg har et felt i en tabel som skal tildeles en værdi automatisk.
Ved første indtastning skal værdien være A0 - næste A1 også videre indtil A6. Derefter skal værdien være A1 og op til A6.
Altså A0 A1-A2-A3-A4-A5-A6-A1-A2-A3-A4-A5-A6-A1 osv.
Jeg er klar over at jeg skal ind og have fat i noget endless loop,måske som standardværdi, men jeg ikke så god til det med kode, så jeg håber at en kan hjælpe mig med problemet
Avatar billede mugs Novice
16. september 2008 - 08:31 #1
"som skal tildeles en værdi automatisk"

Så vidt så godt. Men den tildelte værdi (felt1) må så være afhængig af indtastningen i et andet felt (lad os kalde det felt2). Dette felt kan så være en Null værdi og eksempelvis måle om det er en ny record:

If me.newrecord then
me.felt1 = A0
end if

Den næste indtastning kan så måle på felt1:

If me.felt1 = "A0" then
me.felt1 = "A1!
end if

Måske det ville være nemmere med en Select Case struktur.
Avatar billede fdata Forsker
16. september 2008 - 18:32 #2
Du kan klare det med en quick-and-dirty v.h.a. en lille tabel, der indeholder "tæller" værdien og en smule kode:

- Opret en tabel ved navn Tæller med et eneste felt: Nr (heltal)
- Opret en post i tabellen med Nr=0

I din indtastningsformular erklærer du en variabel i toppen (før første rutine):

Dim Tlr As Integer

.. og tilføjer to små kode-stumper:

Private Sub Form_BeforeInsert(Cancel As Integer)
  Tlr = DLookup("Nr", "Tæller")
  Me.EnTekst = "A" & Tlr
End Sub

Private Sub Form_BeforeUpdate(Cancel As Integer)
  DoCmd.SetWarnings False
  If Tlr = 6 Then
    DoCmd.RunSQL "UPDATE Tæller SET Nr=0"
  Else
    DoCmd.RunSQL "UPDATE Tæller SET Nr=Nr+1"
  End If
  DoCmd.SetWarnings True
End Sub

Det giver dig ikke en defaultværdi; men den første rutine sætter A0 osv ind i et felt, idet du skriver det første tegn i posten.

Den anden rutine tæller tælleren op når du gemmer en post.

Håber, du kan få det til at spille  ;o)
Avatar billede 49jensen Nybegynder
16. september 2008 - 19:52 #3
Jeg prøver mig lige frem.Jeg er ikke så hurtig så jeg vender nok først tilbage imorgen
Avatar billede 49jensen Nybegynder
16. september 2008 - 22:08 #4
fdata

Det virker ikke ikke efter hensigten. Når jeg åbner formularen og forsøger at indtaste date, får jeg fejl "Ambiguous name detected"
Lad os lige resumere.
Jeg har oprettet tabellen "Tæller" med et felt "Nr".
Derefter har jeg insat - Dim Tlr As Integer - under "Option Compare Database" -er det correct.
De to stykker kode er derefter sat ind.
Avatar billede mugs Novice
16. september 2008 - 22:17 #5
"Ambiguous name detected"

Kan betyde, at du ved en fejl har oprettet det samme procedurenavn 2 gange.
Avatar billede mugs Novice
16. september 2008 - 22:19 #6
Jeg vil anbefale, at du under "Option Compare Database" tilføjer Option Explicit som betyder, at du er tvunget til at navngive dine variabler. Det kan spare dig for mange fejl fremover.
Avatar billede Slettet bruger
16. september 2008 - 22:31 #7
Private Sub Form_BeforeInsert(Cancel As Integer)
On Error GoTo err_handling
Dim rst As DAO.Recordset, i As String
Set rst = Me.RecordsetClone
rst.MoveLast
i = rst!id
Select Case i
Case "A1"
Me.nr = "A2"
Case "A2"
Me.nr = "A3"
Case "A3"
Me.nr = "A4"
Case "A4"
Me.nr = "A5"
Case "A5"
Me.nr = "A6"
Case Else
Me.nr = "A1"
End Select
rst.Close
Exit Sub
err_handling:
If Err.Number = 3021 Then
Me.nr = "A1"
Exit Sub
End If
MsgBox Err.Number & " " & Err.Description
End Sub
Avatar billede Slettet bruger
16. september 2008 - 22:32 #8
Sorry!~)

Private Sub Form_BeforeInsert(Cancel As Integer)
On Error GoTo err_handling
Dim rst As DAO.Recordset, i As String
Set rst = Me.RecordsetClone
rst.MoveLast
i = rst!nr
Select Case i
Case "A1"
Me.nr = "A2"
Case "A2"
Me.nr = "A3"
Case "A3"
Me.nr = "A4"
Case "A4"
Me.nr = "A5"
Case "A5"
Me.nr = "A6"
Case Else
Me.nr = "A1"
End Select
rst.Close
Exit Sub
err_handling:
If Err.Number = 3021 Then
Me.nr = "A1"
Exit Sub
End If
MsgBox Err.Number & " " & Err.Description
End Sub
Avatar billede Slettet bruger
16. september 2008 - 22:35 #9
Ja, nu er jeg ikke helt sikker, dit felt i formularen hedder nr ellers så må du lige skifte rst!nr og me.nr ud i koden!~)
Avatar billede 49jensen Nybegynder
16. september 2008 - 22:37 #10
Nu har jeg compile error, og "En Tekst" i den første kode er blåt. Så det tyder jo på at der er noget galt i det stykke kode. Jeg har checket mine indtastninger en gang til.
Avatar billede mugs Novice
16. september 2008 - 22:40 #11
Må vi den fulde kode og hvilken linie der er fremhævet med en fejl.
Avatar billede 49jensen Nybegynder
16. september 2008 - 22:59 #12
Mit felt formularen hedder "A check"
Avatar billede 49jensen Nybegynder
16. september 2008 - 23:01 #13
Tlr = DLookup("Nr", "Tæller")
  Me.EnTekst = "A" & Tlr

"EnTekst" er blåt
Avatar billede 49jensen Nybegynder
16. september 2008 - 23:05 #14
Jeg har prøvet at mit feltnavn- A check- ind i stedet for "En tekst", men det ændrer ikke noget
Avatar billede mugs Novice
16. september 2008 - 23:09 #15
Jeg plejer at sætte feltnavnet i "":

DLookup("[Nr]", "Tæller")

Men noget tyder på, at feltet EnTekst ikke kan genkendes. Det burde iøvrigt være nok med:

Me.EnTekst = "A" & DLookup("[Nr]", "Tæller")
Avatar billede mugs Novice
16. september 2008 - 23:14 #16
Hvad mener du med dette:

Mit felt formularen hedder "A check"

Når du i koden har feltet EnTekst??
Avatar billede 49jensen Nybegynder
16. september 2008 - 23:32 #17
Med lidt hjælp fra mugs og spg ser det ud yil at virke. Det er jo selv følge formularens felt Me refererer til og det skal jo i klammer.
Det store problem er hvordan jeg fordeler point. Hvis det er iorden vil jeg godt give fdata 100 og 25 til mugs og spg. Så læg lige jeres svar.Hvordan deler man dem.
Mange tak for hjælpen.
Avatar billede mugs Novice
16. september 2008 - 23:58 #18
Vi skal alle lægge et svar. Kommentarer kan ikke honoreres.

http://expfaq.dk/behandling_af_svar#behandling_af_svar

Men det vigtigste er, at din db fungerer.
Avatar billede 49jensen Nybegynder
17. september 2008 - 00:33 #19
fdata læg lige et svar, så jeg kan give point.
Avatar billede fdata Forsker
17. september 2008 - 23:13 #20
Så er jeg tilbage. Spændende battle.
mugs >> Tak for assistance
49jensen >> Du har rystet godteposen over de andre. Der er ikke flere point. Det er ok.
Avatar billede Slettet bruger
17. september 2008 - 23:34 #21
Hej!~)

iflg. 16/09-2008 23:32:23 så er der her 50p til fdata!~)

http://www.eksperten.dk/spm/845847

fdata>ja, en lille battle er altid herligt og mit eget lille testprogram havde jeg stor fornøjelse af at se i aktion!~)
Avatar billede Slettet bruger
18. september 2008 - 08:09 #22
og her er en lille hilsen fra mugs!~)

http://www.eksperten.dk/spm/845853
Avatar billede mugs Novice
18. september 2008 - 08:31 #23
OK spg - Tak
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