Avatar billede mortency Nybegynder
23. januar 2002 - 16:56 Der er 14 kommentarer og
1 løsning

Acess og ASP - DB connetion

JEG SKAL ÅPNE EN ACESS DATABASE, HVORDAN ER KODEN INN I DETTE SCRIPTET? Tabellen heter = tblOrdre og Databsen heter = database.mbd - HJELP!

<%
    KID = Session("KID")
    error = ""
   
    ' Sjekk om handlekurven er tom...
    If Session("varer") < 1 Then
        error = error & "Du har ikke bestillt noen varer! "
    End If
   
    txtDato = Date()
    txtDato = Day( txtDato ) & "." & Month( txtDato ) & "." & Year( txtDato )

    ' SKAL ÅPNE DATABASEN
    Set oRS=Server.CreateObject("ADODB.Recordset")
    ' Åpne Recordset
    oRS.Open "tblOrdre", Application("oConn"), _
        adOpenKeyset, adLockOptimistic, adCmdTable
   
    ' Legg til ny ordre
    oRS.AddNew
    oRS("OKID") = KID
    oRS("ODato") = txtDato
    oRS("OStatus") = "P"
    oRS.Update

    ' Hente ut ordre id
    OID = oRS("OID")
   
    ' Lukke ordren
    oRS.Close
   
    oRS.Open "tblOrdreLinjer", Application("oConn"), _
          adOpenKeyset, adLockOptimistic, adCmdTable

    For i=1 To Session("varer")
        oRS.AddNew
        oRS("OLOID") = OID
        oRS("OLPID") = Session("PID" & i)
        oRS("OLKvant") = Session("Antall" & i)
        oRS.Update
    Next
   
    oRS.Close
   
    If Err.number <> 0 Then
        %>En feil oppstod... Beklager, ordren din ble ikke registrert.<%
        Response.End
    End If

    Session.Abandon
   
    Response.Redirect("takk.asp")   
%>
Avatar billede dgivoni Nybegynder
23. januar 2002 - 17:17 #1
Du kan f.eks. åbne databasen sådan her:
connStr = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & server.MapPath("\") & "\database.mdb;"
Set conn = CreateObject("adodb.connection")
conn.Open connStr
Avatar billede mortency Nybegynder
23. januar 2002 - 17:19 #2
Hvordan blir det inn i hele scriptet?
Avatar billede dgivoni Nybegynder
23. januar 2002 - 17:20 #3
Tabellen (recordsættet) henter du ud på denne måde:
sqlstmt = "select * from tblOrdre"
oRS.open sqlstmt, conn (evt. plus de specifikke parametre for hvordan du vil åbne recordsættet)
Avatar billede dgivoni Nybegynder
23. januar 2002 - 17:22 #4
...
' SKAL ÅPNE DATABASEN
connStr = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & server.MapPath("") & "database.mdb;"
Set conn = CreateObject("adodb.connection")
conn.Open connStr
' Åpne Recordset
Set oRS=Server.CreateObject("ADODB.Recordset")
sqlstmt = "select * from tblOrdre"
oRS.open sqlstmt, conn

- jeg finder lige parametrene, et øjeblik...
Avatar billede mortency Nybegynder
23. januar 2002 - 17:25 #5
Hva er egentlig dette da`? adOpenKeyset, adLockOptimistic, adCmdTable er ikke disse nødvendige lenger da?
Avatar billede dgivoni Nybegynder
23. januar 2002 - 17:25 #6
de parametre du har angivet ved åbningen af recordsættet svarer til disse tal:
oRS.open sqlstmt, conn, 1, 3, 2
Avatar billede dgivoni Nybegynder
23. januar 2002 - 17:27 #7
så vidt jeg ved skal du selv angive tal-værdierne, med mindre du har gemt dem som konstanter med de navne...
Avatar billede dgivoni Nybegynder
23. januar 2002 - 17:28 #8
du kan selv se navnene og talværdierne her:
http://www.devguru.com/Technologies/ado/quickref/recordset_open.html
Avatar billede mortency Nybegynder
23. januar 2002 - 17:31 #9
BLIR DET SÅNN?

<%
    KID = Session("KID")
    error = ""
   
    ' Sjekk om handlekurven er tom...
    If Session("varer") < 1 Then
        error = error & "Du har ikke bestillt noen varer! "
    End If
   
    txtDato = Date()
    txtDato = Day( txtDato ) & "." & Month( txtDato ) & "." & Year( txtDato )

    ' SKAL ÅPNE TABELLEN ORDRE.
    connStr = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & server.MapPath("") & "database.mdb;"
    Set conn = CreateObject("adodb.connection")
    conn.Open connStr
    ' Åpne Recordset
    Set oRS=Server.CreateObject("ADODB.Recordset")
    sqlstmt = "select * from tblOrdre"
    oRS.open sqlstmt, conn, 1, 3, 2

   
    ' Legg til ny ordre
    oRS.AddNew
    oRS("OKID") = KID
    oRS("ODato") = txtDato
    oRS("OStatus") = "P"
    oRS.Update

    ' Hente ut ordre id
    OID = oRS("OID")
   
    ' Lukke ordren
    oRS.Close
   
    ' SKAL ÅPNE TABELLEN ORDRELINJER.
    connStr = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & server.MapPath("") & "database.mdb;"
    Set conn = CreateObject("adodb.connection")
    conn.Open connStr
    ' Åpne Recordset
    Set oRS=Server.CreateObject("ADODB.Recordset")
    sqlstmt = "select * from tblOrdrelinjer"
    oRS.open sqlstmt, conn, 1, 3, 2

    For i=1 To Session("varer")
        oRS.AddNew
        oRS("OLOID") = OID
        oRS("OLPID") = Session("PID" & i)
        oRS("OLKvant") = Session("Antall" & i)
        oRS.Update
    Next
   
    oRS.Close
   
    If Err.number <> 0 Then
        %>En feil oppstod... Beklager, ordren din ble ikke registrert.<%
        Response.End
    End If

    Session.Abandon
   
    Response.Redirect("takk.asp")   
%>
Avatar billede dgivoni Nybegynder
23. januar 2002 - 17:39 #10
yep, det skulle kunne virke... (hvis databasen ligger i samme mappe som asp-filen)
Avatar billede mortency Nybegynder
23. januar 2002 - 17:41 #11
Prøver det.
Avatar billede mortency Nybegynder
23. januar 2002 - 18:27 #12
JEG FÅR FEIL I LINJE 20.

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error in FROM clause.
/Freeteam/lagreordre.asp, line 20


<%
    KID = Session("KID")
    error = ""
   
    ' Sjekk om handlekurven er tom...
    If Session("varer") < 1 Then
        error = error & "Du har ikke bestillt noen varer! "
    End If
   
    txtDato = Date()
    txtDato = Day( txtDato ) & "." & Month( txtDato ) & "." & Year( txtDato )

    ' SKAL ÅPNE TABELLEN ORDRE.
    connStr = "Driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("database/freeteam.mdb")
    Set oConn = CreateObject("adodb.connection")
    oConn.Open connStr
    ' Åpne Recordset
    Set oRS=Server.CreateObject("ADODB.Recordset")
    SQL = "SELECT * FROM tblOrdre"
    oRS.open SQL, oConn, 1, 3, 2

   
    ' Legg til ny ordre
    oRS.AddNew
    oRS("OKID") = KID
    oRS("ODato") = txtDato
    oRS("OStatus") = "P"
    oRS.Update

    ' Hente ut ordre id
    OID = oRS("OID")
   
    ' Lukke ordren
    oRS.Close
   
    ' SKAL ÅPNE TABELLEN ORDRELINJER.
    connStr = "Driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("database/freeteam.mdb")
    Set oConn = CreateObject("adodb.connection")
    oConn.Open connStr
    ' Åpne Recordset
    Set oRS=Server.CreateObject("ADODB.Recordset")
    SQL = "SELECT * FROM tblOrdrelinjer"
    oRS.open SQL, oConn, 1, 3, 2

    For i=1 To Session("varer")
        oRS.AddNew
        oRS("OLOID") = OID
        oRS("OLPID") = Session("PID" & i)
        oRS("OLKvant") = Session("Antall" & i)
        oRS.Update
    Next
   
    oRS.Close
   
    If Err.number <> 0 Then
        %>En feil oppstod... Beklager, ordren din ble ikke registrert.<%
        Response.End
    End If

    Session.Abandon
   
    Response.Redirect("takk.asp")   
%>
Avatar billede dgivoni Nybegynder
23. januar 2002 - 20:16 #13
den fejl du får, betyder at syntaxen i sql-sætningen er forkert.
Har din database en tabel som hedder tblOrdre?
Avatar billede mortency Nybegynder
24. januar 2002 - 11:12 #14
Det er her feilen er:

oRS.open SQL, oConn, 1, 3, 2
Avatar billede dgivoni Nybegynder
24. januar 2002 - 11:20 #15
ja, men det er SQL-variablen, som indeholder sql-sætningen, som den brokker sig over, så det er et eller andet med databasen.
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