Just nu i M3-nätverket
Jump to content

Vad gör jag för fel ?


Apnorix

Recommended Posts

Kan någon läsa vad jag har missat?

 

:

 

<%

if Session("userok") <> "1" then

response.redirect "default.asp?fel=ja"

end if

 

%>

 

<html>

<head>

<title>GM Direktkommunikation - PPR</title>

</head>

<body>

 

 

<%

 

Set MinCon = Server.CreateObject ("ADODB.Connection")

Set rs = Server.CreateObject ("ADODB.Recordset")

 

MinCon.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("..\..\_private\personuppgift.mdb")&";"

 

 

 

SQL = "SELECT * from person anstnr='" & Request.Form("anstnr")(kontroll) & "'"

rs.Open SQL, MinCon, 1, 2

if rs.EOF then

rs.close

 

 

SQL = "SELECT * from person where 1=2"

rs.Open SQL, MinCon, 1, 2

 

rs.AddNew

rs("anstnr") = Request.Form("anstnr")

rs("enhet") = Session("enhet")

rs("pass") = Request.Form("pass")

rs("fornamn") = Request.Form("fornamn")

rs("efternamn") = Request.Form("efternamn")

rs("epost") = Request.Form("epost")

rs("mobil") = Request.Form("mobil")

rs("aktiv") = Request.Form("aktiv")

 

 

 

 

 

rs.Update

rs.Close

response.redirekt "main.asp"

end if

 

 

else

 

rs.Close

 

 

response.redirect "person.asp"

end if

 

 

%>

</body>

</html>

 

/Markus

 

Link to comment
Share on other sites

vad får du för fel?

 

SQL = "SELECT * from person where 1=2" 

ser konstigt ut. Har du en kolumn som heter 1 ?

 

Link to comment
Share on other sites

Nej.

 

 

Man skriver:

SQL = "SELECT * from person where 1=2"

 

När man vill öppna alla fält i ingen post.

 

 

 

 

Link to comment
Share on other sites

Till denns sida skickar jag ett antal variabler:

anstnr, enhet, pass, mobil, status, email, mobil, fornamn, efternamn.

 

Dessa skall skrivas in i databasen med villkoret att anställningsnummret inte redan finns.

 

Där av min första sql-öppning, med villkoret:

 

SQL = "SELECT * from person anstnr='" & Request.Form("anstnr")(kontroll) & "'"

 

och om det inte finns mao EOF så skall han gå vidare och öppna alla fält i ingen post för att registrera en ny post annas inte.

 

Link to comment
Share on other sites

Varför gör du så?

Jag brukar bara göra en "Select * From person" för att öppna recordsetet.

 

Du får ju en ny post med rs.Addnew

 

/Mikke

----------------------------------------------

- Vah! Denuone Latine loquebar? Me ineptum. Interdum modo elabitur.

(Hoppsan! Pratade jag latin nu igen? Tokigt. Ibland så bara slinker det ur mig.)

 

Link to comment
Share on other sites

Bara vad jag lärt mig... Boken "ASP av Erik Ronne".

 

... men det fungerar ändå inte, jag prövade med vad du skrev.

 

Jag får följande meddelande:

Sidan kan inte visas

Ett problem uppstod med sidan du försöker nå och den kan inte visas.

 

--------------------------------------------------------------------------------

 

Försök med något av följande:

 

Öppna startsidan för www.gm-direktkom.com och sök efter länkar till den information du vill ha.

Klicka på knappen Uppdatera eller försök igen senare.

 

Klicka på Sök om du vill leta efter information på Internet.

Du kan även se en lista över relaterade platser.

 

 

 

 

HTTP 500 - Internt serverfel

Internet Explorer

 

 

----- Den känner vi alla igen :-)

 

/Markus

 

Link to comment
Share on other sites

Du kan inte köra Response.Redirect efter att ha skickat HTML till klienten. Eftersom du kör Response.Redirect till olika sidor beroende på vad som händer så verkar HTML-en helt onödig på denna sida.

 

Bättre sätt att lägga in data är att köra en INSERT-sats.

 

Request.Form("anstnr")(kontroll) ser konstigt ut, jag tror det ska vara bara Request.Form("anstnr").

 

<%
if Session("userok") <> "1" then
response.redirect "default.asp?fel=ja"
end if
Set MinCon = Server.CreateObject ("ADODB.Connection")
Set rs = Server.CreateObject ("ADODB.Recordset")

MinCon.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("..\..\_private\personuppgift.mdb")&";"

SQL = "SELECT * from person anstnr='" & Request.Form("anstnr") & "'" 
rs.Open SQL, MinCon, 1, 2
If rs.EOF Then
rs.Close
MinCon.Close
Response.Redirect("person.asp")
Else
rs.Close
SQL = "INSERT INTO person(anstnr, enhet, pass, fornamn, efternamn, epost, mobil, aktiv) VALUES('" & Request.Form("anstnr") & "', '" & Session("enhet") & "', '" & [...] & "');"
MinCon.Execute(SQL)
MinCon.Close
Response.Redirect("main.asp")
End If
%>

 

mvh

Olle

 

Link to comment
Share on other sites

Hej igen och tack för din hjälp.

 

Dessvärre så fungerade inte din kod heller.

 

"internt serverfel"

 

- Kan det vara att vi inte stänger databasen ordentligt?

 

/Markus

 

Link to comment
Share on other sites

Min kod går inte att Copy-Pastea rakt av...

 

Slå på att visa riktiga felmeddelanden i IIS:en och Internet Explorer så du får reda på vilket fel som uppstått och på vilken rad.

 

mvh

Olle

 

EDIT: du bör kommentera bort Response.Redirect-raderna så att du stannar kvar på sidan för att lättare kunna felsöka.

[inlägget ändrat 2003-08-11 14:41:27 av Olle Nyrén]

Link to comment
Share on other sites

Hittar dessvärre inget som säger IIS där, men... Normalt så får jag fram felmeddelanden om vilken rad det är fel på, men inte i detta fallet.

 

- Förmodligen är det ett skit fel !! :-(

 

Suttit med det här nu i 4 timmar !!!!!!! - Börjar bli smått förbannad

 

Du vet hur det är !

 

 

/

 

Markus

 

Link to comment
Share on other sites

det heter inget med IIS heller. Det står något med "visa riktiga felmeddelanden" eller liknande. Har inte IE här just nu så jag kan inte kolla

 

Link to comment
Share on other sites

Verktyg -> Internetalternativ -> Fliken "Avancerat" -> Visa egna HTTP-felmeddelanden (långt ner på sidan, tredje från slutet i min svenska IE6)

 

Ciao,

Anders

 

Link to comment
Share on other sites

Den är redan för-bockad.

 

Det är ju inte mitt stora dilemma, dessvärre !

 

Jag får inte min kod att fungera !

 

- Är det du Nygren ?

 

Link to comment
Share on other sites

Nu ser min kod ut så här:

 

------------------

<%

if Session("userok") <> "1" then

response.redirect "default.asp?fel=ja"

end if

 

 

 

Set MinCon = Server.CreateObject ("ADODB.Connection")

Set rs = Server.CreateObject ("ADODB.Recordset")

 

MinCon.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("..\..\_private\personuppgift.mdb")&";"

 

 

 

SQL = "SELECT * from person anstnr='" & Request.Form("anstnr") & "'"

rs.Open SQL, MinCon, 1, 2

if rs.EOF then

rs.Close

 

SQL = "INSERT INTO person(anstnr,enhet,pass,fornamn,efternamn,epost,mobil) VALUES('" & Request.Form("anstnr") & "', '" & Session("enhet") & "','" & Request.Form("pass") & "','" & Request.Form("fornamn") & "','" & Request.Form("efternamn") & "','" & Request.Form("epost") & "','" & Request.Form("mobil") & "'"

MinCon.Execute(SQL)

MinCon.Close

Response.Redirect("main.asp")

 

Else

rs.close

MinCon.Close

Response.redirect("person.asp")

 

End if

 

 

%>

--------------------

 

Jag får felmeddelande att det är internt serverfel !

 

Det är det inte ! andra sidor fungerar !

 

Tacksam för hjälp

 

 

/

 

Markus

 

Link to comment
Share on other sites

Den inställningen ovan ska INTE vara förbockad. Då får du se det "riktiga" felmeddelandet från servern, istället för bara "Internt serverfel".

 

Ciao,

Anders

 

Link to comment
Share on other sites

Magnus Gladh

Det är lättare om du skriver ut felmeddelandet.

 

- Magnus

-----------------------------------------------------

Ropen skalla, BBB (eller BOSTREAM) åt alla!!!

 

Link to comment
Share on other sites

Internet Explorer är default inställt på att visa "vänliga" felmeddelanden, du kan ändra dessa så här:

Tools/Internet Options/Advanced/Under Browsing bockar du ur Show Friendly HTTP Error.

Jag kör med engelska som du ser, men du luskar säkert ut det även om du kör med svensk version.

 

Då får du iaf upp lite mer detaljerat vad som är fel. Sedan kan du ju posta meddelande igen och säga vad som står.

 

Link to comment
Share on other sites

Nu har jag följande felmeddelande :

--------------------------

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

 

[Microsoft][ODBC Microsoft Access Driver] Syntax error in FROM clause.

 

/ppr/personnysp.asp, line 16

 

----------------------------

 

Det är följande mittersta rad:

 

--------------------------

SQL = "SELECT * from person anstnr='" & Request.Form("anstnr") & "'"

 

rs.Open SQL, MinCon, 1, 2

 

if rs.EOF then

_________________________-

 

 

Vad är det för fel på den ?

Jag tog med raden ovenför och under för man vet ju inte hur exploren räknar !

 

/Markus

 

 

Link to comment
Share on other sites

Tack för ditt inlägg.

 

Efter din justering får jag följande felmeddelande:

----------------------

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

 

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

 

/ppr/personnysp.asp, line 16

----------------------------------

 

Har det något att göra med att variabeln anstnr är tal ?

 

/Markus

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...