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
6 svar · 606 visningar · startad av devotion
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
Var finns sNewName?
Om det är sNewUser kan det bero på två saker:
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
Ja, de två första tecknena från för- och efternamn. Det är väl inte lika med "Henrik Lindell"? ;)
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
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
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