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:
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.
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")
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 %>
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é?
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>