Avatar billede dustbunny Nybegynder
22. august 2001 - 09:57 Der er 10 kommentarer og
2 løsninger

ok jeg gir op...lav det for mig! :)

Jeg skal ha lavet et script der hvert år går ind og laver en ny tabel i en database og kalder den et navn + year(now)...
Jeg har prøvet lidt af hvert...men den kommer med en masse fejl meldinger :/

<% 
ThisYear = year(now)

If ThisYear > 2000 Then

DIM strSQL
    strSQL = \"CREATE TABLE Birthdays& ThisYear (\" &_
            \"id Counter Primary Key, \" &_
            \"first_name text(50) NOT NULL, \" &_
            \"last_name text(50) NOT NULL, \" &_
            \"date_of_birth text(50) NOT NULL\" &_
            \");\"

DIM Conn
    SET Conn = Server.CreateObject(\"ADODB.Connection\")
    Conn.Open \"Driver={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"/statistik.mdb\")
    Conn.Execute (strSQL)

End If
%>

Fejl:
Microsoft OLE DB Provider for ODBC Drivers fejl \'80040e14\'

[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i CREATE TABLE-sætningen.

/test.asp, linje 17


Det er hvad jeg har sat og leget med...ved godt det ikke kommer til at virke...men bare for lige at se om det kunne lade sig gøre :P

Håber det er nok point...har ingen ide om hvor svært det er eller noget :)
Avatar billede oswald Nybegynder
22. august 2001 - 09:59 #1
Du mener vel.

    strSQL = \"CREATE TABLE Birthdays\" & ThisYear & \" (\" &_
            \"id Counter Primary Key, \" &_
            \"first_name text(50) NOT NULL, \" &_
            \"last_name text(50) NOT NULL, \" &_
            \"date_of_birth text(50) NOT NULL\" &_
            \");\"
Avatar billede dustbunny Nybegynder
22. august 2001 - 10:10 #2
jeps nu virker det da...
MEN...hvordan går jeg så ind og tjekker om tabellen allerede findes?
Avatar billede oswald Nybegynder
22. august 2001 - 10:13 #3
Den simpleste måde er at lave en forspørgsel fra tabellen og så fange fejlen. Noget i stilen med. (Jeg er vant til at skrive VB så der er måske en lille forskel i hvordan fejlhåndtering laves)

on error resume next
Conn.Execute (\"select top 1 * from Birthdays\" & ThisYear)
if err.mnumber <> 0 then
response.write \"Findes ikke\"
end if
on error goto 0
Avatar billede dustbunny Nybegynder
22. august 2001 - 10:24 #4
uhmm...nu er jeg helt lost...?
Hvor vil du sætte det ind...
Det jeg mener er at den skal tjekke om der er en tabel der hedder Birthdays2001 feks...hvis den findes skal den bare lade den være...
Hvis den ikke findes skal den så oprettes...
Avatar billede oswald Nybegynder
22. august 2001 - 10:30 #5
Den simpleste måde er at ændre din kode til følgende der vil fange den fejlt du ellers ville få hvis du prøver at oprette den samme tabel to gange.

<% 
ThisYear = year(now)

If ThisYear > 2000 Then

DIM strSQL
    strSQL = \"CREATE TABLE Birthdays\" & ThisYear & \" (\" &_
            \"id Counter Primary Key, \" &_
            \"first_name text(50) NOT NULL, \" &_
            \"last_name text(50) NOT NULL, \" &_
            \"date_of_birth text(50) NOT NULL\" &_
            \");\"

DIM Conn
    SET Conn = Server.CreateObject(\"ADODB.Connection\")
    Conn.Open \"Driver={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"/statistik.mdb\")
\'---
on error resume next
\'---
    Conn.Execute (strSQL)
\'---
on error goto 0
\'---
End If
%>

Avatar billede dr-kermit Nybegynder
22. august 2001 - 10:34 #6
Hvorfor lave det så besværligt....

Hvorfor ikke bare have to tabeller en med årstal og en med fødseldage..

tabel 1 :

ID      YEAR
0        1900
1        1901
2        1902
osv. osv

Tabel 2

ID      Name      FK_Year      Date
0        Kenneth  0            19-05
1        Peter    2            12-6
2        Lise      1            24-12

Du kunne så også lave en tabel til datoer så du ungå redundant data, men det er op til dig sel.

Mvh Kenneth Nielsen

Avatar billede dustbunny Nybegynder
22. august 2001 - 10:40 #7
heh..
ehmm...hele problemet ligger i at jeg laver en statistik over nogle sider...
Så nå vi kommer til år 2002 skal den automatisk lave en ny tabel der hedder 2002...
Slet ikke noget med fødselsdage eller noget :P
Det er bare et eksempel fra et senere spørgsmål jeg havde....
Avatar billede dustbunny Nybegynder
22. august 2001 - 10:41 #8
men jeg kan godt se ideen i det du skriver...:/
Avatar billede oswald Nybegynder
22. august 2001 - 10:42 #9
OK. Jeg havde også undret mig lidt over at du ville gemme de samme personers fødselsdage i forskellige år, da man jo må gå udfra at de er det samme fra år til år;).
Avatar billede oswald Nybegynder
22. august 2001 - 10:45 #10
Hvis du gemmer statistisk data så kan dine tabeller godt blive meget store og jo større dine tabeller bliver jo langsommere bliver dine index\'er, så det er ikke en helt dårlig ide at lave flere tabeller (Måske en pr. måned).
Avatar billede dustbunny Nybegynder
22. august 2001 - 10:47 #11
oswald >>
Ser lige om jeg kan få det til at virke som det skal og så får du lige nogle point...
Avatar billede dustbunny Nybegynder
22. august 2001 - 10:51 #12
hmm...det skal jeg nok få til at virke...
tak begge 2 for jeres tid...:P
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
Kurser inden for grundlæggende programmering

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