Avatar billede zetn Nybegynder
04. august 2005 - 23:56 Der er 17 kommentarer og
1 løsning

Oprettelse af tabel i database

Hej, er det muligt vha. ASP at oprette en ny tabel i en access database?
Avatar billede apo Praktikant
05. august 2005 - 00:10 #1
Dim strTabelNavn, strSQL
strTabelNavn = Request.Form("TabelNavn")

strSQL = "CREATE TABLE " & strTabelNavn & " ([Navn] TEXT PRIMARY KEY, [email] TEXT)"
Conn.Execute(strSQL)

Ovenstående opretter en tabel med et navn som du selv definerer (I det her tilfælde via en formular), og med felterne 'Navn' og 'Email'. Du kan selv tilføje flere felter ud fra samme mønster :-)

Jeg har ikke testet det, men det burde virke...
Avatar billede zetn Nybegynder
05. august 2005 - 00:20 #2
Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i CREATE TABLE-sætningen.
Avatar billede zetn Nybegynder
05. august 2005 - 00:21 #3
Det giver den af fejl når jeg prøver det
Avatar billede apo Praktikant
05. august 2005 - 00:28 #4
Hmm... Det er muligt at det i stedet skal skrives således:

Dim strTabelNavn, strSQL
strTabelNavn = Request.Form("TabelNavn")

strSQL = "CREATE TABLE strTabelNavn ([Navn] TEXT PRIMARY KEY, [email] TEXT)"
Conn.Execute(strSQL)
Avatar billede zetn Nybegynder
05. august 2005 - 00:32 #5
Nu virker det som jeg skal bruger det.

strSQL = "CREATE TABLE " & request.querystring("user") & " ([Navn] TEXT PRIMARY KEY, [email] TEXT)"
Conn.Execute(strSQL)

Tak, smid et svar :)
Avatar billede zetn Nybegynder
05. august 2005 - 00:34 #6
(hvordan opretter man et Autonummererings felt?)
Avatar billede apo Praktikant
05. august 2005 - 00:42 #7
Okay, det var godt :-)

Det er et stykke tid siden, jeg har haft rigtig gang i ASP'en, så jeg var lidt i tvivl...

Hmm... Autonummering. Jeg er ikke sikker, men prøv dette:

Dim strTabelNavn, strSQL
strTabelNavn = Request.Form("TabelNavn")

strSQL = "CREATE TABLE strTabelNavn ([ID] INTERGER UNIQUE PRIMARY KEY, [Navn] TEXT, [email] TEXT)"
Conn.Execute(strSQL)

ID burde være din præmære nøgle, og være sat til autonummering

Apo
Avatar billede zetn Nybegynder
05. august 2005 - 00:44 #8
Får

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i feltdefinitionen.
/test/test.asp, line 53
Avatar billede apo Praktikant
05. august 2005 - 00:44 #9
Hov, jeg omskriver det lige til det der virkede hos dig:

Dim strTabelNavn, strSQL
strTabelNavn = Request.Form("TabelNavn")

strSQL = "CREATE TABLE " & Request.QueryString("user") & " ([ID] INTERGER UNIQUE PRIMARY KEY, [Navn] TEXT, [email] TEXT)"
Conn.Execute(strSQL)
Avatar billede apo Praktikant
05. august 2005 - 00:45 #10
Dim strTabelNavn, strSQL
Prøv:

strTabelNavn = Request.Form("TabelNavn")

strSQL = "CREATE TABLE " & Request.QueryString("user") & " ([ID] INTERGER UNIQUE NOT NULL, [Navn] TEXT, [email] TEXT)"
Conn.Execute(strSQL)
Avatar billede apo Praktikant
05. august 2005 - 00:46 #11
... Og slet lige 'prøv:' inde du forsøger ;-)
Avatar billede zetn Nybegynder
05. august 2005 - 00:47 #12
:) jeg kopiere kun selve det ved IDet og sætter ind i det der virker... Får dog stadig samme fejl.
Avatar billede apo Praktikant
05. august 2005 - 00:50 #13
Jeg har opdaget en fejl :-/ Prøv:

Dim strTabelNavn, strSQL
strTabelNavn = Request.Form("TabelNavn")

strSQL = "CREATE TABLE " & Request.QueryString("user") & " ([ID] INTEGER UNIQUE PRIMARY KEY, [Navn] TEXT, [email] TEXT)"
Conn.Execute(strSQL)
Conn.Close '<-- Jeg har tilføjet en lukning af databasen (God skik)

Jeg havde skrevet 'INTERGER', men det hedder 'INTEGER*. Nu må det sq da snart virke :-D
Avatar billede apo Praktikant
05. august 2005 - 01:03 #14
Har du fået det til at virke?
Avatar billede zetn Nybegynder
05. august 2005 - 08:41 #15
Hej, mit net gik ned igår, så kunne ikke komme på igen.

Den opretter bare ID som et tal felt, men ingen autonummenering. :)
Avatar billede apo Praktikant
05. august 2005 - 12:25 #16
Hmm... Jeg er ikke helt sikker på at man kan oprette autonummering via SQL. Jeg faldt over et spørgsmål her på E, hvor der var en der skrev at det _ikke_ kan lade sig gøre. En anden skrev, at nedenstående skulle virke (Med COUNTER i stedet for UNIQUE):

<%
Dim strTabelNavn, strSQL
strTabelNavn = Request.Form("TabelNavn")

strSQL = "CREATE TABLE " & Request.QueryString("user") & " ([ID] INTEGER COUNTER PRIMARY KEY, [Navn] TEXT, [email] TEXT)"
Conn.Execute(strSQL)
Conn.Close
%>

Hvis ikke det virker, tror jeg ikke det kan lade sig gøre.

Apo
Avatar billede zetn Nybegynder
05. august 2005 - 12:41 #17
Hej Apo,

Jeg har lige sadt og leget lidt med det, og det kan gøres udelukkende med counter, så det kommer til at ligne:

strSQL = "CREATE TABLE 123456789 ( "

strSQL = strSQL & "[ID] COUNTER"

strSQL = strSQL & ")"

Conn.Execute(strSQL)

Conn.Close
Set Conn = Nothing


Tak for hjælpen.
Avatar billede apo Praktikant
05. august 2005 - 13:02 #18
Så lykkedes det. Det er nok en god idé, at sætte ID til PRIMARY KEY...

Velbekomme, og tak for points :-)

Apo
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