Oprettet søn. d. 15. august 2010 kl. 14:30:19

per2edb
per2edb (4.680 point. Point ude: 120)

MS Access på en aspx side

Jeg har en aspx side med tilgang til en MS access.
Den er indlejret i en Sub Page_Load
Jeg ønsker den direkte på aspx siden - altså uden Sub Page_Load.
Kan i hjælpe på hvordan den skal være Dimet?

<script language="VB" runat="server" >
Sub Page_Load(sender As Object, e As EventArgs) <----- Skal væk
Dim MyConnection As New OleDbConnection()
MyConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Besog.mdb"
Dim strSQL As String = "INSERT INTO Besogende (REMOTE_HOST,Dato) VALUES('" & request.ServerVariables("REMOTE_HOST") & "','" & now() & "')"
Dim objCommand As New OleDbCommand(strSQL, MyConnection)
              MyConnection.Open()
              objCommand.ExecuteNonQuery()
              MyConnection.Close()
End Sub  <----- Skal væk
</script>

Skrevet søn. d. 15. august 2010 kl. 14:33:27| #1

keysersoze
keysersoze (306.429 point)
www.soze.dk
Alt i .NET er baseret på events - hvorfor skal load-eventen væk?

Skrevet søn. d. 15. august 2010 kl. 23:29:41| #2

per2edb
per2edb (4.680 point)
Fordi tilgang til DB skal være uafhængig af siden lodes ind.

Nu ved jeg af mange mange års erfaring det næste spørgsmål er hvorfor det .... efter en længere debat glider mit spørgsmål i baggrunden til en diskution der ikke hjælper mig.

Skulle jeg virkelig forklare det i dybten vil det fylde 10 sider om hele programmets struktur der er meget kompleks hvor der er interaktion mellem mange sider og programmer.

Skrevet søn. d. 15. august 2010 kl. 23:35:05| #3

per2edb
per2edb (4.680 point)
Jeg glemte - hvis det ikke kan lade sig gøre vil det hjælpe mig kolosalt for så kan jeg agere herudfra - kan det lade sig gøre så venligst hjælp med at sætte de rigtige Dim

Skrevet søn. d. 15. august 2010 kl. 23:40:27| #4

keysersoze
keysersoze (306.429 point)
www.soze.dk
Så vil jeg friste mig selv til at sige at du skal sætte dig lidt mere ind i ASP.NET - der vil altid køre en eller flere events når din side loades, oftest er page_load den rigtige event at håndtere sådanne ting i. Hvis ingen events køres er der ingen kald til siden og så er der slet ikke behov for at eksekvere kode.

Hvis din tilgang til DB skal være uafhængig af at siden loades ind har du et større problem eftersom web er stateless og ikke uden videre kan gemme connections på tværs af sider - skal kode eksekveres mere globalt eller ikke-side-afhængig skal du i stedet have fat på nogle events et helt andet sted, fx i din global.asax.

Hvis du ikke kommer med oplysninger om problemets størrelse er det umuligt at komme med en løsning.

Skrevet man. d. 16. august 2010 kl. 12:54:45| #5

per2edb
per2edb (4.680 point)
Når jeg tilgår siden skal DB kun aktiveres under bestemte forhold, nemlig når min variable Session("Gennemgang")="" .
Den har jeg lagt i en if .. then. Som her vist:

<% If Session("Gennemgang")=""  then %>
    .......
    .......           
<% end if %>

Herindeni virker load eventen ikke - derfor vil jeg have den væk og evt. erstattet af en anden der kan passe ind i if setningen.

Skrevet man. d. 16. august 2010 kl. 13:08:37| #6

keysersoze
keysersoze (306.429 point)
www.soze.dk
Det er fordi if-sætningen skal foregå inden i eventen;

<script language="VB" runat="server" >
Sub Page_Load(sender As Object, e As EventArgs)
  If Session("Gennemgang")=""  then
    Dim MyConnection As New OleDbConnection()
    MyConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Besog.mdb"
    Dim strSQL As String = "INSERT INTO Besogende (REMOTE_HOST,Dato) VALUES('" & request.ServerVariables("REMOTE_HOST") & "','" & now() & "')"
    Dim objCommand As New OleDbCommand(strSQL, MyConnection)
              MyConnection.Open()
              objCommand.ExecuteNonQuery()
              MyConnection.Close()
  End If
End Sub
</script>

Uden at kende din kode vil det formentlig også være relevant at tjekke for om din session er null.

Skrevet man. d. 16. august 2010 kl. 17:35:24| #7

per2edb
per2edb (4.680 point)
Tak for forslaget. Desværre havde jeg prøvet det som helt naturligt men det virkede ikke. For at være helt sikker på
session har jeg prøvet med  If Session("Gennemgang")<>"Nej".
Det virker heller ikke.
Så vidt jeg kan se slår Sub Page Session "ihjel" det var derfor jeg ville have den ud.

Skrevet man. d. 16. august 2010 kl. 17:57:12| #8

keysersoze
keysersoze (306.429 point)
www.soze.dk
Der er ingenting udover timeout, nedbrud eller bevidst kode der kan slå en session ihjel - en ekstrem mængde af alle de webapplikationer, der er lavet i .NET ville slet ikke fungere i dag hvis din påstand var korrekt. Der må altså flere informationer på bordet - eller også må du i gang med at debugge gennem Visual Studio.

Skrevet ons. d. 18. august 2010 kl. 11:28:22| #9

per2edb
per2edb (4.680 point)
Jeg sender hele aspx siden
Hvad jeg end sætter Session("Gennemgang") til kommer jeg ind i DB selvom IF sætningen skulle styre udenom.
Kan du hjælpe


<%@ Page Language="VB" masterpagefile="APC.master" title="Forside" %>
<%@ Import Namespace="System.Data.OleDb" %>
<asp:Content id="Content1" runat="server" contentplaceholderid="ContentPlaceHolder1">

<%
  Session.Timeout = 120
  Session("Gennemgang")="Nej"
%>
         
<script language="VB" runat="server" >
Sub Page_Load(sender As Object, e As EventArgs)
If Session("Gennemgang")<>"Nej"  then
Dim MyConnection As New OleDbConnection()
MyConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Besog.mdb"
Dim strSQL As String = "INSERT INTO Besogende (REMOTE_HOST,Dato) VALUES('" & request.ServerVariables("REMOTE_HOST") & "','" & now() & "')"
Dim objCommand As New OleDbCommand(strSQL, MyConnection)
MyConnection.Open()
objCommand.ExecuteNonQuery()
MyConnection.Close()
                         
End If
End Sub
</script>               

</asp:Content>

Skrevet ons. d. 18. august 2010 kl. 11:59:16| #10

keysersoze
keysersoze (306.429 point)
www.soze.dk
Det tyder på at du kommer fra en ældre teknologi fx klassisk ASP?

Sørg for at sætte din session et rigtigt sted - fx også inde i din page_load.

Skrevet søn. d. 22. august 2010 kl. 13:37:31| #11

per2edb
per2edb (4.680 point)
Så virker det - tak for hjælpen.
Session skal sættes i Page_Load.
Herudover har du ret, jeg er gået fra ASP til ASPX som jeg har købt MS Expression til inclusive Expression Web, Blend, Designer, Encoder.
Mit livs dårligste investering. Der er f.eks. ingen Basic i Expression WEB!. MS vil have 2000 kr for at hjælpe med at finde det! Og så har jeg endda købt hele pakken - utroligt!.

Foriøvrigt hvad kan Visual Studio 2010 som Expression web ikke kan? Skulle jeg hellere smide møgprogrammerne Expression ud og erstatte dem med Visual Studio? Jeg laver primært web sider i ASPX.

Skrevet søn. d. 22. august 2010 kl. 13:38:27| #12

per2edb
per2edb (4.680 point)
Vil du lave det så jeg kan give point

Skrevet søn. d. 22. august 2010 kl. 15:02:09| #13

keysersoze
keysersoze (306.429 point)
www.soze.dk
Jeg har intet kendskab til Expression så kender ikke forskellen - men du kan jo starte med at hente Visual Studio Express hvilket er ganske gratis.

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Login controller med eksisterende database

Oprettet den 26. januar 2012 kl. 10.37
faran giver 60 point for svar | Giv et svar »

Session og klient

Oprettet den 24. januar 2012 kl. 09.49
badal giver 30 point for svar | Giv et svar »

Få vist billeder via sti i XML fil

Oprettet den 15. januar 2012 kl. 16.09
Counx giver 100 point for svar | Giv et svar »

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Gør dig selv en tjeneste: Køb et ordentligt SD-kort

Der kan være meget stor hastighedsforskel på to umiddelbare ens SD-kort. Se her hvad du skal være opmærksom på, når du køber ekstra hukommelse til din mobil, tablet eller kamera.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Gratis flysimulator fra Microsoft

Den legendariske Flight Simulator fra Microsoft genopstår den 29. februar - og denne gang er spillet gratis.


Nyheder fra Computerworld

Teaser billede

Bank: Derfor er login uden NemID helt i orden

Der er ikke hold i påstanden om sikkerhedsproblemer i forbindelse med bankkunders login uden brug af NemID, lyder det fra Nykredit Bank.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger