16. marts 2003 - 05:21Der er
48 kommentarer og 1 løsning
Sletning efter xx måneder
Hej igen allesammen...!
Jeg har et logind system der køre i en acc db, i denne er der: <<<Tabler>>> 1, (Dato) når man opretter sig = 10-12-2003 20:20 2, (Dato2) skifter hver gang man har været logget ind
Så er det jeg gerne vil vide hvordan jeg kan slette en bruger efter Ca.2 måneder
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Noget i denne stil måske... --------------------------- strDate = DATEADD("m", -2, date()) SQL = "DELETE * FROM DinTabel WHERE Dato2 < '"& strDate &"'" Conn.Execute(SQL)
Du skal være opmærksom på at det ikke er noget du kan sætte til at køre af sig selv med mindre du bruger SQL Server og kan lave scheduled tasks. Du vil være nød til at skulle udføre koden så den selve kan tjekke hvem der skal slettes.
Du kunne vel bare indsætte den på din index-side. Så bliver koden kørt hver gang siden loades og dermed at du sikker på at der bliver "ryddet op" i din db.
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07) [Microsoft][ODBC Microsoft Access-driver] Datatyperne stemmer ikke overens i kriterieudtrykket. /index.asp, line 28
Der er to ting du skal huske. Når du bruger dato i SQL skal der bruges # omkring og ikke ' når det er Access.
SQL bruger US/UK dato format så det skal være i formatet yyyy-mm-dd eller mm-dd-yyyy, og ikke DK format. Også selvom du bruger DK format på serveren og i databasen, så bruger SQL US/UK format.
Microsoft OLE DB Provider for ODBC Drivers (0x80040E37) [Microsoft][ODBC Microsoft Access-driver] Microsoft Jet-databasemotoren kan ikke finde inputtabellen eller forespørgslen "DinTabel". Kontroller, at den findes, og at navnet er stavet korrekt. /test.asp, line 9 _______________________________________________________________________
Der opstod en Microsoft VBScript-kørselsfejl (0x800A01A8) Et objekt er obligatorisk: 'rs' /test.asp, line 13 ____________________________________________________________
Det ser ud til at virke findt, nu kommer der et meget dumt spm. gider du ikke lige skære koden ud i pap for mig, hvad tingen gør step by step så er du sød
<% 'Her laves et connection object som brues til at connecte til database Set Conn = Server.CreateObject("ADODB.Connection") 'I denne streng som kaldes en Connection String, angives hvilen database driver/provider der skal bruges til at tilgå databasen 'samt hvilken database der skal åbnes DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/medlemsliste/db/medlemmer.mdb") 'Åben til databasen Conn.Open DSN
'Udregn datoen for 2 måneder siden datoStr = DateAdd("m", -2, date()) 'Formater datoen i US formatet yyyy-mm-dd som bruges i SQL datoStr = Year(datoStr) & "-" & Month(datoStr) & "-" & Day(datoStr) 'Lav en SQL sætningen som sletter fra tabellen user SQL = "DELETE FROM user WHERE Dato2 < #"& datoStr & "#" 'Udføre SQL sætnignen Conn.Execute(SQL)
'Luk forbindelsen til databasen Conn.Close 'Lige for god orden skyld bør denne med for at slette objectet Conn. Set Conn = Nothing %>
Pointen er dine, Men lige et spm til. Da jeg har 2 tabler en ( Dato ) til når en persom oprettet sig, og en table ( Dato2 ) denne skifter værgang de logger sig ind på siden,
Kan det lade sig gøre at vis der er 2 månder forskeld fra (DATO) til (DATO2) at den så sletter forstå du hvad jeg mener....
Det er oxo det der er meningen, der er en lille FifaClan jeg har hvor folk skal oprette sig for for at være medlem, men der er mange der bare tilmelder sig uden at komme igen, derfor denne kode.
Ja men hvis du sletter records hvor der er mere end 2 måneder forskel mellem Dato for opretelse (dato) og dato for sidst logget ind (dato2) så vil eks en som har oprettet sig den 1/1-2003 blive slette hvis han logger ind efter den 1/3-2003 da forskellen melle opretelse og sidste login er mere end 2 måneder, også selvom han har logget ind hver dag.
SQL sætningen kan laves og vil se sådan her ud, men overvej lige om det er den rigtige løsning. SQL = "DELETE FROM DinTabel WHERE DateDiff('m',Dato,Dato2)>2"
Umiddelbart syntes jeg den første lyder rigtigt at du slette folk som ikke har være logget ind i 2 måender.
Ja, så skal koden være som i kommentar: 17/03-2003 01:15:57 Hvis dato2 indeholder den dato man sidst er logget ind. Eks. hvis jeg sidst er logget ind den 1/1-2003 så vil koden hvis den bliver udført efter den 1/3-2003 slette min bruger, da jeg ikke har været logget ind i 2 måneder.
Bare en lille tanke, kunne det være muligt at gøre sådan at vis en person bliver slettet, smides alle oplysinger om ham over i en anden db, eller en side, sådan så man kan holde styr på hvem der er blivet slette med tiden
Jo det kan man.. Du skal så bare hendte dem som vil blive slette og indsætte dem i en anden tabel.
Her er eks hvor den anden tabel hedder, deleteduser
<% 'Her laves et connection object som brues til at connecte til database Set Conn = Server.CreateObject("ADODB.Connection") Set rs = Server.CreateObject("ADODB.Recordset")
'I denne streng som kaldes en Connection String, angives hvilen database driver/provider der skal bruges til at tilgå databasen 'samt hvilken database der skal åbnes DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/medlemsliste/db/medlemmer.mdb") 'Åben til databasen Conn.Open DSN
'Udregn datoen for 2 måneder siden datoStr = DateAdd("m", -2, date()) 'Formater datoen i US formatet yyyy-mm-dd som bruges i SQL datoStr = Year(datoStr) & "-" & Month(datoStr) & "-" & Day(datoStr)
Vil den tage alle tablerne med over fra brugerne eller er det så kun Dato og Dato2 og usernavn SQL = "INSERT INTO deleteduser (dato, dato2, username) "
<% 'Her laves et connection object som brues til at connecte til database Set Conn = Server.CreateObject("ADODB.Connection") Set rs = Server.CreateObject("ADODB.Recordset")
'I denne streng som kaldes en Connection String, angives hvilen database driver/provider der skal bruges til at tilgå databasen 'samt hvilken database der skal åbnes DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/medlemsliste/db/medlemmer.mdb") 'Åben til databasen Conn.Open DSN
'Udregn datoen for 2 måneder siden datoStr = DateAdd("m", -2, date()) 'Formater datoen i US formatet yyyy-mm-dd som bruges i SQL datoStr = Year(datoStr) & "-" & Month(datoStr) & "-" & Day(datoStr)
<% 'Her laves et connection object som brues til at connecte til database Set Conn = Server.CreateObject("ADODB.Connection") Set rs = Server.CreateObject("ADODB.Recordset")
'I denne streng som kaldes en Connection String, angives hvilen database driver/provider der skal bruges til at tilgå databasen 'samt hvilken database der skal åbnes DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/medlemsliste/db/medlemmer.mdb") 'Åben til databasen Conn.Open DSN
'Udregn datoen for 2 måneder siden datoStr = DateAdd("m", -2, date()) 'Formater datoen i US formatet yyyy-mm-dd som bruges i SQL datoStr = Year(datoStr) & "-" & Month(datoStr) & "-" & Day(datoStr)
Hvad sker der lige her ????? Du har fået hjælp til at løse dit oprindelige spørgsmål + hjælp til et script som flytter data. Du har heller ikke engang kommenteret mit sidste svar.
Du har endag selv skrevet:
Kommentar: crapmaster 17/03-2003 01:20:25 : "Pointen er dine"
Så kommer der bare en "lukker!!!" Det holder ikke.
crapmaster: Du skrev selv at eagleeye skulle have point'ene, så derfor bedes du venligst hurtigst mulig komme med en forklaring på hvorfor du selv tager alle point'ene. Hvis det er en fejl, så opret et nyt spørgsmål hvori du uddeler point til eagleeye (husk ref. hertil).
Det må du meget Undskylde, jeg trodet at du hvad fådet dine point, med Nej ingen point til dig, Jeg undskylder meget at der er gådet så lang tid.....
Håber jeg gør det rigtigt nu
Synes godt om
Ny brugerNybegynder
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.