/ 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
problem med variable i sql sætning
Fra : john wengel


Dato : 24-10-07 20:28

Hej.

Jeg har et script med 2 variable

antal

varenr

Jeg benytter flg. sql sætning for at sætte dem ind i en
access-database
(forbindelsen er åben)

strSQL = "Update rekvipriser set "
strSQL = strSQL & "pris= '&antal&' "

strSQL = strSQL & " Where varenr = '&varenr&'"

Conn.Execute(strSQL)

Datafelttypen er sat til tal for den første variable og til txt
for den anden variable.

Imidlertid bliver tabellen ikke opdateret !(jeg får ingen
fejlmelding)

Hvor går det galt?

På forhånd tak.
John Wengel





--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jens Gyldenkærne Cla~ (24-10-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 24-10-07 21:58

john wengel skrev:

> Datafelttypen er sat til tal for den første variable og til txt
> for den anden variable.

Der skal ikke anførselstegn om talværdier i sql.


--
Jens Gyldenkærne Clausen
»Diplomatiet består netop i, at de gamle kommatister kan få lov til
at tro, at de har vundet. Men i virkeligheden har de tabt.«
Ole Togeby i Information

Jørn Andersen (25-10-2007)
Kommentar
Fra : Jørn Andersen


Dato : 25-10-07 04:38

On 24 Oct 2007 19:27:57 GMT, john wengel <jwnospam@svend-es.dk> wrote:

>Jeg benytter flg. sql sætning for at sætte dem ind i en
>access-database
>(forbindelsen er åben)
>
>strSQL = "Update rekvipriser set "
>strSQL = strSQL & "pris= '&antal&' "
>
>strSQL = strSQL & " Where varenr = '&varenr&'"

Dine variable kommer slet ikke i spil, fordi de ligger inde i "-tegnene.

Prøv med:
strSQL = "UPDATE rekvipriser" & _
" SET pris = " & antal & _
" WHERE varenr = '" & varenr & "'"

>Conn.Execute(strSQL)
>
>Datafelttypen er sat til tal for den første variable og til txt
>for den anden variable.

Og så skal der, som Jens skriver, kun ' ' om tekst-felters indhold -
ikke tal-felters.

>Imidlertid bliver tabellen ikke opdateret !(jeg får ingen
>fejlmelding)

Grunden til, at du ikke får nogen fejlmedling er nok, at SQL'en aldrig
forsøger at indsætte - du har formentlig ikke en post, hvor feltet
varenr indeholder:
&varenr&

Hvis WHERE-betingelsen var opfyldt, ville du givetvis få en fejl, når du
forsøger at indsætte en tekststreng i et tal-felt.


Good luck!

--
Jørn Andersen,
Brønshøj

Jens Gyldenkærne Cla~ (25-10-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 25-10-07 08:06

Jørn Andersen skrev:

> Dine variable kommer slet ikke i spil, fordi de ligger inde i
> "-tegnene.

Av - den burde jeg have set...


Men det kan så blive undskyldningen for at gentage en god gammel
kæphest når det drejer sig om sql-problemer:


   Hvis et sql-kald ikke fungerer som forventet, så skriv sql-
   variablen ud på skærmen. Hver gang. Hver eneste gang...


Metoden er beskrevet i http://asp-faq.dk/article/?id=41


--
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

john wengel (25-10-2007)
Kommentar
Fra : john wengel


Dato : 25-10-07 19:07


>
> Dine variable kommer slet ikke i spil, fordi de ligger inde i
"-tegnene.
>
> Prøv med:
> strSQL = "UPDATE rekvipriser" & _
> " SET pris = " & antal & _
> " WHERE varenr = '" & varenr & "'"
>
Tusind tak-så virker det. Som sidegevinst oplever jeg nu at man også kan
indsætte decimaltal, hvilket jeg også har haft problemer med !





>
> --
> Jørn Andersen,
> Brønshøj


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Philip Nunnegaard (25-10-2007)
Kommentar
Fra : Philip Nunnegaard


Dato : 25-10-07 06:20

> strSQL = "Update rekvipriser set "
> strSQL = strSQL & "pris= '&antal&' "
> strSQL = strSQL & " Where varenr = '&varenr&'"

I tråd med Jens' og Jørns svar:
Ret ovenstående til:

strSQL = "Update rekvipriser set "
strSQL = strSQL & "pris= " & antal
strSQL = strSQL & " Where varenr = "&varenr

Samlet på én linie giver det:
strSQL = "Update rekvipriser set pris=" & antal & " Where varenr = " &
varenr


john wengel (25-10-2007)
Kommentar
Fra : john wengel


Dato : 25-10-07 19:01


> I tråd med Jens' og Jørns svar:
> Ret ovenstående til:
>
> strSQL = "Update rekvipriser set "
> strSQL = strSQL & "pris= " & antal
> strSQL = strSQL & " Where varenr = "&varenr
>
> Samlet på én linie giver det:
> strSQL = "Update rekvipriser set pris=" & antal & " Where varenr = " &
> varenr
>
Så får jeg flg. fejlmelding:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria
expression



--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Philip Nunnegaard (26-10-2007)
Kommentar
Fra : Philip Nunnegaard


Dato : 26-10-07 07:31

> Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
>
> [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria
> expression

Så er vi tilbage ved Jens' svar:
"Hvis et sql-kald ikke fungerer som forventet, så skriv sql-
variablen ud på skærmen. Hver gang. Hver eneste gang..."

Hvis det giver ovenstående fejlmelding, må det være fordi enten antal eller
varenr ikke er et tal (evt. en tom streng).


Jørn Andersen (26-10-2007)
Kommentar
Fra : Jørn Andersen


Dato : 26-10-07 15:05

On Fri, 26 Oct 2007 08:30:54 +0200, "Philip Nunnegaard"
<philip@fjerndettehitsurf.dk> wrote:

>> Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
>>
>> [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria
>> expression
>
>Så er vi tilbage ved Jens' svar:
>"Hvis et sql-kald ikke fungerer som forventet, så skriv sql-
>variablen ud på skærmen. Hver gang. Hver eneste gang..."
>
>Hvis det giver ovenstående fejlmelding, må det være fordi enten antal eller
>varenr ikke er et tal (evt. en tom streng).

Nej, det er fordi Philip overså, at varenr er et tekst-felt. Han skrev:
> strSQL = "Update rekvipriser set "
> strSQL = strSQL & "pris= " & antal
> strSQL = strSQL & " Where varenr = "&varenr

Som skulle være:
strSQL = "UPDATE rekvipriser"
strSql = strSql & " SET pris= " & antal
strSql = strSql & " WHERE varenr = '" & varenr & "'"

- altså ' om værdien i varenr-feltet.

> Samlet på én linie giver det:
> strSQL = "Update rekvipriser set pris=" & antal & " Where varenr = " &
> varenr

Som så skal være:
strSql = "UPDATE rekvipriser SET pris=" & antal & " WHERE varenr = '" &
varenr & "'"
(På én linie.)


Er der forresten nogen, der ved, om der er nogen ydelsesmæssig forskel
på:
strSql = "UPDATE rekvipriser"
strSql = strSql & " SET pris = " & antal
strSql = strSql & " WHERE varenr = '" & varenr & "'"

og:
strSql = "UPDATE rekvipriser" & _
" SET pris = " & antal &_
" WHERE varenr = '" & varenr & "'"

- ?

Under alle omstændigheder synes jeg den sidste er langt lettere at læse,
idet man slipper for alle de mange strSql'er.



Mvh. Jørn

--
Jørn Andersen,
Brønshøj

Philip Nunnegaard (26-10-2007)
Kommentar
Fra : Philip Nunnegaard


Dato : 26-10-07 18:26

> Nej, det er fordi Philip overså, at varenr er et tekst-felt. Han skrev:

Ja, det kan jeg slet ikke se, fremgår noget sted i tråden, at det skulle
være.


Jørn Andersen (27-10-2007)
Kommentar
Fra : Jørn Andersen


Dato : 27-10-07 04:23

On Fri, 26 Oct 2007 19:25:58 +0200, "Philip Nunnegaard"
<philip@fjerndettehitsurf.dk> wrote:

>> Nej, det er fordi Philip overså, at varenr er et tekst-felt. Han skrev:
>
>Ja, det kan jeg slet ikke se, fremgår noget sted i tråden, at det skulle
>være.

Johns første indlæg:
-----
Datafelttypen er sat til tal for den første variable og til txt
for den anden variable.
-----


Mvh. Jørn

--
Jørn Andersen,
Brønshøj

Peter Lykkegaard (27-10-2007)
Kommentar
Fra : Peter Lykkegaard


Dato : 27-10-07 07:27

Jørn Andersen wrote:

> Er der forresten nogen, der ved, om der er nogen ydelsesmæssig forskel
> på:
> strSql = "UPDATE rekvipriser"
> strSql = strSql & " SET pris = " & antal
> strSql = strSql & " WHERE varenr = '" & varenr & "'"
>
> og:
> strSql = "UPDATE rekvipriser" & _
> " SET pris = " & antal &_
> " WHERE varenr = '" & varenr & "'"
>
Det er der men ikke ret stor på så få concatenationer
http://www.asp101.com/articles/marcus/concatenation/default.asp

- Peter

--
Hi! I'm a .signature *virus*!
Copy me into your ~/.signature to help me spread!



Erling Sørensen (29-10-2007)
Kommentar
Fra : Erling Sørensen


Dato : 29-10-07 02:01


"Peter Lykkegaard" <plykkegaard@gmail.com> skrev i en meddelelse
news:4722da4e$0$15873$edfadb0f@dtext01.news.tele.dk...

> http://www.asp101.com/articles/marcus/concatenation/default.asp

Dette link er virkelig et besøg værd hvis man sammensætter 1000+ strenge
Prøvede det af i et loop med ca 20 concattenationer og 4000 gennemløb i
live-miljø. (Små strenge)
Array metoden forkortede loadtiden fra 25-30 sekunder til bare 3 sekunder.

Tak for linket, Peter

/Erling



Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31962
Nyheder : 719565
Indlæg : 6408174
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste