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

Skapa nytt fält i MSACCESS-tabell med parameteriserad Query


Roger W

Rekommendera Poster

Se nedan

 

textv = "Text" 'Fälttyp

namnv = "NAGOTNAMN" 'Namn på kolumnen

Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
OBJdbConnection.open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=" & Session("trointpath")
Set objCmd  = Server.CreateObject("ADODB.Command")
Set AddFieldToTable   = Server.CreateObject("ADODB.Recordset")
Set objCmd.ActiveConnection = ObjdbConnection
objCmd.CommandText = "Alter Table Setup add COLUMN ? ?(?)"
objCmd.CommandType = adCmdText

 

Set PARAMETER3 = Objcmd.CreateParameter("NAMN", adVarChar,adParamInput,255,0)
objCmd.Parameters.Append PARAMETER3
PARAMETER3.Value = namnv    
        
Set PARAMETER2 = Objcmd.CreateParameter("TYP", adVarChar,adParamInput,255,0)
objCmd.Parameters.Append PARAMETER2
PARAMETER2.Value = textv                
        
Set PARAMETER1 = Objcmd.CreateParameter("VARDE", adInteger,adParamInput)
objCmd.Parameters.Append PARAMETER1
PARAMETER1.Value = 255            
        
AddFieldToTable.Open objCmd

 

DBMS: MS Access

Jag har suttit hela kvällen och fajtats med koden ovan och börjar nu att ge upp. Jag börjar tro att det inte går att lägga till en kolumn i en MS Access-tabell med parameteriserade queries. Det enda som händer är att jag får följande meddelande:

 

Microsoft JET Database Engine error '80040e14'

Syntaxfel i fältdefinition.

/ti_org/trointsys/TINT/new1.asp, line 36

 

Fyller jag i värden direkt i objCmd.CommandText = "Alter Table Setup add COLUMN NAGOTNAMN Text(100)" fungerar det som det skall. Alla andra parameteriserade Queries jag har (hundratals) fungerar som de skall.

 

Hittar märkligt lite på Internet. Testat allt jag hittat utan success. Kunskapen sviktar. Någon som kan leda mig rätt?

 

PS Jodå, jag vet att MS Access är öken som databas. Men jag äger inte produkten, och kan inte byta. Bara att gilla läget..

 

 

Roger
      

Länk till kommentar
Dela på andra webbplatser

 

"You can add parameters to any of the following types of queries:
 * Select
 * Crosstab
 * Append
 * Make-table
 * Update"  :(

 

 

 

Glömde skriva att SQL-anropet som alltså inte vill riktigt kommer från en ASP-VBSCRIPT - sida..

Länk till kommentar
Dela på andra webbplatser

Jo, förstod det men jag tror (baserat på ovan länk) att access-motorn inte tillåter parameteriserade frågor för verbet Alter.

 

Verkar alltså tyvärr som att du med asp-kod får bygga upp kommandosträngen.

(plus då naturligtvis skapa de indata/säkerhetskontroller som parameteriseringen annars hade hanterat åt dig).

Eller ställa dig frågan om du verkligen skall hantera dessa tabelländringar så dynamiskt/programmatiskt...

Länk till kommentar
Dela på andra webbplatser

Jo, förstod det men jag tror (baserat på ovan länk) att access-motorn inte tillåter parameteriserade frågor för verbet Alter.

 

Verkar alltså tyvärr som att du med asp-kod får bygga upp kommandosträngen.

(plus då naturligtvis skapa de indata/säkerhetskontroller som parameteriseringen annars hade hanterat åt dig).

Eller ställa dig frågan om du verkligen skall hantera dessa tabelländringar så dynamiskt/programmatiskt...

 

Jag har gett upp paramaterspåret..

 

Detta håller på att gå mig på nerverna..

 

Jag gjorde om hela skiten till:

 

<% On Error Resume Next

 

typ="Tal"

fnamn="TESTFALT"

storl=150

 

Session("p_path") = "Sökväg till Accessdatabasen"

 

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

OBJdbConnection1.open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=" & Session("p_path")

        

        If typ = "Tal" Then

        response.write("Tal<br>")

            Qaddfield = "Alter Table Setup add COLUMN "&fnamn&" Number"

            else ' EJ tal     

            Qaddfield= "Alter Table Setup add COLUMN "&fnamn&" "&typ&" ("&storl&")"

        end if

        AddFieldToTable=OBJdbConnection1.Execute(Qaddfield)

%>

 

Den här löjliga koden ger mig följande felmeddelande:

 

Microsoft JET Database Engine error '80004005'

Det finns för många fält definierade.

/ti_org/trointsys/TINT/singel.asp, line 29

 

Tar jag bort "On Error Resume next" högst uppe på sidan försvinner felmeddelandet, men det händer inget i tabellen..

 

Har någon skarpa ögon och kan se/förstår vad det är som händer?

 

R

Länk till kommentar
Dela på andra webbplatser

Om du skriver ut Qaddfield ser den då korrekt ut och om du kopierar den texten och kör den i skriptet lirar det då?

Länk till kommentar
Dela på andra webbplatser

Om du skriver ut Qaddfield ser den då korrekt ut och om du kopierar den texten och kör den i skriptet lirar det då?

 

Alter Table Setup add column TESTNAMN Number resp Alter Table Setup add column TESTNAMN Text(50)

dvs ser ut som den skall göra..

 

Jag skall skriva om koden och testa. Har varit med om det förr. Ägnat dagar åt felsökning och till sist hittar man nåt löjligt skitfel. Hade man skrivit om hade det tagit ett par timmar.. Detta HAR fungerat och SKALL fungera. Men jag ser inte felet.

 

Om man hade bra debuggingverktyg att jobba med... :-/

 

R

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