---
title: "Variabel får fel värde"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/168583-variabel-får-fel-värde"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "devotion"
published: "2008-01-30T17:12:35.000Z"
updated: "2008-01-30T18:23:48.000Z"
replies: 6
views: 627
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/168583-variabel-får-fel-värde"
---

# Variabel får fel värde

## #1 — devotion, 2008-01-30T17:12Z

Hej! :)  

Jag har följande kod:

```
'*********************************
' main()
'*********************************

sub main()
	dim sSQL
	dim AppUI
	dim sUsers, sUser
	dim sNewUser, sSignature
	dim lNextUserId, lGroupId, lRoleId
	
	Set AppUI = GetObject(,"UppdragNU.ApplicationUI")
		sUsers=GetUNValues("SELECT [Name] FROM [tblUsers]")
		sUser=AppUI.SelectString("Byt användare", "Välj användare du vill arkivera", sUsers, False)
		Set AppUI=Nothing
	
	'Kontrollera så att sUser inte är tom
	if sUser="" then 
		call MsgBox("Kan inte ändra Användare!", 0, "Fel")
		exit sub
	end if
	
	'Kontrollera så att inte sNewUser inte är tom
	sNewUser=InputNewUser()
	if sNewUser="" then 
		call MsgBox("Kan inte ändra Användare!", 0, "Fel")
		exit sub
	end if
	
	'Flytta användaren till behörighetsgruppen Arkiverad (tillfällig lösning i v3.20)
	sSQL="UPDATE [tblUsers] SET [RoleId] = 10000, [Custom1] = '**Arkiverad**' WHERE [Name] = '" & sUser & "'"
	ExecuteSQL(sSQL)
	msgbox sNewUser
	
	'Sätta variabler
	lNextUserId=GetNextId("tblUsers")
	sSignature=CreateSignature(sNewUser)
	lGroupId=GetUNValue("SELECT [GroupId] FROM [tblUsers] WHERE [Name] = '" & sUser & "'")
	lRoleId=GetUNValue("SELECT [RoleId] FROM [tblUsers] WHERE [Name] = '" & sUser & "'")
	
	msgbox sNewUser
	'Skapa en ny användare
	sSQL= "INSERT INTO [tblUsers] ( [Id], [Modified], [Name], [Sign] , [GroupId], [RoleId])" _
		& " VALUES( " & lNextUserId & ", GETDATE(), '" & sNewUser & "', '" & sSignature & "', " & lGroupId & ", " & lRoleId & " )"
	ExecuteSQL(sSQL)
	
	'sSQL="UPDATE [tblTask] SET [User] 
	
	msgBox "Bytt användare"
	
end sub

function InputNewUser()
	dim s, sCheckUser
	do
		s=InputBox("Skriv in namnet på den nya användaren", "Ny användare")
		if s="" then 
			InputNewUser="" 
			exit function
		end if
		sCheckUser=GETUNValue("SELECT [Name] FROM [tblUsers] WHERE [Name] = '" & s & "'")
		if sCheckUser <> "" then MsgBox("Du har matat in ett användarnamn som redan finns!" & CrLf & "Prova att lägga till en bokstav mellan för och efternamn!")
	loop while sCheckUser <> ""
	InputNewUser = s
end function

function CreateSignature(sName)
	dim re, matches
 
	set re = new regexp
	re.pattern = "\d"
	if not re.test(sName) then
		re.global = true
		re.pattern = "[^ ]+"
		set matches = re.execute(sName)
		if matches.count = 2 then
			sName = ucase(left(matches(0) , 2)) & ucase(left(matches(1), 2))
		end if
	end if
	CreateSignature = sName
end function
```

Av någon anledning så får variabeln **sNewUser** samma värde som **sSignature** dvs namn och signatur blir samma värde, när det skrivs till databasen (INSERT..)

Vad har jag gjort för fel? :)  

Mvh
Henrik

Permalänk: https://www.webforum.nu/p/168583

## #2 — Peter S, 2008-01-30T17:15Z

Var finns sNewName?

Om det är sNewUser kan det bero på två saker:

- sNewUser innehåller siffror
- sNewUser innehåller fler eller färre än två namn

Permalänk: https://www.webforum.nu/p/2076621

## #3 — devotion, 2008-01-30T17:46Z

> **Peter S skrev:**
>
> Var finns sNewName?
> 
> Om det är sNewUser kan det bero på två saker:
>
>
> - sNewUser innehåller siffror
> - sNewUser innehåller fler eller färre än två namn

Hmmm... sNewName fanns bara i mitt huvud... sorry.. ändrat det...

Jag har testat att sätta Henrik Lindell, men det blir HELI...

Mvh
Henrik

Permalänk: https://www.webforum.nu/p/2076625

## #4 — Peter S, 2008-01-30T17:54Z

Ja, de två första tecknena från för- och efternamn. Det är väl inte lika med "Henrik Lindell"? ;)

Permalänk: https://www.webforum.nu/p/2076627

## #5 — devotion, 2008-01-30T18:02Z

Nä, men eftersom jag behöver både signaturen och namnet, så får ju inte namnet förvandlas till signaturen.. :) 

```
sSignature=CreateSignature(sNewUser)
```

Jag vill ju att sSignatur blir HELI
och
sNewUser behåller Henrik Lindell (som det är ursprungligen...)

Men, man kanske inte kan göra så? :)  

Mvh
Henrik

Permalänk: https://www.webforum.nu/p/2076630

## #6 — Peter S, 2008-01-30T18:09Z

Aha!

```
function CreateSignature(sName)
	dim re, matches, myName
 
	myName = sName
	set re = new regexp
	re.pattern = "\d"
	if not re.test(myName) then
		re.global = true
		re.pattern = "[^ ]+"
		set matches = re.execute(myName)
		if matches.count = 2 then
			myName= ucase(left(matches(0) , 2)) & ucase(left(matches(1), 2))
		end if
	end if
	CreateSignature = myName
end function
```

Permalänk: https://www.webforum.nu/p/2076631

## #7 — devotion, 2008-01-30T18:23Z

> **Peter S skrev:**
>
> Aha!
>
>
> ```
> function CreateSignature(sName)
> 	dim re, matches, myName
>  
> 	myName = sName
> 	set re = new regexp
> 	re.pattern = "\d"
> 	if not re.test(myName) then
> 		re.global = true
> 		re.pattern = "[^ ]+"
> 		set matches = re.execute(myName)
> 		if matches.count = 2 then
> 			myName= ucase(left(matches(0) , 2)) & ucase(left(matches(1), 2))
> 		end if
> 	end if
> 	CreateSignature = myName
> end function
> ```

Aha!! :) 

Det funkade bättre...  :)  

Mvh
Henrik

Permalänk: https://www.webforum.nu/p/2076636

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/168583-variabel-får-fel-värde
