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

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Problemer med GUIDs og dynamisk SQL
Fra : Jesper Stocholm


Dato : 18-02-03 10:34

Jeg har noget kode, der opbygger en SQL-streng dynamisk. SQL-strengen
skal indsætte en række i en tabel, hvor den primære nøgle genereres i
applikationslaget dynamisk via Scriptlet.Typelib (GUID).

Den problematiske del af koden er :

   strSql = strSql & ") VALUES ('" & [*] & "','" & Session("userId") &_
       "','" & strTitle & "'," &_
      dblPrice & "," & intYearPublic & "," & intEdition & ",'" &_
      Now & "','" & cBookStatus & "'"

[*]
Problemet opstår, når jeg forsøger at indsætte mit GUID i min
SQL-streng. Mit GUID genereres som

   Dim oGuid
   Set oGuid = Server.CreateObject("Scriptlet.TypeLib")

, dvs det giver noget i retning af en streng som
   
   {E13AE08F-DC69-4CAA-82F2-7658090F7F6C}

Men når jeg indsætter dette

   strSql = strSql & ") VALUES ('" & oGuid.GUID & "','" & Session("userId") &_

på pladsen [*], så stopper sammensætningen af min SQL-streng efter
dette - resten fra Session("userid") kommer ganske enkelt ikke med. Hvis
jeg derimod bruger strengen "1" i stedet for mit GUID, så sammensættes
strengen ganske normalt.

For mig at se burde den SQL jeg får ud af det se nogenlunde således ud

   INSERT INTO Table (bookid,userid) VALUES ('{92A22885-D65E-42B3-B596-F7616B81D3DB}','wastdyfguhjesrtdy')

men det jeg får ud af det er

   INSERT INTO Table (bookid,userid) VALUES ('{92A22885-D65E-42B3-B596-F7616B81D3DB}

Er der noget i brugen af disse GUIDs jeg har overset ?



--
Jesper Stocholm - http://stocholm.dk
www.asp-faq.dk: FAQ for dk.edb.internet.webdesign.serverside.asp
www.usenet.dk/netikette/citatteknik.html: Skriv under det du svarer på
Svar venligt til gruppen og ikke til mig privat !

 
 
Jesper Stocholm (18-02-2003)
Kommentar
Fra : Jesper Stocholm


Dato : 18-02-03 12:20

Jesper Stocholm wrote :

> Jeg har noget kode, der opbygger en SQL-streng dynamisk. SQL-strengen
> skal indsætte en række i en tabel, hvor den primære nøgle genereres i
> applikationslaget dynamisk via Scriptlet.Typelib (GUID).
>
> [*]
> Problemet opstår, når jeg forsøger at indsætte mit GUID i min
> SQL-streng.
>
> For mig at se burde den SQL jeg får ud af det se nogenlunde således ud
>
> INSERT INTO Table (bookid,userid) VALUES
> ('{92A22885-D65E-42B3-B596-F7616B81D3DB}','wastdyfguhjesrtdy')
>
> men det jeg får ud af det er
>
> INSERT INTO Table (bookid,userid) VALUES
> ('{92A22885-D65E-42B3-B596-F7616B81D3DB}
>
> Er der noget i brugen af disse GUIDs jeg har overset ?

jeg prøvede at teste på, om der evt var nogle "mærkelige" tegn til slut i
den streng, der indeholder mit GUID. Disse guids er altid 38 tegn lange,
så jeg har fundet ud af, at hvis jeg eksplicit tager disse 38 tegn med i
min SQL-sætning, så virker det som det skal.

Jeg bruger altså

dim oGuid ' as Scriptlet.TypeLib
dim strGuid ' as string
set oGuid = Server.CreateObject("Scriptlet.TypeLib")
strGuid = Left(oGuid.GUID,38)

.... og det virker.



--
Jesper Stocholm - www.stocholm.dk - www.asp-faq.dk
** De andre siger, at han er 16 **
Svar venligst til gruppen og ikke til mig privat !
Skriv under det du svarer på - www.usenet.dk/netikette/citatteknik.html

Jens Gyldenkærne Cla~ (18-02-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 18-02-03 15:19

Jesper Stocholm skrev:

> Problemet opstår, når jeg forsøger at indsætte mit GUID i min
> SQL-streng. Mit GUID genereres som

> {E13AE08F-DC69-4CAA-82F2-7658090F7F6C}

Prøv at strippe tuborgklammerne i din insert-kommando. Jeg kan ikke
give nogen fornuftig forklaring på hvornår de skal med og hvornår
de skal undlades - men jeg har oplevet at det kan gøre en forskel.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jesper Stocholm (18-02-2003)
Kommentar
Fra : Jesper Stocholm


Dato : 18-02-03 15:28

Jens Gyldenkærne Clausen wrote :

> Jesper Stocholm skrev:
>
>> Problemet opstår, når jeg forsøger at indsætte mit GUID i min
>> SQL-streng. Mit GUID genereres som
>
>> {E13AE08F-DC69-4CAA-82F2-7658090F7F6C}
>
> Prøv at strippe tuborgklammerne i din insert-kommando. Jeg kan ikke
> give nogen fornuftig forklaring på hvornår de skal med og hvornår
> de skal undlades - men jeg har oplevet at det kan gøre en forskel.

det har jeg prøvet ... og også at fjerne bindestregerne - men lige fedt
hjalp det. Den mest barberede løsning jeg kunne finde var kun at bruge de
første 38 tegn ... herefter virker det uden problemer - _med_ paranteserne.



--
Jesper Stocholm - http://stocholm.dk - http://asp-faq.dk
Skriv venligst under det du svarer på og skær det overflødige væk.
Se evt hvorfor på http://www.usenet.dk/netikette/citatteknik.html
Svar venligt til gruppen og ikke til mig privat !

Jens Gyldenkærne Cla~ (18-02-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 18-02-03 15:35

Jesper Stocholm skrev:

>>> {E13AE08F-DC69-4CAA-82F2-7658090F7F6C}

>> Prøv at strippe tuborgklammerne i din insert-kommando.

> det har jeg prøvet ... og også at fjerne bindestregerne

De skal ikke fjernes.

> Den mest barberede løsning jeg kunne finde var kun at bruge de
> første 38 tegn ...

Det forstår jeg ikke. Ovenstående guid er da netop kun 38 tegn (36
uden paranteser). Hvor kommer ekstrategnene ind henne?
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jesper Stocholm (18-02-2003)
Kommentar
Fra : Jesper Stocholm


Dato : 18-02-03 15:44

Jens Gyldenkærne Clausen wrote :

> Jesper Stocholm skrev:
>
>>>> {E13AE08F-DC69-4CAA-82F2-7658090F7F6C}

>> Den mest barberede løsning jeg kunne finde var kun at bruge de
>> første 38 tegn ...
>
> Det forstår jeg ikke.

my point exactly ...

> Ovenstående guid er da netop kun 38 tegn (36
> uden paranteser). Hvor kommer ekstrategnene ind henne?

tja ... det har jeg ingen anelse om ... men det virker med Left
(oGuid.GUID,38)



--
Jesper Stocholm - http://stocholm.dk

Svar til gruppen og ikke til mig privat !
Skriv under det du svarer på - www.usenet.dk/netikette/citatteknik.html

Jens Gyldenkærne Cla~ (18-02-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 18-02-03 16:23

Jesper Stocholm skrev:

>> Ovenstående guid er da netop kun 38 tegn (36
>> uden paranteser). Hvor kommer ekstrategnene ind henne?

Har du prøvet at se hvad Len(oGuid.GUID) giver?

> tja ... det har jeg ingen anelse om ... men det virker med Left
> (oGuid.GUID,38)

Kommer til at tænke på - er det i virkeligheden bare et
typecastproblem? Virker det med Cstr(oGuid.GUID)?
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste