webForumDet fria alternativet

kopiera data i en databas

ASP

13 svar · 245 visningar · startad av mikael_a

Medlem sedan mars 2000475 inlägg
Frågan#1

Hej,

jag har en databas i access, som innehåller en massa infomation om kommande filmer.

jag sorterar dem där efter vecka.

men hur gör jag för att flytta aktuella poster till en ny databas?

vecka 27 alla filmer innan vecka 27 skall flyttas till en ny databas som tex heter arkiv.

gör det att göra automatiskt? eller måste admin tex trycka på en länk där det sedan frågas efter vilken vecka som skall flyttas?

hoppas ni förstår vad jag menar, annars får jag försöka förklara lite mer.

------------------
Micke & Annas Sajt
micke@micke-anna.nu

Medlem sedan dec. 19998 577 inlägg
#2

Det skall väl gå... jag inte personligen gjort detta... men på nått sätt borde det gå att lösa automatiskt...

Först skapar du ett forumlär där du fyller i veckor som skall flyttas...

Sedan hämtar du dom veckorna ifrån den första databasen, lägger in det i ett disconnected recordset, och slutligen loopar in koden i den andra databasen...

Denna idéologi borde fungera... dock har jag aldrig testat det...

Lycka till! :)

------------------
www.webeye.nu

Medlem sedan mars 2000475 inlägg
#3

ehmmm ok, det låter nog bra :)

synd bara att man inte pratar flytande asp.

skulle du kunna (om tid finnes) ge mig ett script som exempel?

------------------
Micke & Annas Sajt
micke@micke-anna.nu

Medlem sedan dec. 19998 577 inlägg
#4

OK, här är ett litet exempel:

'***** kopplar upp sig mot dom båda databaserna *****'

Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("/scripts/databas.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"

Set Databas2 = Server.CreateObject("ADODB.Connection")
MdbFilePath2 = Server.MapPath("/scripts/databas2.mdb")
Databas2.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath2 & ";"

'***** tar emot data ifrån formuläret *****'

week1 = Request.Form("week1")
week2 = Request.Form("week2")

'***** Hämtar veckorna mellan week1 och week2 *****'

SQL1 = "Select * from table where week > " & week1 & " AND week < " & week2
Set RS = databas1.Execute(SQL1)

'***** Loopar igenom posterna *****'

Do until RS.EOF

kol1 = RS("kol1")
kol2 = RS("kol1")
kol3 = RS("kol1")

'***** Lägger in värden i tabellen table i databas2.mdb *****'

SQL2 = "Insert Into table "
SQL2 = SQL2 & " (kolumn1, kolumn2, kolumn3)"
SQL2 = SQL2 & " VALUES('" & kol1 & "', '" & kol2 & "', '" & kol3 & "')"
databas2.Execute(SQL2)

RS.MoveNext
Loop

------------------
www.webeye.nu

Medlem sedan maj 2000269 inlägg
#5

Sluta nu.
kopiera hela skiten direkt med SQL:o ..
SELECT * INTO nytabell FROM tabell.

Medlem sedan dec. 19991 072 inlägg
#6

...om du inte vill att ngn i administrationen ska behöva klicka på en knapp för att det ska uppdateras kan du ju alltid köra filen på en bestämd tid mha händelsehanteraren i Windows.

detta förutsätter dock att du har en egen server.

------------------
Fredrik Klarqvist
fredrik.klarqvist@swipnet.se
www.streetwise.se/fredrik/

Medlem sedan juni 200032 967 inlägg
#7

detta förutsätter dock att du har en egen server.

nja. du kan ju schedulera att explorern öppnas till en viss sida som gör jobbet åt dig.

------------------
@nders

Medlem sedan maj 2000269 inlägg
#8

vadå , det går att göra helt automatiskt utan någon händelsehanterare eller annat tjafs. Att ni alltid ska krångla. gör scriptet me datum, typ (ska vara högst upp på sidan)

IF WEEKNUMBERDATE>"v27" THEN
SQL:f-l-y-t-t-a--h-e-l-a--s-k-i-t-e-n
END IF

alltså även om nån kanske inte loggar in exakt v 27 så spelar det ingen roll eftersom allt flyttas till korrekt plats innan sidan visas. så användaren märker inget även om 1 enda loggar 87 år. Allting flyttas direkt till rätt plats när nån loggar på.

Medlem sedan mars 2000475 inlägg
#9

låter bra, vill du skicka ett exempel hur du menar?

------------------
Micke & Annas Sajt
micke@micke-anna.nu

Medlem sedan maj 2000269 inlägg
#10

Det är förjobbigt. men kolla på mitt självraderande diskussionsforum..
denna är gammal som gatan, så det lte taskigt skriven =) .. som du ser he hee hhaa aha.. det var när man var nybörjare.


set postertest=databas.execute("SELECT ID FROM fragor")

DO WHILE NOT postertest.eof
bakdate=now-30
idfraga=postertest.fields("ID")

set posterdate=databas.execute("SELECT datum FROM svar WHERE fragaID=" & idfraga & " ORDER BY datum DESC")

IF posterdate.eof=false THEN
svardate=posterdate.fields("datum")
set posterdate=nothing

IF svardate<bakdate THEN
databas.execute("DELETE * FROM fragor WHERE ID=" & idfraga)
databas.execute("DELETE * FROM svar WHERE fragaID=" & idfraga)
END IF

END IF

postertest.movenext

LOOP
Medlem sedan dec. 19996 721 inlägg
#11

Bättre att låta databasen sköta jobbet...

bakdate=now-30
databas.execute("DELETE FROM svar WHERE fragaID IN (SELECT ID FROM fragor where datum < #" & bakdate & "#")
databas.execute("DELETE FROM fragor where datum < #" & bakdate & "#")

Dock tycker jag att att man ska tänka om sin databasdesign om man ställs inför sådana här problem. SQL och relationsdatabaser är till för att man ska kunna "arkivera" alla filmer som kom för vecka 27, utan att man behöver göra ett dugg. Däremot kan man tänka sig att man rensar ur gammal info ibland, om man t.ex. har brist på utrymme.

mvh

------------------
Gunnar Liljas - webbutvecklare
Leon Reklambyrå AB

Medlem sedan maj 2000269 inlägg
#12

Som sagt kompis. Detta var ett gammalt script.

Medlem sedan dec. 19996 721 inlägg
#13

Jadå, jag var med på det. Det var inte meningen att klanka ner på ditt skript. Jag ville bara påvisa en bättre lösning, innan någon började koda för fulla muggar. ;)

------------------
Gunnar Liljas - webbutvecklare
Leon Reklambyrå AB

Medlem sedan mars 2000475 inlägg
#14

hehe :) så vilket skall jag använda?

------------------
Micke & Annas Sajt
micke@micke-anna.nu

257 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)