Avatar billede musti776 Nybegynder
25. september 2003 - 13:33 Der er 24 kommentarer og
3 løsninger

Maks antal beskeder i Acces db!

Hej.

Jeg har en acces db hvor beskederne i gæstebogen bogen bliver gemt i, men hvad hvis jeg kun vil have, at kun de sidste 200 beskeder skal blive gemt, og de andre slettes? Hvordan gøre jeg det?

Musti
25. september 2003 - 13:41 #1
du kan evt - hver gang du starter databasen - køre en sletteforespørgsel som kunne se således ud:
Delete From Gæstebog Where GæstebogID not in (Select Top 200 GæstebogID From Gæstebog Order By GæstebogID Desc)
Avatar billede mugs Novice
25. september 2003 - 13:42 #2
Du må have et felt f.eks et ID som autonummer, derefter kan du lave en sletteforespørgsel hvor du har ID indsat med et kriterie der siger, at ID skal være under et vist nr. for at blive slettet.
Avatar billede mugs Novice
25. september 2003 - 13:45 #3
Du kan også oprette et felt hvor standardværdien for nye poster er Date(). Herefter i sletteforespørgslen indsætte et kriterie der f.eks sletter poster hvor datoen er mindre end Date(9 - et eller andet.
25. september 2003 - 14:07 #4
Kommentarer til mit første svar:
GæsteBogID antager jeg er et fortløbende nummer (primærnøgle/autonummerering).
Derved vil forespørgslen netop slette alle andre end de seneste 200 poster
Avatar billede musti776 Nybegynder
25. september 2003 - 20:07 #5
Takker for jeres svar...
Men kan man ikke gøre det inde i db, er der ikke en instilling i acces så man kan definere maks antal post?
Avatar billede mugs Novice
25. september 2003 - 20:11 #6
Du kan ikke definere et max antal poster. Men du kan tælle dem og opsætte en betingelse som du kan kombinere med thomasjepsen's forslag:

If Dcount("*","Feltnavn","Tabelnavn") > 200 Then
DoCmd.OpenQuery "forespørgslens navn"
End If
25. september 2003 - 20:11 #7
nej
Avatar billede mugs Novice
25. september 2003 - 20:13 #8
nej?
Avatar billede mugs Novice
25. september 2003 - 20:14 #9
Rettelse til syntaksen. Denne tæller antal poster i tabellen:

MsgBox DCount("*", "Tabelnavn")
Avatar billede musti776 Nybegynder
25. september 2003 - 20:48 #10
Hvis jeg skriver tabel navn og felt navnene, vil i så måske lige skrive den kode der skal til og hvor jeg skal indsætte det henne????
Avatar billede mugs Novice
25. september 2003 - 20:51 #11
Hvis du f.eks indsætter koden i formularens CurrentEvent vil koden eksekveres hver gang du skifter post:

If DCount("*", "Tabelnavn") Then
Kode
End If
Avatar billede mugs Novice
25. september 2003 - 20:52 #12
Sike noget pladder. Sådan:

If DCount("*", "Tabelnavn") > 200 Then
Kode
End If
Avatar billede musti776 Nybegynder
29. september 2003 - 11:25 #13
...
Avatar billede musti776 Nybegynder
01. oktober 2003 - 18:49 #14
Hvis jeg skriver tabel navn og felt navnene, vil i så måske lige skrive den kode der skal til og hvor jeg skal indsætte det henne????
Avatar billede musti776 Nybegynder
03. oktober 2003 - 08:31 #15
nogle der gider at hjælpe?
Avatar billede henrik13 Nybegynder
03. oktober 2003 - 08:35 #16
Ja Lav en knap på din formular. Hvor du i Ved klik skriver mugs foreslag ind.
Og kan du ikke klare det laver jeg det gerne for dig, så send databasen til mig på:
oz1bua@wanadoo.dk
Avatar billede henrik13 Nybegynder
03. oktober 2003 - 08:36 #17
Det var et svar.
Avatar billede henrik13 Nybegynder
03. oktober 2003 - 08:44 #18
>>musti776
Du kan også thomas foreslag, så sker det automatisk hvergang databasen starter. Der kører du bare en sletteforespørgsel i makroen AUTOEXEC.
Der klikker du på forespørgsel klikker på SQL , sletter det der står og kopier den del af thomas sætning der hedder:
Delete From Gæstebog Where GæstebogID not in (Select Top 200 GæstebogID From Gæstebog Order By GæstebogID Desc)
Vh Henrik13
Avatar billede musti776 Nybegynder
03. oktober 2003 - 18:11 #19
hej henrik, her er koden, kan du så ikke lige sætte koden ind for mig?

<%
Set mConn = Server.CreateObject("ADODB.Connection")
Set mRs = Server.CreateObject("ADODB.Recordset")
   
mConn.Open myDb
   
mSQL = "select * from bannedIp where bannedIp = '" & Request.ServerVariables("REMOTE_ADDR") & "'"

mRs.Open msql, mconn, 1, 3

if not mRs.eof then
response.write "Sayfadan uzaklastirildin!"
response.end
end if


if Request.QueryString("islem") <> "ekle" then
%>

     
     
<script language="javascript">
function yolla(){
var isim=document.misafir.isim.value;
var mail=document.misafir.mail.value;
var yer=document.misafir.yer.value;
var notu=document.misafir.notu.value;

if (isim=="")
{
alert("Lütfen adinizi ekleyin")
document.misafir.isim.focus()
return false
        }

if (mail==""){
        alert("Lütfen E-Mail ekleyin.");
        document.misafir.mail.focus()
        return false }
       
if (mail.indexOf('@', 0) == -1 || mail.indexOf('.', 0) == -1){
        alert("E-Mail gecersiz.");
document.misafir.mail.focus()
return false
            }       

if (yer=="")
{
alert("Hangi ülkeden yazdiginizi belirtin.")
document.misafir.yer.focus()
return false
        }
       
if (notu=="")
{
alert("Mesajinizi ekleyin")
document.misafir.notu.focus()
return false
        }
}
</script>

<table width="100%" border="0" cellspacing="1" cellpadding="1" bgcolor=Gainsboro height="400">

<form action="default.asp?modul=defter&islem=ekle"  name="misafir" onsubmit="return yolla()" method=post>

<tr height=100 align=center>
<td align=center colspan=2 bgcolor=#ffcc99>

  <table width="100%" border="0" cellspacing="0" cellpadding="4" bgcolor=Gainsboro>
    <tr>
      <td align=right>
      <font size=2> isim :</font>&nbsp;
      <INPUT type="text" name="isim" maxlength=30 size=20 style="border-style: solid; border-width: 1; font-size : 9pt"><br>
      <font size=2>E-Mail :</font>&nbsp;
      <INPUT type="text" name="mail"  maxlength=40 size=20 style="border-style: solid; border-width: 1; font-size : 9pt"><br>
      <font size=2>Yer :</font>&nbsp;
      <INPUT type="text" name="yer" maxlength=30 size=20 style="border-style: solid; border-width: 1; font-size : 9pt"><br><br>
      <INPUT type="submit" value="Deftere Ekle" id=submit1 name=submit1 style="border-style: solid; border-width: 1; font-size : 9pt">
      </td>
      <td>
      <TEXTAREA rows=8 cols=45 name="notu" style="border-style: solid; border-width: 1; font-size : 9pt">Mesaj</TEXTAREA>
      </td>
    </tr>
  </table>
   
  </td>
</tr>

</form>


<%
end if



Dim sayfaIci, mconn, mrs, msql, sayac, Sayfalar, gastNot, ulovligeord, regEx

sayfaIci = 12
if request("seite")="" then
    sayfa = 1
else
    sayfa = cint(request.querystring("seite"))
end if

Set mConn = Server.CreateObject("ADODB.Connection")
Set mRs = Server.CreateObject("ADODB.Recordset")
   
mConn.Open myDb
   
mSQL = "select * from gast order by id desc"
   
mRs.Open msql, mconn, 1, 3


if Request.QueryString("islem") = "ekle" then

    gastNot = left(Request.Form("notu"), 600)
    gastNot = replace(gastNot, "<", "x")
    gastNot = replace(gastNot, ">", "x")
    gastNot = replace(gastNot, vbcrlf, "<br>")
   


        ulovligeord = "fuck|pis|fucker|götlek|salak|serefsiz|ibne|orosbu|götlek|sikilmis|sikerim|sikini|||||||"
        Set regEx = New RegExp
        regEx.Global = true
        regEx.IgnoreCase = True

        regEx.Pattern = "(^|[^a-z])" & ulovligeord & "([^a-z]|$)"
        gastNot = regEx.Replace (gastNot, "")
        Set regEx = Nothing


   
    mRs.AddNew
    mrs.Fields("name") = left(Request.Form("isim"), 20)
    mrs.Fields("email") = left(Request.Form("mail"), 30)
    mrs.Fields("ort") = left(Request.Form("yer"), 20)
    mrs.Fields("text") = gastNot
    mrs.Fields("Ip") = Request.ServerVariables("REMOTE_ADDR")
    mrs.Update
   
    Response.Redirect "default.asp?modul=defter"
   

else

    mRS.PageSize = sayfaIci
    mRS.CacheSize = SayfaIci
    mRS.AbsolutePage = sayfa

    Sayfalar = mRS.PageCount

    sayac = 0



Do While sayac < SayfaIci And Not mRS.EOF
%>
<tr bgcolor=#fffff9><td  valign=top width="100"><img src='img/right.gif' border=0 align=middle> <b><font size=2  color=DarkViolet><a href="mailto:<%=mrs("email")%>"><%=mrs("name")%></a></font></b><br><font size=1><%=mrs("datum")%></font><br><font size=1><%=mrs("ort")%></font>
</td>
<td width="80%"><font size=2> <%=mRs("text")%></font></td></tr>
     
<%
Sayac = Sayac + 1
mRs.MoveNext
loop

response.write "<tr><td colspan=2 Align='center'  height='100%' width='100%' valign=bottom bgcolor='#ffffff'><font size=1 color=black><b>[Toplam: " & mrs.recordcount & "]</b> " & " .. Sayfalar :"
for i=1 to Sayfalar step 1
  if sayfa = i then
        Response.Write "<font size=1><b> "&i&", </b></font>"
  else
    response.write "<a href='default.asp?modul=defter&seite="&i&"'><font size=1><b>" & i & "</b></font></a>,&nbsp;"
  end if
next


%>   
</font></td></tr>     
       
      </table>

<%

mrs.Close
Set mrs = nothing
mconn.Close
set mconn = nothing
end if


%>
Avatar billede henrik13 Nybegynder
03. oktober 2003 - 18:18 #20
>>musti776
Det er jo ikke access. Jeg vil tro det er asp. Det aner jeg inted om. Det står heller ikke i spørgsmåletm så luk det spam, og opret det i den rigtige kategori.
Vh Henrik13
Avatar billede musti776 Nybegynder
03. oktober 2003 - 18:50 #21
det er bare mig der har forstået det forkert, jeg troede det kode som i har skrevet skulle ind på siden.... vidste ikke at man kunne gøre det inde i selve db'en.

men jeg sender db'en til dig, vil du så ikke lige lave den og så skrive hvordan du har lavet det her inde???
Avatar billede mugs Novice
03. oktober 2003 - 18:53 #22
Hvis du har en AutoExec makro, der foretager en bestemt handling når db åbnes kan du indsætte en sletteforespørgsel med en betingelse.
Avatar billede henrik13 Nybegynder
03. oktober 2003 - 21:06 #23
Har ikke modtaget noget enu.    :o)
Avatar billede musti776 Nybegynder
04. oktober 2003 - 02:30 #24
så prøver jeg igen :)
Avatar billede mugs Novice
04. oktober 2003 - 07:46 #25
Jeg har implementeret koden i en lille testdb. Hvis du lægger din e-mail, kan jeg sende den iaften. Skal på arbejde og er hjemme ca, 19:00.
Avatar billede henrik13 Nybegynder
04. oktober 2003 - 16:21 #26
Er sendt.
Det var thomas's kode jeg tilpassede.  :o)
Avatar billede musti776 Nybegynder
04. oktober 2003 - 19:56 #27
mange tak henrik
fordeler points så alle er tilfredse :)
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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