Avatar billede godtnok Nybegynder
03. januar 2002 - 17:34 Der er 5 kommentarer og
2 løsninger

Ændre værdien i et felt

Hej,

jeg har følgende tabel:

id, id2

Hvor id2 henter sin værdi fra id. Jeg ønsker så at manipulere med værdien i id2.
Jeg har programmeret i det i ASP, men jeg er ikke den store haj til MS Access 2000.

if request.form(\"number\") <> \"\" then
  intValue = digitcount(Trim(Request.form(\"number\")), 14)
  \'number = digitcount(intValue, 14)
 
  Response.Write \"Kontrolciffer = \" & intValue & 10 - (TotalTvrSum(intValue) mod 10)
 
End if

Function TotalTvrSum(number)
  nr = 2
  value = 0
  ArrNumber = MakeArray(number)
  ArrNumber = Split(ArrNumber, \";\")
  For i = 0 to Ubound(ArrNumber)
    if nr = 2 then
      value = value + TvrSum((ArrNumber(i)*1))
      nr = 1
    elseif nr = 1 then
      value = value + TvrSum((ArrNumber(i)*2))
      nr = 2
    End if
  Next
  TotalTvrSum = value
End function

Function MakeArray(value)
  For i = 1 to Len(value)
    tmpValue = tmpValue & Left(value, 1) & \";\"
    value = Right(value, Len(value)-1)
  Next
  if Len(tmpValue) > 1 then
    MakeArray = Left(tmpValue, Len(tmpValue)-1)
  else
    MakeArray = tmpValue
  End if
End function

Function digitcount(value, antal)
  For i = 1 to antal-Len(value)
    tmpValue = 0 & tmpValue
  Next
  digitcount = tmpValue & value
End function

Function TvrSum(value)
  v = 0
  tmpArr = MakeArray(value)
  Arr = Split(tmpArr, \";\")
  for i = 0 to ubound(Arr)
    v = v + Arr(i)
  next
  TvrSum = v
End function

tabellen er en forespørgsel og ændringen af værdien skal ske så snart der bliver oprettet nye poster.

Håber der er nogen som kan hjælpe mig videre.
Avatar billede accesspro Nybegynder
04. januar 2002 - 14:27 #1
Der det samme manipulation hver gang. I så fald kan du lave det hele i en forespørgsel. Hvor ID2 er et beregnet felt. ID2: [id] + 100....f.eks
Avatar billede godtnok Nybegynder
04. januar 2002 - 15:01 #2
Er det nemmere hvis det kan køres i en makro?

Jeg har puttet koden ind i et modul og den brokker sig ikke umiddelbart, den foretager bare ikke beregningen.

Jeg har en formular, hvorfra jeg overfører id til en anden formular, som skal have id2. Jeg benytter en makro til det og man kan vel \"putte\" beregningen af feltet ind i den makro?
Avatar billede accesspro Nybegynder
04. januar 2002 - 18:05 #3
Du kan refere til dine felter på formularen ved f.eks me!ID hvis det er samme formular eller forms![formsnavn]![id] hvis det er en anden formular. Så kan du jo manipulere id2 ved f.eks.

Me!id2 = forms![formsnavn]![id] + 100

Robert
Avatar billede godtnok Nybegynder
04. januar 2002 - 18:12 #4
jeg skal ikke lave beregningen \"Me!id2 = forms![formsnavn]![id] + 100\", men den jeg har beskrevet i ASP og det er det mit spørgsmål egentlig går ud på.

Jeg har puttet følgende kode ind i et modul:

Function KontrolCiffer(value)
  If (TotalTvrSum(value) Mod 10) = 0 Then
    KontrolCiffer = 10
  Else
    KontrolCiffer = (TotalTvrSum(value) Mod 10)
  End If
End Function

Function TotalTvrSum(number)
  nr = 2
  value = CInt(0)
  ArrNumber = MakeArray(number)
  ArrNumber = Split(ArrNumber, \";\")
  For i = 0 To UBound(ArrNumber)
    If nr = 2 Then
      value = value + CInt(TvrSum((CInt(ArrNumber(i)) * 2)))
      nr = 1
    ElseIf nr = 1 Then
      value = value + CInt(TvrSum((CInt(ArrNumber(i)) * 2)))
      nr = 2
    End If
  Next
  TotalTvrSum = value
End Function

Function MakeArray(value)
  For i = 1 To Len(value)
    tmpValue = tmpValue & Left(value, 1) & \";\"
    value = Right(value, Len(value) - 1)
  Next
  If Len(tmpValue) > 1 Then
    MakeArray = Left(tmpValue, Len(tmpValue) - 1)
  Else
    MakeArray = tmpValue
  End If
End Function

Function TvrSum(value)
  v = 0
  tmpArr = MakeArray(value)
  Arr = Split(tmpArr, \";\")
  For i = 0 To UBound(Arr)
    v = v + Arr(i)
  Next
  TvrSum = v
End Function

Jeg ønsker så at \"køre\" funktionen kontrolciffer i en formular med en værdi og ændre den værdi til den nye værdi efter kontrolciffer beregningen er overstået.

Er det helt vulapyk?
Avatar billede accesspro Nybegynder
04. januar 2002 - 18:28 #5
Beklager jeg ikke lige var med. Har du prøvet

Dim str as string

str = Me!id

Call kontrolciffer(str)


og så tilføje til slut i funktion konttolciffer

Forms![Formnavn]![ID2] = Kontrolciffer
Avatar billede godtnok Nybegynder
13. januar 2002 - 00:22 #6
jeg kigger på dit svar lidt senere.
Avatar billede godtnok Nybegynder
12. februar 2002 - 23:30 #7
Hej Accesspro, jeg skulle bare kalde min funktion på værdien kontrolciffer(Forms![Formnavn]![ID2]) istedet.
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