webForumDet fria alternativet

Syntaxfel i CREATE TABLE

7 svar · 310 visningar · startad av m_soderlund

m_soderlundMedlem sedan sep. 20026 425 inlägg
#1

Jag använder koden nedan för att skapa en tabell, men det vill sig ej riktigt.

<%
Set Cn = Server.CreateObject("ADODB.Connection")
Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db_tst_.mdb")

Cn.Execute "CREATE TABLE tbl_tst" &_
           "(Id int primary key," & _
           "Firstname char," & _
           "Lastname char," & _
           "Addrinfo char," & _
           "Street char," & _
           "Streetnumber char," & _
           "Streetalphanumber char," & _
           "City char," & _
           "Postalcode char," & _
           "Phonenumber char," & _
           "Altphonenumber char," & _
           "Email char," & _
           "Civicnr char," & _
           "Subsnrdepotnr char," & _
           "Curefnumber char," & _
           "Prod char," & _
           "Prod_info varchar," & _
           "Agentid int," & _
           "Paymenttype int," & _
           "Orderdate date(yyyymmdd)," & _
           "Comments varchar," & _
           "Agentname char," & _
           "Campaign char);"

Cn.Close : Set Cn = Nothing
%>

Felmeddelandet blir:

Microsoft JET Database Engine fel '80040e14'

Syntaxfel i CREATE TABLE-instruktion.

/Default.asp, rad 9

Vad kan det vara för fel?

JosefMedlem sedan mars 20023 561 inlägg
#2

Måste man inte ange längd på char´en?

m_soderlundMedlem sedan sep. 20026 425 inlägg
#3

Nope, det är inte felet. :(

m_soderlundMedlem sedan sep. 20026 425 inlägg
#4

Ja jösses - ännu mer problem. Jag fattar ingenting - allt det här fungerade hemma! :(

Jag använder samma kod som ovan och fick då felmeddelandet som följer i första inlägget jag postade här. Nu får jag detta felmeddelande i stället:

Microsoft JET Database Engine fel '80040e09'

Definitionen av 'tbl_tst' kan inte ändras eftersom databasen är skrivskyddad,

/Default.asp, rad 10

Saken är den att databasen ej är skrivskyddad heller!

<%
Dim Cn ,SQL

Set Cn = Server.CreateObject("ADODB.Connection")
'Cn.Open(Application("ConnectionString"))
Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db_.mdb")

Cn.Execute("CREATE TABLE tbl_tst(" & _
           "Addrinfo char," & _
           "Street char," & _
           "Streetnumber char," & _
           "Streetalphanumber char," & _
           "City char," & _
           "Postalcode char," & _
           "Phonenumber char," & _
           "Altphonenumber char," & _
           "Email char," & _
           "Civicnr char," & _
           "Subsnrdepotnr char," & _
           "Curefnumber char," & _
           "Prod char," & _
           "Prod_info char," & _
           "Agentid int," & _
           "Paymenttype int," & _
           "Orderdate char," & _
           "Comments char," & _
           "Agentname char," & _
           "Campaign char);")

Cn.Close : Set Cn = Nothing

%>
crisse6Medlem sedan dec. 20002 526 inlägg
#5

hmm.. och rattigheter a allt osa? Testa att starta om datorn kanske? Har hant for mig forut nar man mixtrar sadar.. vet inte? :)

m_soderlundMedlem sedan sep. 20026 425 inlägg
#6

Jag spinner vidare, nu har jag denna kod och problemet är:

Microsoft OLE DB Provider for ODBC Drivers fel '80040e14'

[Microsoft][ODBC SQL Server Driver][SQL Server]Violation of PRIMARY KEY constraint 'PK__orders_k5_52003__7720AD13'. Cannot insert duplicate key in object 'orders_k5_52003'.

/cd_web_1/order.asp, rad 233

Koden, rad 233 markerad:

If Rs.EOF Then 'tabellen finns ej
          Rs.Close : Set Rs = Nothing

          'skapa tabellen och nödvändiga fält
          oConn.Execute("CREATE TABLE " & tbl_name & "(" &_
           "Firstname char(200)," & _
           "Lastname char(200)," & _
           "Addrinfo char(200)," & _
           "Street char(200)," & _
           "Streetnumber char(200)," & _
           "Streetalphanumber char(200)," & _
           "City char(200)," & _
           "Postalcode char(200)," & _
           "Phonenumber char(50) primary key," & _
           "Altphonenumber char(200)," & _
           "Email char(200)," & _
           "Civicnr char(200)," & _
           "Subsnrdepotnr char(200)," & _
           "Curefnumber char(200)," & _
           "Prod char(200)," & _
           "Prod_info varchar(500)," & _
           "Agentid int," & _
           "Paymenttype int," & _
           "Orderdate char(200)," & _
           "Comments varchar(500)," & _
           "Agentname char(200)," & _
           "Campaign char(200))")

Else 'tabellen existerar
          [b]oConn.Execute[/b]("INSERT INTO " & tbl_name & "" & _
                     "(Firstname,Lastname,Addrinfo,Street,Streetnumber,Streetalphanumber,City,"  &_
                     "Postalcode,Phonenumber,Altphonenumber,Email,Civicnr,Subsnrdepotnr,Curefnumber," & _
                     "Prod,Prod_info,Agentid,Paymenttype,Orderdate,Comments,Agentname,Campaign)" & _
                     "VALUES('" & strFirstName & "','" & strLastname & "','" & strAddrinfo & "','" & strStreet & "'," & _
                     "'" & strStreetnr & "','" & strstreetAlphanumber & "','" & strCity & "','" & strPostalcode & "'," & _
                     "'" & strPhonenumber & "','" & strAlthomephone & "','" & strEmail & "','_Civicnr_'," & _
                     "'" & strSubsNrDepotNr & "','" & strCureFNr & "','" & strProductName & "','_Produktinfo'," & _
                     "'" & strAgentid & "','" & intPaymentid & "','" & Now() & "','" & strComments & "'," & _
                     "'" & strAgentName & "','Kampanj')")
End If

Jag antar att felet ligger i "Phonenumber char(50) primary key,", men får ej till det. Eller är det den där buggen i SQL Server?

LarsGMedlem sedan dec. 200012 464 inlägg
#7

Vad menar du med

buggen i SQL server

Vilka värden skickar du in in phonestr och hur kontrollerar du att dom är unika?

Att använda char(50) som datatyp för ett telefonnummer ser konstigt ut. varchar(15) borde räcka.

Hela upplägget med att kontrollera om en tabell finns och eventuellt skapa den är fel. Det verkar som om du skapar flera tabeller med samma struktur vilket känns fel.

Använd en tabell.

m_soderlundMedlem sedan sep. 20026 425 inlägg
#8

+ om jag söker på Google på violation of primary key och kollar runt lite bland sökresultaten så kommer man fram till att det finns en bugg i SQL Server

+ ej testat med varchar(15) än

+ jag tycker också att hela upplägget är helt fel, men företaget som anställt mig satte ihop en temporär lösning med webbsidor i stället för ett program (på grund av kostnaden) och det går inte bra att komma runt det opraktiska i systemet eftersom allt är så oerhört opraktiskt och även slarvigt kodat. :(

Att jag använder flera tabeller är även det lite skumt tycker jag, men min chef vill inte ha en sisådär 100000 poster i databasen/år, varpå han ville dela upp varje månads försäljning på en tabell för den månaden - en tabell som skapas dynamiskt.

Tack så länge Lars.

127 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)