Toon posts:

[SQL/Access]Kolom toevoegen?

Pagina: 1
Acties:
  • 122 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik probeer via ASP/SQL een kolom toe te voegen aan een tabel in Access.

Ik heb in de search gevonden dat je dit met "ALTER TABLE" zou moeten doen en dus heb ik de volgende code geschreven:

code:
1
2
rs.Open "ALTER TABLE table_name ADD column_name"
rs.Update

maar dit werkt dus niet. Iemand ideeën?

Krijg btw deze foutmelding:
"[Microsoft][ODBC Microsoft Access Driver] Syntax error in field definition."

naslag: http://www.mysql.com/doc/en/ALTER_TABLE.html (ik snap hier echter geen aars van) 8)7

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 23-08 15:30

TheDane

1.618

volgens mij moet je nog een column type meegeven bij dat statement.

(in Oracle / plsql gaat 't zo: )

code:
1
ALTER TABLE table_name ADD (column_name column_type);

[ Voor 3% gewijzigd door TheDane op 18-03-2003 11:31 ]


Verwijderd

Topicstarter
Helaas ook niet gelukt met deze code:

code:
1
2
rs.Open "ALTER TABLE tbl_name ADD (column_name string(30));"
rs.Update

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

http://www.experts-exchan...MS_Access/Q_10219101.html O-)

[ Voor 5% gewijzigd door gorgi_19 op 18-03-2003 11:48 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Boss
  • Registratie: September 1999
  • Laatst online: 07:00

Boss

+1 Overgewaardeerd

Ik ken geen ASP, maar het lijkt mij dat je met rs.open een recordset kan openen. Aangezien het SQL commando ALTER TABLE geen recordset als resultaat geeft zal het wel niet lukken. Je moet een commando hebben om een SQL commando uit te voeren op een database, ipv een recordset openen.

Denk ik dan, maar ik ken geen ASP.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


Verwijderd

Topicstarter
Even voor de mensen die dit via de search vinden en als eventueel de link weg is en sowieso het feit dat je dan de link niet hoeft te volgen ;D

code:
1
rs.Open "ALTER TABLE tbl_name ADD COLUMN column_name column_type"

Dat mot et sijn

thnx gorgi

Verwijderd

Topicstarter
Nu komt het volgende probleem om aan deze column gelijk een default value te geven. Ik heb gezien dat je dit in principe ook kunt doen met ALTER COLUMN, maar ik wil dit gelijk in deze statement gooien. Na een beetje zoeken kom ik uit op:

code:
1
"ALTER TABLE tblUserCat ADD COLUMN " & Request.Form("txtCategory") & " char(4) DEFAULT 1"


Jammer maar helaas, dit is dus niet goed. Nogmaals de error "Syntax error in ALTER TABLE statement"

Nu heb ik het nog eens opgezocht en dmv
http://www.mysql.com/doc/en/ALTER_TABLE.html en
http://www.mysql.com/doc/en/CREATE_TABLE.html

kom ik toch echt niet uit op een ander stukje code dan dat ik nu heb staan. Nog tips?

[ Voor 22% gewijzigd door Verwijderd op 18-03-2003 14:26 ]


  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 04:57
wellicht dat je nog even moet nadenken over je datamodel, want het lijkt erop dat wat jij doet niet nodig is, en met een simpele join van twee tabellen al te realiseren is

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


Verwijderd

Ik vraag me meer af waarom je deze actie d.m.v. code wilt doen. Dit doe je toch gewoon in MS Access of SQL Enterprise Manager??? Of kan je daar niet bij? Beetje overbodig om hier code voor te schrijven.

:7

Verwijderd

Topicstarter
Niet als je het op internet wilt doen en geen zin hebt om de hele tijd je DB te downe en up te loaden met het risico dat mensen in de tussentijd dingen veranderd hebben in de DB. :P

Maar ben idd al bezig om de DB een beetje anders te ordenen om deze code overbodig te maken.

[ Voor 21% gewijzigd door Verwijderd op 18-03-2003 14:38 ]


Verwijderd

Ok!

Verwijderd

Kan je het niet via het TableDefs object doen ?
vb uit de help van Access:

The following example creates a new Field object and sets its DefaultValue property. The procedure then appends the new object to the Fields collection of the Employees table in the TableDefs collection of the database.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub NewField()
    Dim dbs As Database, tdf As TableDef
    Dim fld As Field

    ' Return reference to current database.
    Set dbs = CurrentDb
    ' Return reference to Employees table.
    Set tdf = dbs.TableDefs!Employees
    ' Create Field object.
    Set fld = tdf.CreateField("DaysOfVacation", dbText, 20)
    ' Set field properties.
    fld.DefaultValue = "10"
    ' Append fld to Fields collection.
    tdf.Fields.Append fld
    Set dbs = Nothing
End Sub


Hmmm, bij nader inzien gaat dit natuurlijk niet werken vanuit asp.
Wel als je er een dll'tje van maakt.

[ Voor 11% gewijzigd door Verwijderd op 18-03-2003 16:03 ]


  • Theguide
  • Registratie: December 2000
  • Laatst online: 26-06-2025
Boss schreef op 18 maart 2003 @ 11:57:
Ik ken geen ASP, maar het lijkt mij dat je met rs.open een recordset kan openen. Aangezien het SQL commando ALTER TABLE geen recordset als resultaat geeft zal het wel niet lukken. Je moet een commando hebben om een SQL commando uit te voeren op een database, ipv een recordset openen.
Je kunt direct een sql commando uitvoeren door je connectie object een execute te geven. Effe voorbeeldje:
code:
1
oConn.Execute(strSQL)


Waarbij oConn natuurlijk het connectie object is en strSQL een string is met daarin een SQL statement.

Recordsets kun je ook op die manier aanmaken trouwens. Je krijgt dan een hele "lichte" recordset, minder geheugen-intensief zeg maar. Maar dan heb je niet alle methoden/eigenschappen tot je beschikking. Bijvoorbeeld niet de oRs.RecordCount eigenschap.

code:
1
Set oRs = oConn.Execute(strSQL)

[ Voor 4% gewijzigd door Theguide op 18-03-2003 15:59 ]

Fuck me if I'm wrong, but isn't your name Gretchen?


  • shades
  • Registratie: September 2001
  • Laatst online: 10-08 15:01

shades

huh ?

Verwijderd schreef op 18 March 2003 @ 11:29:
Ik probeer via ASP/SQL een kolom toe te voegen aan een tabel in Access.

Ik heb in de search gevonden dat je dit met "ALTER TABLE" zou moeten doen en dus heb ik de volgende code geschreven:

code:
1
2
rs.Open "ALTER TABLE table_name ADD column_name"
rs.Update

maar dit werkt dus niet. Iemand ideeën?

Krijg btw deze foutmelding:
"[Microsoft][ODBC Microsoft Access Driver] Syntax error in field definition."

naslag: http://www.mysql.com/doc/en/ALTER_TABLE.html (ik snap hier echter geen aars van) 8)7
Ik heb in vb6 eens een keer een programmaatje gemaakt dat naar een sql2000 server connect, de bewuste tabel verwijdert en weer aanmaakt en vervolgens kolom gaat maken. Omdat het allemaal via de command gaat moet het in asp ook lukken. Ik weet alleen niet of MySQL het begrijpt maar misschien helpt het je opweg..

Het script gaat uit van een aantal standaard kolomen waarna er uit een arraytje meer kolomen worden toegevoegd

Dit heb ik trouwens met hulp van got uitgezocht kijk maar

De code is onverandert uit het progje dus d'r kunnen wat vage dingen instaan..
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    On Error Resume Next
    Dim oSQL As New ADODB.Command
    Set oSQL = New ADODB.Command
    
    Debug.Print "Activating connection.."
    oSQL.ActiveConnection = strConnect
    
    Debug.Print "Dropping table.."
    oSQL.CommandText = "DROP TABLE tbl_AccountInformatie"
    oSQL.Execute
    
    Debug.Print "Creating table.."
    oSQL.CommandText = "CREATE TABLE [dbo].[tbl_AccountInformatie] ([AccountID] [int] IDENTITY (1, 1) NOT NULL) ON [PRIMARY]"
    oSQL.Execute
    oSQL.CommandText = "ALTER TABLE [dbo].[tbl_AccountInformatie] WITH NOCHECK ADD CONSTRAINT [PK_tbl_AccountInformatie] PRIMARY KEY  CLUSTERED ([AccountID])  ON [PRIMARY]"
    oSQL.Execute
    oSQL.CommandText = "CREATE INDEX [AccountID] ON [dbo].[tbl_AccountInformatie] ([AccountID]) ON [PRIMARY]"
    oSQL.Execute
    'oSQL.CommandText = "ALTER TABLE [dbo].[tbl_AccountInformatie] ADD [AccountName] [nvarchar] (50)"
    'oSQL.Execute
    
    Debug.Print "Adding columns.."
    For intCount = 0 To UBound(strSelectedFields)
        strFieldName = strFields(Int(strSelectedFields(intCount))) ' veldnamen uit array ophalen
        strFieldName = Replace(strFieldName, " ", "") ' spaties weghalen
        strFieldName = Replace(strFieldName, "-", "") ' streepjes weghalen
        oSQL.CommandText = "ALTER TABLE [dbo].[tbl_AccountInformatie] ADD ['" & strFieldName & "'] [nvarchar] (50)"
        oSQL.Execute
        Debug.Print "Added:" & strFieldName
    Next

https://k1600gt.nl

Pagina: 1