Avatar billede torbenmelander Nybegynder
13. november 2002 - 16:54 Der er 6 kommentarer og
1 løsning

ADOX - tilføje kolone til en eksisterende tabel

Jeg leder efter et stykke kode der kan tilføje en kolone til en eksisterende tabel. Jeg har roddet med dette de sidste par timer og er ved at være rigtig godt træt af det ... så derfor de "mange" point :)

Jeg har prøvet med noget ala det her:

Dim objADODBConnection
Set objADODBConnection = Server.CreateObject("ADODB.Connection")
objADODBConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strPathToDB & "database.mdb"

Dim objADOXDatabase
Set objADOXDatabase = Server.CreateObject("ADOX.Catalog")
objADOXDatabase.ActiveConnection = objADODBConnection

Dim objColumn
Set objColumn = Server.CreateObject("ADOX.Column")

objColumn.Name = "NyKolone"
objColumn.Type = adVarWChar
Set objColumn.ParentCatalog = objADOXDatabase
objColumn.Properties.Refresh
objColumn.DefinedSize = 255
objColumn.Attributes = 3 'adColFixed + adColNullable

objADOXDatabase.Tables("EksisterendeTabel").Columns.Append objColumn

Set objColumn = Nothing

objADODBConnection.Close
Set objADOXDatabase = Nothing
Set objADODBConnection = Nothing
Avatar billede torbenmelander Nybegynder
13. november 2002 - 19:09 #1
Som sædvanlig er der ikke nogen hjælp at hente her ...

Så jeg måtte jo selv rodde videre med det og har fundet ud af at linien

objColumn.Properties.Refresh

var hovedfejlen i ovenstående stykke kode ...
Avatar billede eagleeye Praktikant
13. november 2002 - 19:14 #2
Jeg vil gætte på det fordi den ikke kender adVarWChar konstanten, jeg har prøvet scriptet og får denne fejl:

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

Jeg har prøvet at lave et stykke kode som skulle finde ud af hvilken værdi der var tal om. Ved at ligge fra olp til 256 kolonner i tabelle mius dem som måtte fejle. Med type fra 0->255. Så skulle iden være man kunne åbne tabellen og se hvilekn kolonne der var af typen tekst/text og dermed havde tallet. Det har vist sig fra 22->255 er alle blevet af typen tekst, samt 0,1 og 15.

Her er koden som jeg prøvede med:



<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
Dim objADODBConnection
Set objADODBConnection = Server.CreateObject("ADODB.Connection")
objADODBConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strPathToDB & "database.mdb"

Dim objADOXDatabase
Set objADOXDatabase = Server.CreateObject("ADOX.Catalog")
objADOXDatabase.ActiveConnection = objADODBConnection


on error resume next
for i = 0 to 255
  Dim objColumn
  Set objColumn = Server.CreateObject("ADOX.Column")

  objColumn.Name = "NyKolone"  & i
  objColumn.Type = i 'adVarWChar
  objColumn.Properties.Refresh
  objColumn.DefinedSize = 255
  objColumn.Attributes = 3 'adColFixed + adColNullable

  Set objColumn.ParentCatalog = objADOXDatabase

  objADOXDatabase.Tables("EksisterendeTabel").Columns.Append objColumn
  Set objColumn = Nothing
next

objADODBConnection.Close
Set objADOXDatabase = Nothing
Set objADODBConnection = Nothing
Avatar billede torbenmelander Nybegynder
13. november 2002 - 19:22 #3
Den kender ikke konstanten ved dig fordi du mangler sætningen
<!-- METADATA TYPE="typelib" FILE="C:\Program Files\Common Files\System\ado\msado15.dll" -->
Avatar billede torbenmelander Nybegynder
13. november 2002 - 19:25 #4
I C:\Program Files\Common Files\System\ado\adovbs.asp kan du se at værdien er 202 ... Så lærte du måske også lidt :)
Avatar billede eagleeye Praktikant
13. november 2002 - 19:30 #5
ok.. :) jeps det gjorde jeg....

men min fejler ikke i linien:  objColumn.Properties.Refresh
Avatar billede torbenmelander Nybegynder
13. november 2002 - 19:33 #6
Hmm, det gjorde min heller ikke ... den fejlede når jeg prøvede på at sætte DefindedSize el. Attributes bagefter ... men det var pga. objColumn.Properties.Refresh
Avatar billede torbenmelander Nybegynder
13. november 2002 - 19:35 #7
Tænk sig at jeg kunne lære nr. 2 på exp.dk noget ;-) hehe
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