Just nu i M3-nätverket
Gå till innehåll

Skapa tabeller i Access


Admini

Rekommendera Poster

Hej

Jag skapar tabeller så här:

[color="#0000ff"]CREATE TABLE[/color](Id Counter, Namn Text, Enamn Text, Datum Date);

 

Och det funkar fint, men när jag öppnar tabellen i Access så kan jag se att textfälten är inte obligatoriska men tillåter inte nullängd.

 

Hur kan jag skriva SQL-koden så att de tillåter nullängd?

Tack

 

Länk till kommentar
Dela på andra webbplatser

Men jag får ändå samma resultat

Dessutom så får jag memo istället för text

[color="#0000ff"]CREATE TABLE[/color](Id Counter, Namn Text NULL, Enamn Text NULL, Datum Date NULL);

 

Länk till kommentar
Dela på andra webbplatser

Att skriva som du eller Anjuna är samma sak eftersom NULL sätts som default om inget annat angivits. Vilket du än använder dig av så tillåts nu att fältet inte innehåller något värde. Är det inte det du vill? För att få det som datatypen text måste du ange fältstorlek, exempelvis 255:

[color="#0000ff"]CREATE TABLE[/color] myTable(Id Counter, Namn TEXT(255), Enamn TEXT(255), Datum DATE)

 

 

/OZn

_______________________________________________________

Microchips - De små potatisflingorna du äter allra sist i chipspåsen

 

Länk till kommentar
Dela på andra webbplatser

Men det blir ju det. Kolla på Enamn och Namn...

 

/OZn

_______________________________________________________

Microchips - De små potatisflingorna du äter allra sist i chipspåsen

 

Länk till kommentar
Dela på andra webbplatser

Men det blir ju det. Kolla på Enamn och Namn...

 

Nej det gör det inte!

Det står fortfarande :

Oligatorisk : Nej

Tillåt nollängd: Nej

 

 

[inlägget ändrat 2004-09-17 18:07:18 av Admini]

Länk till kommentar
Dela på andra webbplatser

Blir så för mig i alla fall. Kör du via VBA eller ASP? Om det är ASP kanske kopplingstypen spökar... I mitt test körde jag OLE DB:

 

Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("databasen.mdb")

 

/OZn

_______________________________________________________

Microchips - De små potatisflingorna du äter allra sist i chipspåsen

[inlägget ändrat 2004-09-17 18:24:28 av OZn]

Länk till kommentar
Dela på andra webbplatser

Mikael Ericsson

Jag får precis som OZn säger:

 

Oligatorisk: Nej

Tillåt nollängd: Ja

 

med nedanstående (kört som fråga direkt i Access):

 

[color="#0000ff"]CREATE TABLE[/color] myTable(Id Counter, Namn TEXT(255), Enamn TEXT(255), Datum DATE)

 

i Access 2002, med 2000-filformat.

 

Vilken version av Access och filformat använder du, Admini?

 

[inlägget ändrat 2004-09-17 18:33:51 av Mikael Ericsson]

Länk till kommentar
Dela på andra webbplatser

Jag kör med ASP.

Och jag har exakt som du

Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("databasen.mdb")

 

Ett annat problem:

Hur skapar man Checkbox?

[color="#0000ff"]CREATE TABLE[/color] myTable(Id Counter, check1 Boolean , Datum DATE)

För det här går inte

 

Länk till kommentar
Dela på andra webbplatser

Mikael Ericsson

Skapa checkbox:

 

[color="#0000ff"]CREATE TABLE[/color] myTable (Id Counter, Namn TEXT(255), Enamn TEXT(255), Datum DATE, checkbox bit)

 

Fälttypen bit, alltså.

 

Länk till kommentar
Dela på andra webbplatser

Samma här. Access 2002, FF 2000...

 

/OZn

_______________________________________________________

Microchips - De små potatisflingorna du äter allra sist i chipspåsen

 

Länk till kommentar
Dela på andra webbplatser

Hittade en annan grej du kan testa. Kör följande efter du skapat din tabell:

 

Dim oCat
Set oCat = Server.CreateObject("ADOX.Catalog")
oCat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("databasen.mdb") & ";"

oCat.Tables("myTable").Columns("Namn").Properties("Jet OLEDB:Allow Zero Length").Value = True
oCat.Tables("myTable").Columns("Enamn").Properties("Jet OLEDB:Allow Zero Length").Value = True

Set oCat = Nothing

 

/OZn

_______________________________________________________

Microchips - De små potatisflingorna du äter allra sist i chipspåsen

[inlägget ändrat 2004-09-17 18:52:47 av OZn]

Länk till kommentar
Dela på andra webbplatser

Mm, jag testade i Access2000 och det stämmer att det inte fungerar som det skall där. Tillåt nollängd blir mkt riktigt "Nej".

 

Länk till kommentar
Dela på andra webbplatser

Hittade en annan grej du kan testa. Kör följande efter du skapat din tabell:

 

Jag använder den efter skapandet av tabellen, men det ger samma resultat

 

 

 

Länk till kommentar
Dela på andra webbplatser

Nu har jag t.o.m testat på en burk som har Access 2000 och det stämmer som du sa att det blir Nej på Nollängd men däremot fungerar det om man kör koden jag postade tidigare efter skapandet. Så här ser hela min kod ut:

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("db1.mdb")

Set cRS = conn.execute("[color="#0000ff"]CREATE TABLE[/color] myTable(Id Counter, Namn TEXT(255), Enamn TEXT(255), Datum DATE)")
Dim oCat
Set oCat = Server.CreateObject("ADOX.Catalog")
oCat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db1.mdb") & ";"

oCat.Tables("myTable").Columns("Namn").Properties("Jet OLEDB:Allow Zero Length").Value = True
oCat.Tables("myTable").Columns("Enamn").Properties("Jet OLEDB:Allow Zero Length").Value = True

Set oCat = Nothing

 

/OZn

_______________________________________________________

Microchips - De små potatisflingorna du äter allra sist i chipspåsen

 

Länk till kommentar
Dela på andra webbplatser

Det här är min kod:

 

Set oCat = Server.CreateObject("ADOX.Catalog")
oCat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../dbq/"&strDatabas&".mdb") & ";"
oCat.Tables(nyTabell).Columns(Request.Form("kol_1")).Properties("Jet OLEDB:Allow Zero Length").Value = True
Set oCat = Nothing

 

 

 

Länk till kommentar
Dela på andra webbplatser

Skapa en databas som heter db1 och lägg den i samma katalog som asp-filen och kör sen samma kod som jag postade. Funkar det?

Din kod ser inte helt rätt ut eftersom du inte har fnuttar runt nyTabell. Det borde generera ett felmeddelande.

 

/OZn

_______________________________________________________

Microchips - De små potatisflingorna du äter allra sist i chipspåsen

 

Länk till kommentar
Dela på andra webbplatser

ok, fick du inte ens mitt förslag att fungera (skapa en db och namnge den db1 och köra min kod) så kan jag tyvärr inte komma på något mer. Märkligt att det fungerar med min Access 2000 version dock...

 

/OZn

_______________________________________________________

Microchips - De små potatisflingorna du äter allra sist i chipspåsen

[inlägget ändrat 2004-09-17 22:18:04 av OZn]

Länk till kommentar
Dela på andra webbplatser

(skapa en db1 och lägga in min kod)

 

Då får fel:

ADOX.Columns (0x800A0CC1)

Objektet kunde inte hittas i mängden med det begärda namnet eller numret.

 

[inlägget ändrat 2004-09-17 22:30:51 av Admini]

Länk till kommentar
Dela på andra webbplatser

Låter helt otroligt. Om du lägger det här i en asp-fil

 

[log]<%

Set conn = Server.CreateObject("ADODB.Connection")

conn.Open = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("db1.mdb")

 

Set cRS = conn.execute("CREATE TABLE myTable(Id Counter, Namn TEXT(255), Enamn TEXT(255), Datum DATE)")

Dim oCat

Set oCat = Server.CreateObject("ADOX.Catalog")

oCat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db1.mdb") & ";"

 

oCat.Tables("myTable").Columns("Namn").Properties("Jet OLEDB:Allow Zero Length").Value = True

oCat.Tables("myTable").Columns("Enamn").Properties("Jet OLEDB:Allow Zero Length").Value = True

 

Set oCat = Nothing

%>[/log]

 

Och skapar en ny databas som du döper till db1 och lägger in i samma katalog som asp-filen så får du alltså felmeddelande?

 

/OZn

_______________________________________________________

Microchips - De små potatisflingorna du äter allra sist i chipspåsen

 

Länk till kommentar
Dela på andra webbplatser

Ok, din kod funkar!

Men när jag anpassar den efter mina koder så gör den inte det längre.

 

nån aning varför?

 

Länk till kommentar
Dela på andra webbplatser

Svårt att svara på varför. Då får du nog posta all kod som du har på den sidan så kan jag kolla om jag ser något skumt.

 

/OZn

_______________________________________________________

Microchips - De små potatisflingorna du äter allra sist i chipspåsen

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...