Avatar billede madeindk Nybegynder
26. februar 2005 - 16:53 Der er 28 kommentarer og
1 løsning

Ændring i database?

Hej Eksperter.
Fra da jeg startet har jeg sat min database op så den kom med ID der kunne ligne {E17FC3B1-BFE1-460F-8FB0-E4EB56BE1B48} sådan noget her, og det er jeg ikke helt tilfreds med, ville gerne ha så mine ID kom til at hedde 1, 2, 3 efter hvor mange der er oprettet. Det skal lige siges jeg kører Access database.

Jeg har nu sat den til under ID at nye værdier skulle være stigende og så når jeg prøver at logge ind siger den:

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

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

/medlemmer/visprofil.asp, line 32

Og min linie 32:

30: Set rs = Server.CreateObject("ADODB.Recordset")
31: Addera = "SELECT * FROM anv where id='"&request.querystring("id")&"'"
32: rs.Open Addera, Connect, 3, 3
Avatar billede hmortensen Nybegynder
26. februar 2005 - 17:00 #1
Tror du skal parse til int først:
Int(Request.Querystring("id"))
Avatar billede madeindk Nybegynder
26. februar 2005 - 17:02 #2
if request.querystring("id")&""<>"" then
Set rs = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM anv where id='"&Int(Request.Querystring("id"))&"'"
rs.Open Addera, Connect, 3, 3

Sådan her?
Avatar billede eagleeye Praktikant
26. februar 2005 - 17:07 #3
Der skal ikke ' omkring hvis ID er en tal eller autonummer kolonne så prøv:

Addera = "SELECT * FROM anv where id=" & Request.Querystring("id")
Avatar billede madeindk Nybegynder
26. februar 2005 - 17:20 #4
Det virker, tak :)

Eagleeye: Er du ekspert i MySQL databaser?
Avatar billede eagleeye Praktikant
26. februar 2005 - 18:15 #5
Jeg kender lidt til mysql, det kommer lidt an på hvad det er omkring.
Avatar billede madeindk Nybegynder
26. februar 2005 - 18:23 #6
Ok :)

' Tjek om brugeren er på filter
Set RecSet = Server.CreateObject("ADODB.Recordset")

Addera = "SELECT * FROM filter where brugerid=" & Request.Querystring("id")
RecSet.Open Addera, Connect, 3, 3

Og der kommer den med:
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.
Avatar billede eagleeye Praktikant
26. februar 2005 - 18:28 #7
Er det ikke access du bruger?

Hvilken type (teskt eller tal) kolonne er brugerid i tabellen?
Avatar billede madeindk Nybegynder
26. februar 2005 - 18:29 #8
Jo jeg bruger Access.
I bruger ID i tabellen filter, eller?
Avatar billede eagleeye Praktikant
26. februar 2005 - 18:32 #9
i tabellen filter
Avatar billede madeindk Nybegynder
26. februar 2005 - 18:37 #10
ID = Autonummerering

og resten tekst felter :)
Avatar billede eagleeye Praktikant
26. februar 2005 - 18:39 #11
ok, prøv at ændre din SQL sætning til dette:

Addera = "SELECT * FROM [filter] where brugerid=" & Request.Querystring("id")
Avatar billede madeindk Nybegynder
26. februar 2005 - 19:44 #12
Den siger det samme :(
Avatar billede eagleeye Praktikant
26. februar 2005 - 19:47 #13
Hvad står der så i Request.Querystring("id")?

Prøv evt. at udksrive SQL sætningen og copy/paste den ind her:

Addera = "SELECT * FROM filter where brugerid=" & Request.Querystring("id")
response.write Addera
response.end
RecSet.Open Addera, Connect, 3, 3
Avatar billede madeindk Nybegynder
26. februar 2005 - 19:51 #14
Det er modtager ID'et.
Den bruger's gæstebog man vil skrive i.
Den tjekker om brugeren er på modtagerens filter.
Avatar billede eagleeye Praktikant
26. februar 2005 - 19:58 #15
Arh jeg overså anden linje i det du skrev 26/02-2005 18:37:25 der står jo alle andre kolonner er teskt så SQL sætninge skal se sådan her ud:


Addera = "SELECT * FROM filter where brugerid='" & Request.Querystring("id") & "'"
Avatar billede madeindk Nybegynder
26. februar 2005 - 20:01 #16
Det virker nu, tak.
Jeg tror det er noget rigtig lort jeg har fået lavet her. :S

Jeg har også en slet funktion som kun kommer frem i brugerens gæstebog hvis gæstebogens ID = session("id") , men nu kommer den slet ikke frem.

<% if request.querystring("id") = session("id") then %>
Avatar billede madeindk Nybegynder
26. februar 2005 - 20:02 #17
Og når jeg kalder Session("id")'et har den det rigtige ID og det hele.
Avatar billede eagleeye Praktikant
26. februar 2005 - 20:03 #18
Prøv at sætte cstr omkring så de to variabler opfattes som ens typer:


<% if Cstr(request.querystring("id")) = Cstr(session("id")) then %>
Avatar billede madeindk Nybegynder
26. februar 2005 - 20:14 #19
Det virker også :)
Det bliver jo faktisk godt det her.

Jeg har en upload funktion, som ser sådan her ud.

file.SaveAs "C:\Inetpub\data01\profilbilleder\" & session("id") & ".jpg"

filnavn = "http://data01.sykonia.dk/profilbilleder/" & session("id") & ".jpg"

SQL = "UPDATE anv SET bild = '" & filnavn & "' WHERE ID  = '" & Session("id")'"'

Så siger den det her :(

[Microsoft][ODBC Microsoft Access Driver] Syntax error in string in query expression 'ID = '2'.

/medlemmer/rediger/profilbillede/upload.asp, line 60
Avatar billede eagleeye Praktikant
26. februar 2005 - 20:18 #20
Der er kolonne ID et tal så skal der ikke ' omkring. Hvis det kolonnen er af typen tekst /notat skal der ' omkring, er det tal/autonummer skal der ikke tal omkring.
Så prøv sådan her:

SQL = "UPDATE anv SET bild = '" & filnavn & "' WHERE ID  = " & Session("id")
Avatar billede madeindk Nybegynder
26. februar 2005 - 20:19 #21
Hold da fest, du kan bare det med ASP.
Og det kan jeg også snart :)

1000 tak :)
Avatar billede madeindk Nybegynder
26. februar 2005 - 20:46 #22
Eagleeye: Har smidt point til dig og endnu en gang tak for de mange gode svar :)
Avatar billede madeindk Nybegynder
26. februar 2005 - 21:12 #23
' Tjek om brugeren er på filter
Set RecSet = Server.CreateObject("ADODB.Recordset")

Addera = "SELECT * FROM filter where brugerid='"&request.querystring("id")&"'"
RecSet.Open Addera, Connect, 3, 3

Do Until RecSet.EOF

If RecSet("filterid") = Session("id") Then

RecSet.Close
Response.redirect "/medlemmer/filter/ikkeok.asp?mode=paafilter"

End If
RecSet.MoveNext
Loop
RecSet.Close

Nu virker mit filter ikke alligevel, den stopper ikke hvis brugeren er på filter :S
Avatar billede eagleeye Praktikant
26. februar 2005 - 21:17 #24
Hvad indeholder de to kolonner brugerid og filterid ?

og hvad indeholder request.querystring("id")

Session("id") er vel den bruger som er logget ind.
Avatar billede madeindk Nybegynder
26. februar 2005 - 21:20 #25
Request.Querystring er brugeren der ejer filteret + Gæstebogen.
Session("ID") er brugeren der skriver i gæstebogen.
FilterID er brugeren der er på filteret.
Avatar billede madeindk Nybegynder
26. februar 2005 - 21:20 #26
Request.Querystring + Brugerid er brugeren der ejer filteret + Gæstebogen
Avatar billede eagleeye Praktikant
26. februar 2005 - 21:24 #27
ok så skulle det umiddelbart virke. Du kan prøve at rette if sætningen til dette:

If Cstr(RecSet("filterid")) = Cstr(Session("id")) Then
Avatar billede eagleeye Praktikant
26. februar 2005 - 21:26 #28
alternativ kan du bygge det samme i en SQL sætning og tjekke på om recordset er indeholder poster. Hvis det indeholder poster er brugeren på filter:

Addera = "SELECT * FROM filter where brugerid='"&request.querystring("id")&"' and filterid = '" & Session("id") & "'"
RecSet.Open Addera, Connect, 3, 3

if not RecSet.EOF then
  RecSet.Close
  Response.redirect "/medlemmer/filter/ikkeok.asp?mode=paafilter"
end if
Avatar billede madeindk Nybegynder
26. februar 2005 - 21:36 #29
Det virker søreme også :)
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