Just nu i M3-nätverket
Jump to content

Skapa tabeller i Access


Admini

Recommended Posts

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]

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...