/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Replace funktionen.
Fra : Kasper Lund


Dato : 07-07-08 10:08

Hej med jer.

Vi har et vbscript der henter data fra en SQL database og sætter det ind
i en mysql database.

En af de ting der hentes er et windows username som skrives
DOMAIN\username. Problemet er denne backslash, som ikke kommer med i
mysql databasen da den skal escapes.

Det kan man gøre med replace.

Jeg har prøvet med replace("DOAMIN\username","\","\\") hvilket virker fint.

Men, i scriptet står der ikke DOMAIN\username men UserName(i) som er en
variabel i en for løkke.

replace(UserName(i),"\","\\") resulterer i "Invalid use of NULL: 'replace'"

replace("UserName(i)","\","\\") resulterer i at der står UserName(i) i
alle felterne.

Så hvordan bruger jeg replace på en variabel?

På forhånd tak for hjælpen.

/Kasper

 
 
Gert Krabsen (07-07-2008)
Kommentar
Fra : Gert Krabsen


Dato : 07-07-08 10:23

Kasper Lund skrev:
> Hej med jer.
>
> Vi har et vbscript der henter data fra en SQL database og sætter det ind
> i en mysql database.
>
> En af de ting der hentes er et windows username som skrives
> DOMAIN\username. Problemet er denne backslash, som ikke kommer med i
> mysql databasen da den skal escapes.
>
> Det kan man gøre med replace.
>
> Jeg har prøvet med replace("DOAMIN\username","\","\\") hvilket virker fint.
>
> Men, i scriptet står der ikke DOMAIN\username men UserName(i) som er en
> variabel i en for løkke.
>
> replace(UserName(i),"\","\\") resulterer i "Invalid use of NULL: 'replace'"
>
> replace("UserName(i)","\","\\") resulterer i at der står UserName(i) i
> alle felterne.
>
> Så hvordan bruger jeg replace på en variabel?


Uden at have prøvet lige netop replace har jeg andre steder løst
lignende problemer ved at tage det i to skridt:

$userNavn = UserName(i);
replace($userNavn,"\","\\")










Kasper Lund (07-07-2008)
Kommentar
Fra : Kasper Lund


Dato : 07-07-08 10:30

Gert Krabsen skrev:
> Kasper Lund skrev:
>> Hej med jer.
>>
>> Vi har et vbscript der henter data fra en SQL database og sætter det
>> ind i en mysql database.
>>
>> En af de ting der hentes er et windows username som skrives
>> DOMAIN\username. Problemet er denne backslash, som ikke kommer med i
>> mysql databasen da den skal escapes.
>>
>> Det kan man gøre med replace.
>>
>> Jeg har prøvet med replace("DOAMIN\username","\","\\") hvilket virker
>> fint.
>>
>> Men, i scriptet står der ikke DOMAIN\username men UserName(i) som er
>> en variabel i en for løkke.
>>
>> replace(UserName(i),"\","\\") resulterer i "Invalid use of NULL:
>> 'replace'"
>>
>> replace("UserName(i)","\","\\") resulterer i at der står UserName(i) i
>> alle felterne.
>>
>> Så hvordan bruger jeg replace på en variabel?
>
>
> Uden at have prøvet lige netop replace har jeg andre steder løst
> lignende problemer ved at tage det i to skridt:
>
> $userNavn = UserName(i);
> replace($userNavn,"\","\\")

Det minder mig meget om PHP syntax, kan man lave variabler med $ i vbs?

Den brokker sig over dollartegnet?

Kasper Lund (07-07-2008)
Kommentar
Fra : Kasper Lund


Dato : 07-07-08 10:34

Kasper Lund skrev:

>>
>> $userNavn = UserName(i);
>> replace($userNavn,"\","\\")
>
> Det minder mig meget om PHP syntax, kan man lave variabler med $ i vbs?
>
> Den brokker sig over dollartegnet?

Jeg har prøvet med:

Dim UName
UName = UserName(i)

og

replace(UName,"\","\\")

Det giver mig:

"Invalid use of NULL: 'replace'"

Gert Krabsen (07-07-2008)
Kommentar
Fra : Gert Krabsen


Dato : 07-07-08 10:45

Kasper Lund skrev:
> Kasper Lund skrev:
>
>>>
>>> $userNavn = UserName(i);
>>> replace($userNavn,"\","\\")
>>
>> Det minder mig meget om PHP syntax, kan man lave variabler med $ i vbs?
>>
>> Den brokker sig over dollartegnet?
>
Det var ganske rigtigt php syntax, men du har jo heldigvis opdaget det.



> Jeg har prøvet med:
>
> Dim UName
> UName = UserName(i)
>
> og
>
> replace(UName,"\","\\")
>
> Det giver mig:
>
> "Invalid use of NULL: 'replace'"

Er du _helt_ sikker på, at UserName(i) har en værdi?

if not isnull(UName) then
   replace(UName,"\","\\")
else
   msgbox "tomt felt"
endif

Kasper Lund (07-07-2008)
Kommentar
Fra : Kasper Lund


Dato : 07-07-08 10:58

Gert Krabsen skrev:
> Kasper Lund skrev:
>> Kasper Lund skrev:
>>
>>>>
>>>> $userNavn = UserName(i);
>>>> replace($userNavn,"\","\\")
>>>
>>> Det minder mig meget om PHP syntax, kan man lave variabler med $ i vbs?
>>>
>>> Den brokker sig over dollartegnet?
>>
> Det var ganske rigtigt php syntax, men du har jo heldigvis opdaget det.
>
>
>
>> Jeg har prøvet med:
>>
>> Dim UName
>> UName = UserName(i)
>>
>> og
>>
>> replace(UName,"\","\\")
>>
>> Det giver mig:
>>
>> "Invalid use of NULL: 'replace'"
>
> Er du _helt_ sikker på, at UserName(i) har en værdi?
>
> if not isnull(UName) then
> replace(UName,"\","\\")
> else
> msgbox "tomt felt"
> endif

His jeg kører scriptet uden replace funktionen kommer de rigtige værdier
ind (undtagen backslash). Så jeg er ret sikker på at den har en værdi.

Gert Krabsen (07-07-2008)
Kommentar
Fra : Gert Krabsen


Dato : 07-07-08 11:46

Kasper Lund skrev:
> Gert Krabsen skrev:
>> Kasper Lund skrev:
>>> Kasper Lund skrev:
>>>
>>>>>
>>>>> $userNavn = UserName(i);
>>>>> replace($userNavn,"\","\\")
>>>>
>>>> Det minder mig meget om PHP syntax, kan man lave variabler med $ i vbs?
>>>>
>>>> Den brokker sig over dollartegnet?
>>>
>> Det var ganske rigtigt php syntax, men du har jo heldigvis opdaget det.
>>
>>
>>
>>> Jeg har prøvet med:
>>>
>>> Dim UName
>>> UName = UserName(i)
>>>
>>> og
>>>
>>> replace(UName,"\","\\")
>>>
>>> Det giver mig:
>>>
>>> "Invalid use of NULL: 'replace'"
>>
>> Er du _helt_ sikker på, at UserName(i) har en værdi?
>>
>> if not isnull(UName) then
>> replace(UName,"\","\\")
>> else
>> msgbox "tomt felt"
>> endif
>
> His jeg kører scriptet uden replace funktionen kommer de rigtige værdier
> ind (undtagen backslash). Så jeg er ret sikker på at den har en værdi.

Og du er naturligvis også sikker på, at UName får tildelt en værdi,
selvom det ikke lyder sådan.



Så må det vel blive den tunge vej:

Dim UName as string
Dim deletal as integer

deletal=InStr(1,Username(i),"\", vbTextCompare)

UName = left(Username(i),deletal-1) & "\\" & right(Username(i),
len(Username(i))-deletal)


med forbehold for, at der skal justeres lidt i strenglængder
ved brug af +1 hhv. -1












Kasper Lund (07-07-2008)
Kommentar
Fra : Kasper Lund


Dato : 07-07-08 12:44

Hej igen.

Det virkede fint med dit forslag om at teste om den var Tom.

Problemet var at Endif skulle hedde End IF (Det er første gang jeg
arbejder med vbs, så den havde jeg ikke lige gennemskuet).

Alt virker fint nu - mange tak for hjælpen.

Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste