Avatar billede Slettet bruger
18. maj 2002 - 14:16 Der er 24 kommentarer og
2 løsninger

opdatere celle med +1

Hej eksperter...

jeg er ved at lave et bannersystem, men det vil sgu ikke som jeg vil ( desvære )

jég har det med klik til at virke, men nå jeg i slutningen af min kode vil ligge en til en celle, skaber den sig.

koden er her:

<%
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("banner.mdb")
If Request.QueryString("id") <> "" Then
    Set rs = Server.CreateObject("ADODB.RecordSet")
    strSQL = "SELECT * FROM bannere WHERE (ID = " & Request.QueryString("id") & ")"
    rs.Open strSQL, myConn, 1, 3
    If Not (rs.BOF Or rs.EOF) Then
        rs("klik") = rs("klik") + 1
      strURL = rs("URL")
        rs.Update
        rs.Close
        myConn.Close
        Set rs = Nothing
        Set myConn = Nothing
        Response.Clear
        Response.Redirect(strURL)
        myconn.Close
        Set myconn = nothing
    End If
End If
%>
<%
Dim vis, Rs, DBPath, Ialt, sql, Record, RandNum, i
Function Show()
Randomize
RandNum = Int(Rnd * Ialt) + 1
Record.MoveFirst
For i = 1 to RandNum - 1
Record.MoveNext
next
Response.Write "<a href='banner.asp?id=" & Record("id") & "' target='_blank'><img src='" & Record("banner") & "' alt='" & Record("info") & "' border = '0' class='ramme'></a>"
end function

Set Rs = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath("banner.mdb")
Rs.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("banner.mdb")
Sql = "Select count(*) as Found from Bannere"
Set Record = Rs.Execute(Sql)

Ialt = Record("found")

Sql = "Select * from Bannere"
Set Record = Rs.Execute(Sql)

myconn.Close
Set myconn = nothing
%>
<%
Set Rs = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath("banner.mdb")
Rs.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("banner.mdb")
fejlen ----> Sql = "Select * as Found from Bannere where id = " & Record("id")
Set Record = Rs.Execute(Sql)

        rs("eksponeringer") = rs("eksponeringer") + 1
        rs.Update
        rs.Close

%>
<p align="center"><% Response.Write show() %></p>
Avatar billede Slettet bruger
18. maj 2002 - 14:16 #1
fejlen er foresten:

[Microsoft][ODBC Microsoft Access Driver] The SELECT statement includes a reserved word or an argument name that is misspelled or missing, or the punctuation is incorrect.
Avatar billede a1a1 Novice
18. maj 2002 - 14:18 #2
prøv bare med
Sql = "Select * from Bannere where id = " & Record("id")
eller
Sql = "Select eksponeringer from Bannere where id = " & Record("id")
Avatar billede a1a1 Novice
18. maj 2002 - 14:20 #3
du kunne også bare skrive

Set Rs = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath("banner.mdb")
Rs.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("banner.mdb")
Sql = "UPDATE Bannere SET eksponeringer = ekponeringer+1 WHERE id=" & Record("id")
Rs.Close
Rs.Execute(Sql)
Avatar billede a1a1 Novice
18. maj 2002 - 14:21 #4
(uden stave fejl :) )
Avatar billede Slettet bruger
18. maj 2002 - 14:21 #5
hmmmm.... så får jeg denne fejl:

Wrong number of arguments or invalid property assignment
Avatar billede a1a1 Novice
18. maj 2002 - 14:25 #6
ved hvilken?
Avatar billede Slettet bruger
18. maj 2002 - 14:27 #7
har jeg løst, men den kan ikke finde det recorset, fra functionen show, og derved kan den ikke lave den sidste forspørgsel ....
Avatar billede Slettet bruger
18. maj 2002 - 14:36 #8
er du med endnu ?
Avatar billede a1a1 Novice
18. maj 2002 - 14:38 #9
Sql = "Select * from Bannere"
Set Record = Rs.Execute(Sql)

der er din Record...

den vil vel så opdatere den første?

Du har en masse rod i din kode så jeg kan ikke lige gennemskue hvor du tror du har record("id") fra???
Avatar billede a1a1 Novice
18. maj 2002 - 14:41 #10
hvis det er fra functionen show så skal du jo kalde den før du kan opdatere eksponeringer (for at finde id)
Avatar billede Slettet bruger
18. maj 2002 - 14:43 #11
record("id") kommer som jeg skrev i mit sidste indlæg fra funktionen show, så det er vel til at se.

angående rod i min kode, hvad mener du, fårjeg indsatte den sidste del af min kode, virkede den til det den skulle, og jeg kan ikke se hvad du mener med denne kommentar.
Avatar billede Slettet bruger
18. maj 2002 - 14:45 #12
okay, den er jeg ikke helt med på ? "kalde"

jeg har via:
dim id_1
id_1 = record("id")


og så lavet i min SQL dette:

Sql = "Select * from Bannere where id = '" & id_1 & "'"

men så siger den dette når jeg udskriver min SQL:
Select * from Bannere where id = ''
Avatar billede kimiwan Nybegynder
18. maj 2002 - 14:45 #13
Avatar billede Slettet bruger
18. maj 2002 - 14:49 #14
kimiwan>> hvad er det ? og hvad gør den godt for ?

kan godt være jeg spørger dumt, men ved virkeligt ikke hvad det er
Avatar billede kimiwan Nybegynder
18. maj 2002 - 14:50 #15
Det er et af windows komponenterne - det bruges netop til bannerstyring.
Avatar billede a1a1 Novice
18. maj 2002 - 14:50 #16
når du nu selv spørger....:)

du har angivet din connection string 3 gange
DBPath = "DBQ=" & server.mappath("banner.mdb")
Rs.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("banner.mdb") ? why???

du kalder både recordset's og connections's for Rs (det er jo bare et navn, men.... RsSomething PLEJER at være et recordset, Conn /myConn plejer at være en connection)

Du "overskriver" dit recordset (RS) konstant, det man gør (når man er færdig med at bruge recordsettet) er at skrive
Rs.Close
Set Rs = Nothing

din function er placeret midt i koden (normalt er den i toppen af filen (eller i sin egen fil)

har du prøvet at flytte
<p align="center"><% Response.Write show() %></p>
til før den sidste opdatering ?

:)
Avatar billede a1a1 Novice
18. maj 2002 - 14:52 #17
her Kalder du funktionen
Response.Write show()
:)
Avatar billede Slettet bruger
18. maj 2002 - 14:58 #18
hm..... tror bare jeg starter forfra på mit script, da jeg har fået hjælp til det i : http://www.eksperten.dk/spm/212489

af en jeg troede vidste lidt om det....

jeg vil nu ifølge dine råd og kimwan's links prøve forfra, da det nok er det bedste...

men har dog et spm. til jer, angående min conn. er det bedst at lade den køre hele vejen igenne et dokument, eller at stoppe den og starte den når den skal bruges ?
Avatar billede a1a1 Novice
18. maj 2002 - 15:00 #19
giver du mig så point ? :)
Avatar billede kimiwan Nybegynder
18. maj 2002 - 15:00 #20
Avatar billede kimiwan Nybegynder
18. maj 2002 - 15:02 #21
det er bedst kun at holde den åben mens du bruger den.  f.eks.

set objConn = server.createobject("adodb.connection")
objConn.Open strConnect
'bruger connection her
objConn.close
'bruger ikke connection her
objConn.open strconnect
'bruger connection igen
objConn.close
set objConn = nothing
'bruger ikke connections mere på denne side
Avatar billede a1a1 Novice
18. maj 2002 - 15:12 #22
den sidste set objConn = Nothing skal man dog ikke have med, da den sletter din connection fra connectionpoolen....
Avatar billede Slettet bruger
18. maj 2002 - 15:15 #23
så takker jeg mange gange for jeres tid og tålmodighed med en håbløs person der prøver at lære dette.

mvh.
questis
Avatar billede a1a1 Novice
18. maj 2002 - 15:27 #24
:) selv tak

adrotator komponenten virker fint, men det er jo sjovere at lave sin egen, så kan man også putte noget mere på

:)
Avatar billede Slettet bruger
18. maj 2002 - 15:33 #25
, er det foresten bedre at køre det via en textfil, end en access db ? ved ikke hvad der er hurtigst ?
Avatar billede a1a1 Novice
18. maj 2002 - 15:41 #26
en text fil er hurtig at læse, men det er jo "besværligt" at navigere rundt i (for at finde det du nu skal).

databasen er hurtigere at søge i, og meget bedre hvis der er meget i :)
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