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