/ 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
SQL Update - lægge tal til, virker ikke
Fra : Jakob Munck


Dato : 17-04-04 14:24

Jeg skal lægge et tal fra en vartiabel til et tal, som står i et tal-felt i
en Access-db, og det giver problemer. Den første af disse SQL-sætninger
virker fint, når jeg lægger 2 til variablen "formue_noder". Men når jeg
erstatter tallet 2 med en variabel ("cd_vaerdi"), så får jeg en fejlmelding.

' virker god:
SQL = "UPDATE tbMedlemmer SET formue_noder = formue_noder + 2 WHERE
medlem_id = " & session("medlem_id")
Conn.execute(SQL)


' virker ikke:
SQL = "UPDATE tbMedlemmer SET formue_noder = formue_noder + cd_vaerdi WHERE
medlem_id = " & session("medlem_id")
Conn.execute(SQL)


Fejlmeldingen siger "Too few parameters. Expected 1".

Min SQL-kode i det andet eks. er altså forkert, men jeg kan ikke finde
fejlen. Kan nogen give mig et tip?

v.h.
Jakob Munck



 
 
Jesper Stocholm (17-04-2004)
Kommentar
Fra : Jesper Stocholm


Dato : 17-04-04 14:40

"Jakob Munck" <j.munck.fjernmig@c.dk> wrote in
news:40812fc8$0$255$edfadb0f@dread11.news.tele.dk:

> Jeg skal lægge et tal fra en vartiabel til et tal, som står i et
> tal-felt i en Access-db, og det giver problemer. Den første af disse
> SQL-sætninger virker fint, når jeg lægger 2 til variablen
> "formue_noder". Men når jeg erstatter tallet 2 med en variabel
> ("cd_vaerdi"), så får jeg en fejlmelding.
>
> ' virker god:
> SQL = "UPDATE tbMedlemmer SET formue_noder = formue_noder + 2 WHERE
> medlem_id = " & session("medlem_id")
> Conn.execute(SQL)
>
>
> ' virker ikke:
> SQL = "UPDATE tbMedlemmer SET formue_noder = formue_noder + cd_vaerdi
> WHERE medlem_id = " & session("medlem_id")
> Conn.execute(SQL)

Prøv at udskrive din SQL-sætning, så jeg jeg sikker på, at du kan se, hvor
fejlen ligger.

Se evt http://asp-faq.dk/article?id=41



--
Jesper Stocholm http://stocholm.dk

Programmer's code comment:
//It probably makes more sense when you're stoned.

Jakob Munck (17-04-2004)
Kommentar
Fra : Jakob Munck


Dato : 17-04-04 16:34

Jesper Stocholm wrote:
> Prøv at udskrive din SQL-sætning, så jeg jeg sikker på, at du kan se,
> hvor fejlen ligger.
>

Her er udskriften:

UPDATE tbMedlemmer SET formue_noder = formue_noder - cd_vaerdi WHERE
medlem_id = 157

Men den gør mig ikke meget klogere!


v.h.
Jakob Munck



Jesper Stocholm (17-04-2004)
Kommentar
Fra : Jesper Stocholm


Dato : 17-04-04 19:11

Jakob Munck wrote :

> Jesper Stocholm wrote:
>> Prøv at udskrive din SQL-sætning, så jeg jeg sikker på, at du kan se,
>> hvor fejlen ligger.
>>
>
> Her er udskriften:
>
> UPDATE tbMedlemmer SET formue_noder = formue_noder - cd_vaerdi WHERE
> medlem_id = 157

Ovenstående sendes jo til din database, så den kan ikke vide, hvad din
kode ellers gør. Med andre ord ved den ikke, hvad "cv_vaerdi" er - den
forventer derimod et tal. Det er ganske som den del af strengen, hvor
Session("medlemid") sættes på strengen og ender i databasen som 157.

Eksempelkode:

dim sql, vaerdi
vaerdi = 100
sql = "SELECT * FROM Table1 WHERE Felt1 = vaerdi"

Den streng din database modtager er i dette tilfælde

SELECT * FROM Table1 WHERE Felt1 = vaerdi

sql = = "SELECT * FROM Table1 WHERE Felt1 = " & vaerdi

Den streng din database modtager er nu

SELECT * FROM Table1 WHERE Felt1 = 100


Kan du se mønstret?

--
Jesper Stocholm
http://stocholm.dk
Linux advocacy how-to:
http://www.datasync.com/~rogerspl/Advocacy-HOWTO-5.html

Jakob Munck (17-04-2004)
Kommentar
Fra : Jakob Munck


Dato : 17-04-04 19:46

Jesper Stocholm wrote:
> Ovenstående sendes jo til din database, så den kan ikke vide, hvad din
> kode ellers gør. Med andre ord ved den ikke, hvad "cv_vaerdi" er - den
> forventer derimod et tal. Det er ganske som den del af strengen, hvor
> Session("medlemid") sættes på strengen og ender i databasen som 157.
>
> Eksempelkode:
>
> dim sql, vaerdi
> vaerdi = 100
> sql = "SELECT * FROM Table1 WHERE Felt1 = vaerdi"
>
> Den streng din database modtager er i dette tilfælde
>
> SELECT * FROM Table1 WHERE Felt1 = vaerdi
>
> sql = = "SELECT * FROM Table1 WHERE Felt1 = " & vaerdi
>
> Den streng din database modtager er nu
>
> SELECT * FROM Table1 WHERE Felt1 = 100
>
>
> Kan du se mønstret?


Nej, jeg forstår ikke hvad du mener. Variablen "cd_vaerdi" er defineret
umiddelbart før den viste SQL-sætning, og jeg har forsøgt at udskrive den,
hvilket gik godt. Den eksisterer altså. Men hvorfor kan jeg så ikke erstatte
et fast tal (f.eks. 2) med denne variabel og få SQL til at lave denne
udregning og Update databasens talfelt med det nye tal?

v.h.
Jakob



Jesper Stocholm (17-04-2004)
Kommentar
Fra : Jesper Stocholm


Dato : 17-04-04 22:06

Jakob Munck wrote :

> Jesper Stocholm wrote:

>> Eksempelkode:
>>
>> dim sql, vaerdi
>> vaerdi = 100
>> sql = "SELECT * FROM Table1 WHERE Felt1 = vaerdi"
>>
>> Den streng din database modtager er i dette tilfælde
>>
>> SELECT * FROM Table1 WHERE Felt1 = vaerdi
>> sql = = "SELECT * FROM Table1 WHERE Felt1 = " & vaerdi
-------^
Der kom et '=' for meget med.

>> Den streng din database modtager er nu
>> SELECT * FROM Table1 WHERE Felt1 = 100
>>
>> Kan du se mønstret?
>
>
> Nej, jeg forstår ikke hvad du mener. Variablen "cd_vaerdi" er
> defineret umiddelbart før den viste SQL-sætning, og jeg har forsøgt at
> udskrive den, hvilket gik godt. Den eksisterer altså. Men hvorfor kan
> jeg så ikke erstatte et fast tal (f.eks. 2) med denne variabel og få
> SQL til at lave denne udregning og Update databasens talfelt med det
> nye tal?

Synes du ikke, at det er mærkeligt, at denne værdi så ikke kommer med i
din SQL-sætning?

Din måde:

SQL = "SELECT * FROM Table1 WHERE medlem = cd_vaerdi"

Den rigtige måde:

SQL = "SELECT * FROM Table1 WHERE medlem = " & cd_vaerdi
-----------------------------------------^^^
Det er her magien foregår

Din variabel SQL sættes altså sammen af to dele. Den ene del er:

"SELECT * FROM Table1 WHERE medlem = "

Den anden del er _værdien_ af din variabel cd_vaerdi

--
Jesper Stocholm
http://stocholm.dk
Linux advocacy how-to:
http://www.datasync.com/~rogerspl/Advocacy-HOWTO-5.html

Jakob Munck (19-04-2004)
Kommentar
Fra : Jakob Munck


Dato : 19-04-04 16:36

>
> Den rigtige måde:
>
> SQL = "SELECT * FROM Table1 WHERE medlem = " & cd_vaerdi
> -----------------------------------------^^^
> Det er her magien foregår
>


OK, det forstår jeg. Tak for hjælpen.

v.h.
Jakob



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

Månedens bedste
Årets bedste
Sidste års bedste