Toon posts:

[ASP] Server.CreateObject("ADODB.Connection") vraag

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben met een ASP-scriptje bezig en heb het volgende probleem;

Ik heb in 2 ElseIf-statements staan dat er een Server.Transfer moet plaats vinden. Het is toch zo dat als een statement False is dat deze compleets overgeslagen wordt en naar de volgende gaat?

Ik kom er niet meer uit, zie door de bomen het bos niet meer!

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<html>
<body>
<%
If Session("GebruikersNaam") = "" Then
%>
  <strong>Voor deze functie dient u eerst in te loggen.</strong>
<%
  Server.Transfer("loginform.html")
Else
  Dim connect, rsChe

  Set connect = Server.CreateObject("ADODB.Connection")
  Call connect.Open ("DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.Mappath("/Secure/SuccosDB.mdb"),,16)

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

  Call rsChe.Open ("Select GebruikersNaam FROM tblArtikelen " & _
      "WHERE Artcode = " & Request.Querystring("id")  & "", connect)

    If Session("GebruikersNaam") = "testadmin" Then

    strSQL="DELETE FROM tblArtikelen WHERE ArtCode = " & Request.Querystring("id") & ""
    
    connect.Execute strSQL
    rsChe.close
    connect.close
    Server.Transfer("zoekform_artikel.asp")
    
    Elseif rsChe("GebruikersNaam") <> Session("GebruikersNaam") Then
%>
    <p>
        <strong>U heeft geen rechten dit artikel te verwijderen!</strong><br />
        <br />
        <a href="zoekform_artikel.asp" target="_self">&lt;&nbsp;&nbsp;terug naar categorie&euml;n</a><br />
        <a href="Default.asp" target="_self">&lt;&lt;&nbsp;terug naar hoofdmenu</a>
    </p>
<%
    rsChe.close
    connect.close
    
    Elseif rsChe("GebruikersNaam") = Session("GebruikersNaam") Then
    
    strSQL="DELETE FROM tblArtikelen WHERE ArtCode = " & Request.Querystring("id") & " AND " & _
    "Gebruikersnaam = '" & Session("GebruikersNaam") & "'"
    
    connect.Execute strSQL
    rsChe.close
    connect.close
    Server.Transfer("zoekform_artikel.asp")

    End If
    'rsChe.close
    'connect.close
End If

%>


Ik weet niet meer op welke regel ik nu de recordset en connection moet sluiten 8)7 8)7 (regel 52+53 ge'outcomment)

Of ik krijg deze foutmelding bij deleten;

code:
1
2
3
4
Error Type:
(0x80020009)
Exception occurred. 
/delete_artikel.asp, line 29


of deze bij paar keer refreshen;

code:
1
2
3
4
Error Type:
Provider (0x80004005)
Unspecified error
/delete_artikel.asp, line 13

[ Voor 66% gewijzigd door Verwijderd op 26-03-2005 17:45 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Als je een object opent binnen een aftakking (zoals een if), dan moet je hem in de regel ook binnen die aftakking sluiten.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
OK, zou je mij een concreet voorbeeld kunnen geven? Ik begrijp niet helemaal wat je bedoeld. Bedoel je dat ik bij elke If/ ElseIf opnieuw connection-object en recordset-object moet maken? Kan dat makkelijker? Iets van een keer maken en telkens opnieuw aanroepen, of zoiets?

Hoe los ik dat dan met die server.transfer op?

  • wizzkizz
  • Registratie: April 2003
  • Laatst online: 19-12-2025

wizzkizz

smile...tomorrow will be worse

Verwijderd schreef op zaterdag 26 maart 2005 @ 15:25:
OK, zou je mij een concreet voorbeeld kunnen geven? Ik begrijp niet helemaal wat je bedoeld. Bedoel je dat ik bij elke If/ ElseIf opnieuw connection-object en recordset-object moet maken? Kan dat makkelijker? Iets van een keer maken en telkens opnieuw aanroepen, of zoiets?

Hoe los ik dat dan met die server.transfer op?
Wat wil je met die server.transfer bereiken?
Dat die pagina ingevoegd wordt? Dan kun je beter SSI (server-side include) gebruiken.
Dat die pagina uitgevoerd wordt? Probeer dan Server.Execute eens.
Naar een compleet andere pagina gaan? Kun je ook met een Response.Redirect doen.

Zelf zou ik het bovenste stuk van je code zo herschrijven:
Visual Basic:
1
2
3
4
5
6
<%
  If ( Session("GebruikersNaam") = "" ) Then
    Response.Redirect "login.asp"  
    Response.End
  End If
%>

Dan ben je iig al kwijt dat de rest van je pagina in een Else-constructie staat.

Over het afsluiten van je connectie: je kunt dat doen zoals je nu gedaan hebt, nl. binnen elke tak van je if-statement. Zelf zou ik die buiten het if-statement halen, dus alleen die op regel 52+53 overhouden.

P.S. net coden, dus op een fatsoenlijke manier indenten enzo, helpt om het overzicht over je code te houden.
Hier op GoT kun je syntaxis-highlighting voor VBScript krijgen door ipv
[ code ]...[ /code ]
[ code=vb ]...[ /code ]
te gebruiken.

[ Voor 14% gewijzigd door wizzkizz op 26-03-2005 15:57 . Reden: kleine toevoeging ]

Make it idiot proof and someone will make a better idiot.
Real programmers don't document. If it was hard to write, it should be hard to understand.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Verwijderd schreef op zaterdag 26 maart 2005 @ 15:25:
OK, zou je mij een concreet voorbeeld kunnen geven? Ik begrijp niet helemaal wat je bedoeld. Bedoel je dat ik bij elke If/ ElseIf opnieuw connection-object en recordset-object moet maken?
Nee, ik bedoel dat ALS je een connectie opent in een aftakking, dat je die dan ook in die aftakking zou moeten sluiten.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Jongens bedankt (Ik zal ff code=vb maken),

Ik ben een newbie op gebied van ASP, echter volgens een artikel bij 4guysformrolla is Server.Transfer beter dan Response.Redirect. Response.Redirect gebeurd client-side, Server.Transfer gebeurd server-side, scheelt in http-requests ed, echter bij Server.Transfer blijft url client-side zelfde is een nadeeltje bij debuggen.
Wat ik gelezen heb over Server.Execute is dat deze naar andere pagina gaat deze uitvoert en weer terug gaat naar oude ASP-pagina, dus als het ware code invoegt.

Misschien kan het ook heel anders? Wat ik wil = Komt 'ie dan, Komt 'ie dan;

Als ("GebruikersNaam") = "" --> naar Loginform.hmtl
Als ("GebruikersNaam") = "naampje van Admin" uitvoeren SQL Delete-query
Als GebruikersNaam") = ("Tabel.GebruikersNaam") van Request.Querystring("Artcode") die vewijderd dient te worden. uitvoeren SQL Delete-query
Als GebruikersNaam") <> ("Tabel.GebruikersNaam") van Request.Querystring("Artcode") die vewijderd dient te worden, dan Response.Write "U heeft geen rechten!"


Dit wil ik dus voor elkaar krijgen. Iemand beter, maar doch niet moeilijkere oplossingen. Zoals ik gezegd heb, ik ben een ASP-newbie

<off-topic>
Trouwens ff ander vraagje; Welke asp-editor adviseren jullie? Ik wil er eentje met goede syntax-highlighting en eentje die ook een beetje aan tag-completion doet, scheelt intokkelen.
</off-topic>

[ Voor 22% gewijzigd door Verwijderd op 26-03-2005 17:59 . Reden: typfoutjes ]


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 08-05 09:43

Jaspertje

Max & Milo.. lief

Je kan het doen met een "if" statement, je kan ook een Case gebruiken:

Visual Basic:
1
2
3
4
5
6
7
8
9
waarde = "a"
select case waarde
  case "a"
    'Voer deze code uit
  case "b"
    'voer deze code uit
  case else
    'voer deze code uit
end select


Vooral bij meer dan 1 else wordt dit imo overzichtelijker.. dan steeds if

Als je een hele grote lap code moet uitvoeren binnen elk if statement, kan jer ook voor kiezen om een functie uit te voeren..
Pagina: 1