Avatar billede steen_hansen Forsker
19. marts 2006 - 15:55 Der er 14 kommentarer og
1 løsning

Tekststreng ASP/MySQL

Jeg hiver nogle data fra MySQL-database (tekststrenge), og de har flg. værdier:

userID
username
name
created
lastseen

Disse værdier skal bruges til udtræk:

vView = newRS("chooseview")

SQL = "SELECT ....  FROM backendusersitg ORDER BY " & vView


Men jeg får flg. fejl:


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

[MySQL][ODBC 3.51 Driver][mysqld-4.0.18-nt]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1


Jeg laver et tjek:

DEBUG: SELECT ...........  FROM MinTabel ORDER BY

- og så kommer der ikke mere. Variablen er tilsyneladende tom. Hvordan skal SQL-sætningen se ud? & vView er tilsyneladende ikke korrekt.
Avatar billede busschou Praktikant
19. marts 2006 - 18:10 #1
hvis vView er tom, ja så er det jo fordi newRS("chooseview") tom eller gal
Så fejlen må være i det udtræk der giver dig newRS
Avatar billede steen_hansen Forsker
19. marts 2006 - 20:40 #2
Hej busschou

Jeg har arbejdet lidt på det, og nu ser mit udtræk således ud:

<%

    Dim newRS, vViews, vView, vOrder
    newSQL = "SELECT chooseview, xChooseorder FROM backendusersitg"
    newRS = Conn.Execute(newSQL)

    vViews = newRS("chooseview")
    If vViews = 1 Then
        vView = "userID"
    ElseIf vViews = 2 Then
        vView = "username"
    ElseIf vViews = 3 Then
        vView = "name"
    ElseIf vViews = 4 Then
        vView = "created"
    ElseIf vViews = 5 Then
        vView = "lastseen"
    End If

    vOrder = newRS("xChooseorder")

%>

.................

<%
Dim RS
SQL = "SELECT chooseview, xChooseorder FROM MinTabel ORDER BY " & vView
Set RS = Conn.Execute(SQL)

qChooseview = RS("chooseview")
qChooseorder = RS("xChooseorder")
%>

For at teste det, har jeg lagt en ekstra linie ind:

SQL = "SELECT chooseview, xChooseorder FROM MinTabel ORDER BY " & vView
Response.Write "DEBUG: " & SQL & "<br>"
Set RS = Conn.Execute(SQL)

Og så ser det således ud:

DEBUG: SELECT ...... chooseview, xChooseorder FROM MinTabel ORDER BY

[MySQL][ODBC 3.51 Driver][mysqld-4.0.18-nt]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Linie 59: Set RS = Conn.Execute(SQL)
Avatar billede steen_hansen Forsker
19. marts 2006 - 20:42 #3
PS: newRS("chooseview") er ikke tom, den indeholder en værdi. Det er nok måden jeg dimensionerer på, eller også kan jeg ikke benytte

ORDER BY " & vView

af en eller anden årsag.
Avatar billede busschou Praktikant
19. marts 2006 - 22:01 #4
Er du sikker på den ikke er tom? Du skriver jo din sql ud hvor den tilsyneladende er tom
Prøv lige debugge her:
---
..
vViews = newRS("chooseview")
response.write "vViews = " & vViews
If vViews = 1 Then
        vView = "userID"
..
---
Avatar billede steen_hansen Forsker
19. marts 2006 - 23:08 #5
Jo, nu er den selvfølgelig tom, fordi jeg har tømt DB'en, ville starte forfra på en frisk.

Skal der noget IF *.EOF Then ind? Jeg vil mene, at der er taget højde for, at der ikke er noget i DB i min select-box:

<select size="1" name="chooseview" class="input1">
    <option selected>Vælg</option><%'<-- Denne er valgt, medmindre qChooseview har en værdi? %>
    <option value="1"<% If qChooseview = 1 Then %> selected<% End If %>>ID</option>
    <option value="2"<% If qChooseview = 2 Then %> selected<% End If %>>Brugernavn</option>
    <option value="3"<% If qChooseview = 3 Then %> selected<% End If %>>Navn</option>
    <option value="4"<% If qChooseview = 4 Then %> selected<% End If %>>Oprettet</option>
    <option value="5"<% If qChooseview = 5 Then %> selected<% End If %>>Sidst set</option>
</select>
Avatar billede busschou Praktikant
20. marts 2006 - 06:01 #6
tja, kan ikke lige se hvor du har den select box men du kan vel bare klare det ved
----
if vView = "" then
  SQL = "SELECT chooseview, xChooseorder FROM MinTabel"
else
  SQL = "SELECT chooseview, xChooseorder FROM MinTabel ORDER BY " & vView
end if
Avatar billede steen_hansen Forsker
20. marts 2006 - 06:20 #7
Det er fordi brugeren kan vælge hvad listen skal sorteres efter: Navn, brugernavn ... og om det skal være stigende eller faldende. Der er jo 2 selectbokse.
Avatar billede busschou Praktikant
20. marts 2006 - 06:29 #8
ahh ok, men har du så et tjek på at brugeren ikke lader være med at vælge noget?
Det nemmeste er nok bare at sige at hvis brugeren ikke har valgt noget så sorteres der på fx brugernavn
Avatar billede steen_hansen Forsker
20. marts 2006 - 06:38 #9
Ok, det mente jeg denne gjorde:

<option selected>Vælg</option><%'<-- Denne er valgt, medmindre qChooseview har en værdi? %>

Jeg bliver nødt til at smutte på arbejde. Snakkes forhåbentlig ved i eftermiddag/aften? :o)
Avatar billede busschou Praktikant
20. marts 2006 - 07:01 #10
Jep, men den "option" har ingen "value", så når du gemmer oplysningen i databasen bliver den tom
Du kunne jo så vælge at gøre sådan her fx
<option value="2" selected>Vælg</option>
Hvis der intet vælges, ja så vælges så brugernavn

Jeg skal selv afsted, god arbejdslyst :o)
Avatar billede steen_hansen Forsker
20. marts 2006 - 16:11 #11
Der vil (skal) så bare stå "Vælg", når brugeren kommer ind på siden første gang, indtil første gang der foretages et valg.

Næste gang brugeren kommer ind på siden, vil værdien hives fra DB, og her vil brugerens valg så stå i select-boksen.

Jeg prøver at undgå cookies, da de har det med at blive slettet eller beskadiget, eller også accepteres cookies ikke f brugerens browser. På denne måde omgår man alt det bøvl det kan give :o)

Ok, idet jeg har skrevet dette her, forstår jeg hvad du mener. Jeg tror jeg sætter value="1", så det er userID, der bliver listet pr. default. Tak for hintet :o)

Men der er stadig det oprindelige problem, som jeg håber du kan hjælpe med senere :o)
Avatar billede steen_hansen Forsker
21. marts 2006 - 00:34 #12
busschou, jeg oprettede dette spørgsmål, fordi det gav den tomme tekstreng. Men eagleeye løste det egentlige problem, så dette er overflødigt.

Kan du ikke lægge et svar? Du er som altid behjælpelig, og det er jeg utrolig glad for :o)
Avatar billede steen_hansen Forsker
05. april 2006 - 22:07 #13
busschou, det ender som regel altid med, at jeg selv tager pointene igen, fordi du ikke svarer, og det er ved at blive til en dårlig vane :o)

Kan du ikke lægge et svar?
Avatar billede busschou Praktikant
05. april 2006 - 23:58 #14
Det kan vi da ikke have...så her kommer et svar :o)
Avatar billede steen_hansen Forsker
06. april 2006 - 07:48 #15
Tak for din indsats. Kammerat :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester