Avatar billede mikemclarry Nybegynder
22. marts 2002 - 15:11 Der er 18 kommentarer og
1 løsning

If Err then ... det hele = fuck up

Hejsa
Jeg har en side som opretter nye medlemmer. Det virker Ok, men hvis løkken som tjekker for error bliver aktiveret så stopper den aldrig. Løkken bliver aktuel hvis fejlen "file already in use" kommer, derfor forsøger den så at hente siden igen, så når filen er ledig kan den skrive til den. Men som sagt køre denne løkke bare én gang så bliver filen ved med at være "already in use". Hvorfor????
---------------------------------------------
<!-- #include file="Forbindelse.asp"-->
<%
'-----------------------------
'tjekker om der er en fejl
'-----------------------------

If Err Then
n=0
do
n = n+1
loop until n=15000
end if

'------------------------------
'Når n=15000, siden forsøger igen
'-----------------------------

if n=15000 then
n=0
response.redirect "opretbruger.asp"
end if

'------------------------------
'Tjekker om brugernavnet er brugt, hvis recorden ikke er tom retunerer siden til brugernavn optaget
'-----------------------------

strSQL = "Select * From users where brugernavn = '" & Request.form("brugernavn") & "'"
Set rs = Conn.Execute(strSQL)

If Not (rs.BOF Or rs.EOF) Then
Conn.Close
set Conn = Nothing
response.redirect "default.asp?submode=optaget"
end if

'------------------------------
'Er intet af ovenstående tilfældet, så oprettes posten
'-----------------------------

Const adOpenKeyset = 1
Const adLockOptimistic = 3

    Set rs = Server.CreateObject("ADODB.recordset")
    strSQL = "Select * From users "
    rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
   
randomize
n=int(10000000*rnd)

      rs.AddNew
      rs("brugernavn") = Request.form("brugernavn")
      rs("password") = Request.form("adgangskode")
      rs("autologon") = Request.form("autolog")
      rs("alder") = Request.form("alder")
      rs("koen") = Request.form("koen")
      rs("fornavn") = Request.form("fornavn")
      rs("efternavn") = Request.form("efternavn")
      rs("adresse1") = Request.form("adresse")
      rs("adresse2") = Request.form("adresse2")
      rs("postnummer") = Request.form("postnummer")
      rs("by") = Request.form("by")
      rs("email") = Request.form("email")
      rs("nyhedsbrev") = Request.form("nyhedsbrev")
      rs("hoert") = Request.form("hoert")
      rs("handler") = Request.form("handler")
      rs("status") = n
      rs.Update

    rs.Close
    Set rs = Nothing
   
Conn.Close
set Conn = Nothing

response.redirect "default.asp?submode=ok"%>
Avatar billede zeth Nybegynder
22. marts 2002 - 15:24 #1
Kan du ikke bare

If Err.Number <> 0 Then
Response.Write("Fejl")
End if
Avatar billede zeth Nybegynder
22. marts 2002 - 15:24 #2
og du kan få beskrivelsen af fejlen ved at bruge Err.Description ...
Avatar billede mikemclarry Nybegynder
22. marts 2002 - 15:34 #3
jo det kunne jeg godt, men det er ikke rigtig det der er problemet, løkken kører fint, men problemet er at db'en aldrig bliver ledig hvis den kører. Det skulle jo gerne være sådan at hvis 2 nu tilmelder sig på samme tid, skulle den ene blive sat i vente position indtil db'en er ledig, men den bliver som sagt aldrig ledig...
Avatar billede mikemclarry Nybegynder
22. marts 2002 - 15:57 #4
Den går over til denne fejlmeddelse.
-------------------------------
Provider error '80004005'

Unspecified error

/Ny_Bruger/Forbindelse.asp, line 4
-----------------------------------
Når man forsøger at åbne den efter felen "aldeady in use"
Avatar billede mikemclarry Nybegynder
22. marts 2002 - 15:58 #5
line 4
er der hvor dan åbner db'en
Avatar billede burningice Nybegynder
22. marts 2002 - 15:58 #6
hmm... du skal vel kalde
Conn.Close
set Conn = Nothing
inden du begynder på løkken... altså


If Err Then
  Conn.Close
  set Conn = Nothing
 
  n=0
 
  do
    n = n+1
  loop until n=15000
end if
Avatar billede mikemclarry Nybegynder
22. marts 2002 - 16:06 #7
Det har jeg forsøgt nu ser det sådan her ud:
-------------------------
<% @language = VBScript %>

<% response.buffer = true %>
<!-- #include file="Forbindelse.asp"-->
<%
'-----------------------------
'tjekker om der er en fejl
'-----------------------------

If Err.Number <> 0 Then
Conn.Close
set Conn = Nothing
n=0
do
n = n+1
loop until n=15000
End if

'------------------------------
'Når n=15000, siden forsøger igen
'-----------------------------

if n=15000 then
n=0
response.redirect "opretbruger.asp"
end if
---------------------------
Som du kan se har jeg også sat
-------------------------------
<% @language = VBScript %>
<% response.buffer = true %>
-------------------------------
ind, men filen bliver ved med at være optaget, og efter nogle min går den så over til denne fejl:
----------------------------
Provider error '80004005'

Unspecified error

/Ny_Bruger/Forbindelse.asp, line 4
---------------------------
Og jeg har sat On Error resume Next til, når jeg vil se om det kører.
Avatar billede mikemclarry Nybegynder
22. marts 2002 - 16:09 #8
Smider lige 30point mere i puljen...
Avatar billede burningice Nybegynder
22. marts 2002 - 16:22 #9
mikemclarry>> er det en acces db du bruger?? den kan jo rent faktisk godt klare at der er flere end en der bruger den, så jeg kan ikke lige se hvad du overhovedet skal bruge det til
Avatar billede mikemclarry Nybegynder
22. marts 2002 - 16:23 #10
Ja det er access med brugerne har både Read/Write på db'en så den ene bruger kan faktisk godt lukke for den anden i nogle få sekunder.
Avatar billede burningice Nybegynder
22. marts 2002 - 16:48 #11
prøv at læs den her artikkel... synes den dækker rimelig godt det som du er ved at lave http://www.microsoft.com/mind/defaulttop.asp?page=/mind/0599/basics/basics0599.htm&nav=/mind/0599/inthisissuecolumns0599.htm
Avatar billede mikemclarry Nybegynder
22. marts 2002 - 16:56 #12
Hold da kæft en artikkel, men jeg prøver lige at læse den og ser om det giver noget...
Avatar billede mikemclarry Nybegynder
22. marts 2002 - 18:01 #13
Det rækker mine ASP evner vist ikke til... Men tilgengæld har jeg fået løkken til at virke, nu forbliver db'en ikke åben, men nu er der så bare et andet problem... Den kan ikke huske "indholdet" så den opretter bare en tom post.
Er der nogen der ved hvorfor den opretter en tom post????
Avatar billede burningice Nybegynder
22. marts 2002 - 18:11 #14
det er fordi at når du udfører en response.redirect går din Form collection tabt :(
Avatar billede mikemclarry Nybegynder
22. marts 2002 - 18:35 #15
Okay er der en måde hvorpå man kun undgå dette?
Avatar billede burningice Nybegynder
22. marts 2002 - 18:50 #16
tjaa... du kan bruge get istedet for post... kræver at du ændrer alle de steder der står request.form til request.querystring
Avatar billede mikemclarry Nybegynder
22. marts 2002 - 18:52 #17
Jeg prøver lige...
Avatar billede mikemclarry Nybegynder
22. marts 2002 - 19:07 #18
>>>Cyberfessor
Det er fandeme noget der giver pladeguld på fordøren... Takker for din hjælp. Kan du ikke lige sende et "svar" ind så jeg kan give dig de 60 points?
Avatar billede burningice Nybegynder
22. marts 2002 - 19:11 #19
svar hermed sendt :] glad for at kunne hjælpe
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