Avatar billede w13 Novice
24. december 2003 - 12:45 Der er 19 kommentarer og
1 løsning

Slette række ved load

-Jeg håber, nogen herinde kan hjælpe mig med noget kode...

-Når en bestemt side loades skal de indlæg, som blev oprettet for over 30 dage siden (jeg har et "dato"-felt i min database) slettes... Det vil sige, hele rækken (/oprettelsen) for den bruger, som havde oprettet sig for over en måned siden... Eller er det for besværligt? Jeg har ingen anelse, da jeg er virkelig skod til ASP!

-Håber, I kan hjælpe mig...
  W13
Avatar billede eagleeye Praktikant
24. december 2003 - 12:48 #1
Hvilken database er det?  Hvilken datatype er kolonne dato?
det kan fint laves med SQL
Avatar billede eagleeye Praktikant
24. december 2003 - 12:50 #2
For Access kan du gøre det med eksvis DateAdd ved ved at ligge 30 dage til kolonnen dato og hvis den dato er mindre end dags dato så slet posterne:


brugerID = 34343

SQL = "DELETE FROM tabelNavn WHERE DateAdd('d',30,dato) <= Date() AND brugerID = " & brugerID
Conn.Execute(SQL)
Avatar billede w13 Novice
24. december 2003 - 14:00 #3
-Ja, det er Access... Og kolonnen "dato" er et "dato og kllokkeslet"-felt...
Avatar billede eagleeye Praktikant
24. december 2003 - 14:01 #4
Du kan bruge det som vist, jeg ved så ikke helt om du skal havde brugerID med eller ej sådan forstå jeg lige spørgsmålet??
Avatar billede w13 Novice
24. december 2003 - 14:03 #5
...Nej, jeg er jo ikke så god til ASP, men når siden, som koden er lagt ind på, loades, skal koden, som sletter alle rækker, hvor datoen er mere end 30 dage gammel, køres... Der skal vel en eller anden <body onload=...>-fidus på eller noget...
Avatar billede w13 Novice
24. december 2003 - 14:06 #6
Nå, nej... Det behøves jo ikke... Den kører jo selv koden...
Avatar billede eagleeye Praktikant
24. december 2003 - 14:07 #7
Du kan sådan set bare ligge det på siden som loades, koden bliver kørt hver gang siden loades i browseren. <body onload=..> er til Javascript.
Avatar billede eagleeye Praktikant
24. december 2003 - 14:07 #8
Jeps den køre selv koden ;)
Avatar billede w13 Novice
24. december 2003 - 14:08 #9
-Ja, men i den kode, du skrev før, finder den jo en bestemt bruger... Den skal tjekke alle brugere...
Avatar billede eagleeye Praktikant
24. december 2003 - 14:10 #10
Ok, jeg læste bare spørgsmål som om det var en bestemt bruger ;)
men så fjerner man bare det med brugerID fra SQL sådan her:

SQL = "DELETE FROM tabelNavn WHERE DateAdd('d',30,dato) <= Date()"
Conn.Execute(SQL)
Avatar billede w13 Novice
24. december 2003 - 14:19 #11
-Har forsøgt at sætte den ind, men den virkede ikke... Hvor i den kode, jeg i forvejen har på siden, skal den være?

<%
  Set rs = Server.CreateObject("ADODB.RecordSet")
  Set Conn = Server.CreateObject("ADODB.Connection")
  strDSN = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db/ansogning.mdb")

strSQL = "SELECT * FROM ansogning WHERE brugernavn = '" & Request.Form("brugernavn") & "'"

  rs.Open strSQL, strDSN, 2, 2

if not rs.EOF then
rs.Close()
set strDSN = nothing
Response.write("Brugernavnet er optaget... Vælg et andet og prøv igen!")
else

  rs.AddNew


  rs("brugernavn") = Request.Form("brugernavn")
  rs("password") = Request.Form("password")
  rs("navn") = Request.Form("navn")
  rs("email") = Request.Form("email")
  rs("alder") = Request.Form("alder")
  rs("kon") = Request.Form("kon")
  rs("amt") = Request.Form("amt")
  rs("kommune") = Request.Form("kommune")
  rs("job") = Request.Form("job")
  rs("ansogning") = Request.Form("ansogning")
  rs("dato") = Now()

  rs.Update

  'lukker pænt igen
  rs.Close
  set rs = Nothing

  response.Write "Oplysningerne er nu gemt!"
end if
%>
Avatar billede eagleeye Praktikant
24. december 2003 - 14:23 #12
Ok prøv at lave de første linjer:

<%
  Set rs = Server.CreateObject("ADODB.RecordSet")
  Set Conn = Server.CreateObject("ADODB.Connection")
  strDSN = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db/ansogning.mdb")


Om til dette:

<%
  Set rs = Server.CreateObject("ADODB.RecordSet")
  Set Conn = Server.CreateObject("ADODB.Connection")
  strDSN = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db/ansogning.mdb")
  Conn.Open strDSN
  SQL = "DELETE FROM tabelNavn WHERE DateAdd('d',30,dato) <= Date()"
Conn.Execute(SQL)
  Conn.Close
Avatar billede w13 Novice
24. december 2003 - 14:39 #13
-Tusind tak... Måske kan du hjælpe mig med en sidste ting... Jeg glemte at skrive den i mit indlæg...

-Hvis der ikke er nogen brugere i min database, laver en anden kode jeg har, rod i den... Hvordan gør jeg sådan, at den IKKE sletter de sidste 5, uanset om de er over 30 dage gamle eller ej? (Jeg putter lige 20 ekstra point på!)
Avatar billede eagleeye Praktikant
24. december 2003 - 14:48 #14
Den skal ikke slette de 5 ældeste?
Avatar billede w13 Novice
24. december 2003 - 14:52 #15
Nej, de fem sidste... Altså, de 5 seneste oprettelser... Ka' det lade sig gøre? (For at undgå at min database skulle blive helt tom, fordi ingen brugte min side... Det ville lave rod i det hele!)
Avatar billede w13 Novice
24. december 2003 - 15:43 #16
Jeg har ændret det lidt... Den skal bare ikke slette den sidste... Hvis det kan lade sig gøre...
Avatar billede w13 Novice
24. december 2003 - 15:46 #17
(Den sidst oprettede, altså!)
Avatar billede eagleeye Praktikant
24. december 2003 - 15:53 #18
Ja..prøv sådan her så.:

SQL = "DELETE FROM tabelNavn WHERE DateAdd('d',30,dato) <= Date() AND id <> (SELECT top 1 id FROM tabelnavn WHERE DateAdd('d',30,dato) <= Date() order by dato DESC)"


(ps. husk at lave backup af db inden test)
Avatar billede w13 Novice
24. december 2003 - 16:17 #19
Det virker helt fint... Tak... Opret lige et svar, så får du pointene!
Avatar billede eagleeye Praktikant
25. december 2003 - 00:43 #20
Ok her et svar ;)
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