KolsyraMedlem sedan sep. 201316 inlägg Hej,
jag har blivit ombedd att försöka hjälpa en förening med deras statistikdatabas (Access) men det var så förbaskat länge sen jag gjorde någon webprogramering nu.
Så jag tänkte höra mig för här om en grej jag går bet på.
Dom har en databas där dom matar in golfrundor bana för bana där dom nu vill kunna lägga in tävlingar som spelades innan dom byggde detta system. Problemet är att dom har byggt upp systemet (och vill ha det så) med en databas struktur som ser ut så här:
resultat_2006.mdb
resultat_2007.mdb
resultat_2008.mdb osv
i admin.asp har dom en funktion som ser ut så här:
<%
strseason = Request.Querystring("Season")
curryear = Year(now)
If strseason = "" Then
strseason = curryear
Else
strseason = strseason
End If
%>
Funktionen för att skapa en tävling ser ut så här:
<% If Request.Querystring("Do") = "SaveComp" then
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/resultat_"& strseason &".mdb")
CompName = Request.Form("CompName")
Rounds = Request.Form("Rounds")
CompDate = Request.Form("CompDate")
Conn.Execute("Insert into tbl_comp(CompName,Rounds,CompDate) VALUES ('"& CompName &"','"& Rounds &"','"& CompDate &"')")
response.redirect "admin.asp?Page=AddComp&Mess=Tävlingen inlagd i databasen!"
End If %>
Datumet i CompDate skrivs in med följande formatering: 2010-09-06
Min fråga är nu om det går att använda sig av årtalet i CompDate för att på så sätt tala om vilken databas resultatet ska sparas i? I detta exempel skulle det då bli att det skulle sparas i resultat_2010 enligt exempelformateringen ovan.
Är det något jag missat i all text så är det bara att fråga så ska jag försöka svara så tydligt jag kan.
Hoppas att någon vänlig själ här kan hjälpa mig att få till detta.
Tack på förhand
@ndersMedlem sedan juni 200032 969 inlägg Hej!
Typ nåt sånt härnt:
CompDate = Request.Form("CompDate")
if isdate(CompDate) then
' CompDate är ett giltigt datum
iYear = Year(CDate(CompDate))
else
' CompDate är inte ett giltigt datum
end if
...
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/resultat_" & iYear & ".mdb")
Välkommen hit! :bire
mvh
KolsyraMedlem sedan sep. 201316 inlägg Hej Anders,
tack för ett snabbt svar. Dock får jag det inte att fungera, det hamnar i resultat_2013 iaf.
Vet inte om jag gjort rätt så jag klistrar in koden här.
<% If Request.Querystring("Do") = "SaveComp" then
Set Conn = Server.CreateObject("ADODB.Connection")
CompDate = Request.Form("CompDate")
if isdate(CompDate) then
' CompDate är ett giltigt datum
iYear = Year(CDate(CompDate))
else
' CompDate är inte ett giltigt datum
end if
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/resultat_"& iYear &".mdb")
CompName = Request.Form("CompName")
Rounds = Request.Form("Rounds")
CompDate = Request.Form("CompDate")
Conn.Execute("Insert into tbl_comp(CompName,Rounds,CompDate) VALUES ('"& CompName &"','"& Rounds &"','"& CompDate &"')")
response.redirect "admin.asp?Page=AddComp&Mess=Tävlingen inlagd i databasen!"
End If %>
vad matar du in i CompDate?
KolsyraMedlem sedan sep. 201316 inlägg i CompDate matar jag in datumet i formatet 2013-09-06
Om du matar in 2013 så borde den ju läggas in i 2013 access databasen ;)
<%
If Request.Querystring("Do") = "SaveComp" then
Set Conn = Server.CreateObject("ADODB.Connection")
CompDate = Request.Form("CompDate")
If isdate(CompDate) Then
CompDate = CDate(CompDate)
Else
CompDate = now()
End If
iYear = Year(CompDate)
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/resultat_" & iYear & ".mdb")
CompName = Request.Form("CompName")
Rounds = Request.Form("Rounds")
CompDate = Request.Form("CompDate")
Conn.Execute("Insert into tbl_comp(CompName,Rounds,CompDate) VALUES ('"& CompName &"','"& Rounds &"','"& CompDate &"')")
response.redirect "admin.asp?Page=AddComp&Mess=Tävlingen inlagd i databasen!"
End If
%>
borde fungera ju, dock så få du kanske ha ett max datum (så man inte kan kanske mata in 1970 för du har väl inte en databas för alla år?
KolsyraMedlem sedan sep. 201316 inlägg Ja absolut skrivs det in i resultat_2013.mdb om man skriver 2013-09-06 men problemet är att även när jag skriver 2010-02-07 så skrivs det in i resultat_2013.mdb istället för resultat_2010.mdb.
Har prövat att kopiera din kod ovan och fortfarande samma problem deessvärre, har du någon annan idé?
rhdfMedlem sedan okt. 2007446 inlägg Om "databasstrukturen" baseras på separata databaser så misstänker jag att du har en spännande tid framför dig.
Särskilt när du upptäcker att man stavat fel på en spelares namn ett år eller liknande :)
Jag noterar även att datumet för tävlingarna verkar lagras som text.
Jag har många "fina" minnen av såna där system..
Jag antar att man får skapa en kopia med alla tabeller för varje år och ladda upp, eller finns en funktion som skapar en ny databas. Det verkar ju inte finnas kod för att kolla om den databas man vill öppna existerar
Förresten, hur gör man om man vill få fram statistik som spänner över flera år?
;)
Den där strukturen skapar med andra ord en massa praktiska problem jämfört med om man skulle slå samman samtliga till en enskild databas (och kanske flytta över den till MySQL eller liknande)
<%
If Request.Querystring("Do") = "SaveComp" then
CompDate = Request.Form("CompDate")
If IsDate(CompDate) Then
CompDate = CDate(CompDate)
Else
CompDate = now()
End If
iYear = Year(CompDate)
Response.Write iYear
End If
%>
<form action="index.asp?do=SaveComp" method="post">
<input type="text" value="2010-01-01" name="CompDate">
<input type="submit">
</form>
ge mig 2010 (http://voigt.se/sandbox/wf/kolsyra)
prova sätt
session.lcid = 1053
kanske?
Även jag håller med rhdf, det hade varit enklare att ha en databas och filtrera ut med datum endast
KolsyraMedlem sedan sep. 201316 inlägg @voigtann! session.lcid = 1053 gjorde susen
@rhdf Jag har tyvärr inte lyckats övertala dom till att ha allt i samma databas, jag har också lekt med tanken på statistik över fler år.