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

Skapa tabeller i Access


Admini

Rekommendera Poster

Här kommer koden om du har tiden:

nyTabell=Request.Form("namn")
Skapa="[color="#0000ff"]CREATE TABLE[/color] "& nyTabell &" ("
skapa=skapa & " Id Counter, "
For i=1 To Request.Form("antal")
If Request.Form("typ_"&i&"") = "Text" Then
langd="(255)"
End If
skapa=skapa & " "&Request.Form("kol_"&i&"")&" "&Request.Form("typ_"&i&"")&langd&", "langd=""
Next
skapa=skapa & " Datum Date);"

Conn.Execute skapa

Dim oCat
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

 

Tabellen skapas utan problem, men det är som sagt de där felmedelandet på den här raden:

oCat.Tables(nyTabell).Columns ....

 

[inlägget ändrat 2004-09-17 23:44:00 av Admini]

Länk till kommentar
Dela på andra webbplatser

Sitter och tittar på en annan lösning men i vilket fall som helst så undrar jag bara var Request.Form("kol_1") är för typ av kolumn. Är den vid skapandet av tabellen ett textfält? Vad händer om du tar bort Request.Form("kol_1") och ersätter det med en text-kolumn som du vet skapas? Exempelvis:

 

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

 

/OZn

_______________________________________________________

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

 

Länk till kommentar
Dela på andra webbplatser

Ok, men då tror jag det bara är att du försöker sätta attributet på en kolumn som inte är av typen text. Testa följande:

 

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

For i=1 To Request.Form("antal")
If Request.Form("typ_"&i&"") = "Text" Then

oCat.Tables(nyTabell).Columns(Request.Form("typ_"&i&"")).Properties("Jet OLEDB:Allow Zero Length").Value = True

End If
Next

Set oCat = Nothing

 

/OZn

_______________________________________________________

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

[inlägget ändrat 2004-09-18 00:16:24 av OZn]

Länk till kommentar
Dela på andra webbplatser

Jag kör det här efter att jag skapat tabellen

 

For i=1 To Request.Form("antal")
If Request.Form("typ_"&i&"") = "Text" Then
Dim oCat
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_"&i&"")).Properties("Jet OLEDB:Allow Zero Length").Value = True
Set oCat = Nothing
End If
Next

 

samma fel

 

Länk till kommentar
Dela på andra webbplatser

Ok, gör en spårutskrift så du ser att det i alla fall är rätt kolumn och att den är av rätt typ:

 

For i=1 To Request.Form("antal")
If Request.Form("typ_"&i&"") = "Text" Then
[color="#ff0000"][/color]'Skriv ut namn och typ av kolumnen
kName=Request.Form("kol_"&i&"")
kType=Request.Form("typ_"&i&"")
Response.Write("Namn: "&kName&", Typ: "&kType&"<br>")

Dim oCat
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(kName).Properties("Jet OLEDB:Allow Zero Length").Value = True
Set oCat = Nothing
End If
Next

 

/OZn

_______________________________________________________

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

 

Länk till kommentar
Dela på andra webbplatser

Hej igen

Nu funkar det helt plötsligt

 

oCat.Tables(nyTabell).Columns(""&Request.Form("kol_"&i&"")&"").Properties ....

 

Men endast för textkolumner.

Hur gör jag för PM och andra typer av kolumn?

 

Nu får jag inget felmeddelande i alla fall

[inlägget ändrat 2004-09-18 00:41:14 av Admini]

Länk till kommentar
Dela på andra webbplatser

Missade din Request.Form i dina tidigare poster. Självklart måste man sätta fnuttar och &-tecken precis som du gjorde ...Columns(""&Request.Form("kol_"&i&"")&"")....

 

När det gäller andra typer så är det väl bara PM och Hyperlänk som du kan sätta Nollängd på. Som det är nu så kollar du om Request.Form("typ_"&i&"") innehåller texten "Text" så då lägger du bara till ett villkor till i if-satsen med den text som PM har, exempelvis:

 

If Request.Form("typ_"&i&"") = "Text" or Request.Form("typ_"&i&"") = "PM" Then

 

 

/OZn

_______________________________________________________

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

 

Länk till kommentar
Dela på andra webbplatser

Pust, det är äntligen klart nu då? ;)

Då är det väl bara lite tillsnyggning kvar, exempelvis kan du utnyttja det connection-namn du använder när du skapar din tabell. Om den exempelvis heter conn så kan du ändra till:

oCat.ActiveConnection = conn

Man kan även bygga hela tabellen med Server.CreateObject("ADOX.Table") men det är en annan historia :)

 

/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...