Avatar billede rejx Nybegynder
16. august 2005 - 17:14 Der er 34 kommentarer og
2 løsninger

simpel sql..

Hej, nu har jeg sidet og stiret mig blind på denne sætning lidt for længe, så poster den lige her...

Fejl:
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
/timecontrol/newday.asp, line 4

Kode:

ln1: set workdayopencontrol = Server.CreateObject("adodb.recordset")
ln2: workdayopencontrol.open "Select * from workday where workday_userid = " & Session("userid") & " AND workday_open = true", main
Avatar billede softspot Forsker
16. august 2005 - 17:18 #1
Er du sikker på at Session("userid") indeholder en værdi, for en tom Session("userid") vil ganske givet resultere i en fejl, da SQL ikke tillader en ikke numerisk værdi for numeriske felter...
Avatar billede nielle Nybegynder
16. august 2005 - 17:18 #2
Hvad er typen af felterne workday_userid og workday_open?
Avatar billede rejx Nybegynder
16. august 2005 - 17:19 #3
ln3: set workdayopencontrol = Server.CreateObject("adodb.recordset")
ln4: workdayopencontrol.open "Select * from workday where workday_userid = " & Session("userid") & " AND workday_open = true", main


Så passer det også ;)
Avatar billede rejx Nybegynder
16. august 2005 - 17:20 #4
softspot: Jeg er ret sikker på Session("userid") indeholder en værdi, da jeg tjekker om brugeren er logget ind hvergang siden loades

nielle: workdat_userid = tal workdat_open
Avatar billede rejx Nybegynder
16. august 2005 - 17:22 #5
for den da, det kører bare ikke idag... workday_open = ja/nej
Avatar billede softspot Forsker
16. august 2005 - 17:40 #6
Hvordan checker du om brugeren er logget ind?

Prøv alligevel at checke hvad der ligger i Session("userid").

En anden ting du kan prøve er at kontrollere stavemåden af dine felter kontra dem i din SQL og et ekstra check af om felttyperne matcher det du forventer.
Avatar billede rejx Nybegynder
16. august 2005 - 17:45 #7
softspot:
If Session("userid") = "" Then ...

ja, har tjekket felterne igennem, ved godt der er en del tastefejl i min indlæg, har lige fået nyt tastatur, tasterne sider ikke helt ens :) Men tjekker lige igen...
Avatar billede softspot Forsker
16. august 2005 - 17:49 #8
Hvad nu hvis Session("userid") er empty eller null eller nothing...?
Avatar billede softspot Forsker
16. august 2005 - 17:51 #9
Når jeg siger check hvad der ligger i session("userid") så kan det f.eks. gøres ved at skrive det ud med

response.write(session("userid"))

et eller andet sted på siden (jeg er klar over at du sikkert allerede ved det, men nu er jeg sikker på at du ved det ;)).
Avatar billede rejx Nybegynder
16. august 2005 - 17:52 #10
Fanger den ikke det med = "" ?

Enyway, der ligger en nummerværdi i.
Avatar billede softspot Forsker
16. august 2005 - 17:56 #11
Nej, = "" fanger kun strengværdier som er tomme (jeg går ud fra at du sorterer fra hvis session("userid") er tom, dvs.

if session("userid") = "" then
  ' så er brugeren IKKE logget på - derfor gør noget andet...
end if

og her vil en værdi af empty eller null osv. jo gå igennem og egentlig fungere som en bruger der er logget ind...
Avatar billede rejx Nybegynder
16. august 2005 - 17:58 #12
Okay, hvordan tjekker jeg så om den er null, empty eller nothing? så skal du nok få point for det om ikke andet :)
Avatar billede softspot Forsker
16. august 2005 - 18:08 #13
Jeg vil da gerne være med til at finde løsningen til det faktiske problem :)

Check for empty med

isEmpty(Session("userid"))

og for nothing med

Session("userid") is nothing

og for null med

isNull(Session("userid"))
Avatar billede softspot Forsker
16. august 2005 - 18:12 #14
Jeg ved godt det er træls at jeg spørger, men når du siger der ligger en numerisk værdi i session("userid") er det så fordi du har prøvet at udskrive den eller er det fordi du er overbevist om at der burde ligge en numerisk værdi i den...? :)
Avatar billede rejx Nybegynder
16. august 2005 - 18:14 #15
har udskrevet den.. og det blev et klingende 1 tal ;)
Avatar billede nielle Nybegynder
16. august 2005 - 18:17 #16
Når der er ged med databasen så skyldes det i 9 ud af 10 tilfælde at SQL'en indeholdt noget andet end man troede. Derfor er det altid en god ide - i en debug situation - at udskrive SQL'en før at man forsøger at udføre den:

SQL = "SELECT * FROM workday WHERE workday_userid = " & Session("userid") & " AND workday_open = true"
Respons.Write "DEBUG: " . $SQL . "<br>"
workdayopencontrol.open SQL, main
Avatar billede rejx Nybegynder
16. august 2005 - 18:17 #17
hmm, kan det have noget at gøre med jeg har et engelsk styrestytem og en dansk office pakke?
Avatar billede nielle Nybegynder
16. august 2005 - 18:18 #18
Selvfølgelig skulle det være med &-tegn:

Respons.Write "DEBUG: " & $SQL & "<br>"
Avatar billede nielle Nybegynder
16. august 2005 - 18:20 #19
Næppe lige i dette tilfælde - med mindre du altså skal skrive "ja" i stedet for "true". Men jeg tvivler.
Avatar billede softspot Forsker
16. august 2005 - 18:27 #20
nielle >> det er også det jeg har spottet og det eneste sted der bliver indsat noget variabelt er session("userid") - det er derfor jeg starter med at angribe den :)
Avatar billede rejx Nybegynder
16. august 2005 - 18:28 #21
hmm, nu har jeg sat det ind som følger: 

<!--#include file="includes/design_start.asp"-->
<%
set workdayopencontrol = Server.CreateObject("adodb.recordset")

SQL = "SELECT * FROM workday WHERE workday_userid = " & Session("userid") & " AND workday_open = true"
Response.Write "DEBUG: " & SQL & "<br>"
workdayopencontrol.open SQL, main
' workdayopencontrol.open "Select * from workday where workday_userid = " & Session("userid") & " AND workday_open = sand", main

If NOT (workdayopencontrol.EOF or workdayopencontrol.BOF) Then
    Response.Write "Du har en arbejdag åben, luk denne for at oprette en ny.<br>"
    Response.Write "Arbejdsdag der skal lukkes: <a href=closeworkday.asp?id=" & workdayopencontrol.Fields("workday_id") & ">" & workdayopencontrol.Fields("workday_date") & "</a>"
   
Else
    %>
    Opret ny arbejdsdag<br><br>

        <form action=includes/exec/newday.asp method=post ID="Form1">
        Dato for ny arbejdsdag: <input type=text class=form name=newdaydate value=<%= date %> size=10> <input type=submit value=opret class=form>
        </form>
    <%
End if

%>

<!--#include file="includes/design_end.asp"-->

og stadig samme fejl. burde den i det mindste ikke skrive sql'en ud før den skriver fejlen?
Avatar billede softspot Forsker
16. august 2005 - 18:29 #22
rejx >> hvis du laver en query direkte i databaseværktøjet med den SQL du bruger, kommer der så fejl eller kører den godt nok?
Avatar billede rejx Nybegynder
16. august 2005 - 18:30 #23
softspot: Har ikke haft problemmer med det endnu, så det formoder jeg :)
Avatar billede softspot Forsker
16. august 2005 - 18:32 #24
Prøv at skrive response.end umiddelbart efter response.write "DEBUG..."
Avatar billede rejx Nybegynder
16. august 2005 - 18:32 #25
DEBUG: SELECT * FROM workday WHERE workday_userid = 1 AND workday_open = true
Avatar billede softspot Forsker
16. august 2005 - 18:34 #26
men du har problemet nu, så jeg forsøger bare at få dig til at udelukke nogle muligheder for at komme nærmere en løsning... :)
Avatar billede rejx Nybegynder
16. august 2005 - 18:38 #27
jeps, det er også værdsat :)
Jeg kan ikke umidbart se nogen fejl på den SQL kode, der kommer ud af den debug... men det kan da godt være det bare er mig *G*
Avatar billede nielle Nybegynder
16. august 2005 - 18:38 #28
Jeg under mig ... hvis den ikke udskriver SQL'en før fejlbeskeden ... ja, så må det jo være et helt andet sted den fejler. Det ville da forresten også forklare at vi ikke kan finden nogen fejl i præcis denne her SELECT. Hvad har du ellers af SQL-sætninger?
Avatar billede rejx Nybegynder
16. august 2005 - 18:40 #29
Function getuserrealname(userid)

    Set str_Getuserrealname = Server.CreateObject ("ADODB.Recordset")
    str_Getuserrealname.Open "SELECT user_realname FROM users WHERE user_id =" & userid, mainconnection
    Getuserrealname = str_Getuserrealname.FIELDS("user_realname")
   
End Function

Er det eneste SQL der er på siden, men den kører godt nok på alle andre sider, den ligger i include filen design_start.asp
Avatar billede rejx Nybegynder
16. august 2005 - 18:42 #30
Se nu bare der... mainconnection... det bliver aldrig godt at cut'n paste en masse sammen :/
Avatar billede rejx Nybegynder
16. august 2005 - 18:42 #31
smid lige et svar begge 2, så får i 15 hver...
Avatar billede softspot Forsker
16. august 2005 - 18:48 #32
Så får du lige et der... :)
Avatar billede nielle Nybegynder
16. august 2005 - 18:48 #33
... og her :^)
Avatar billede rejx Nybegynder
16. august 2005 - 18:49 #34
takker for hjælpen... ;)
Avatar billede softspot Forsker
16. august 2005 - 21:25 #35
takker for point :)
Avatar billede nielle Nybegynder
16. august 2005 - 21:32 #36
:^)
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