Kreiranje tabele v Access-u z Excel-om VBA

Pomoč pri izdelavi makrov
Odgovori
deraleks
Prispevkov: 24
Pridružen: Sr Feb 28, 2007 10:28 pm

Kreiranje tabele v Access-u z Excel-om VBA

Odgovor Napisal/-a deraleks »

Z uporabo Excel VBA želim skreirati novo tabelo v Acces-u.

Po korakih sem prišel do spodnje kode.

Koda: Izberi vse

     Option Explicit
     
     Dim a As Byte
     Dim b As Byte
     Dim c As Byte
     Dim d As Byte
     Dim e As Byte
     Dim f As Byte
     Dim g As Byte
     Dim x As Byte
     Dim n As Long

Sub addcolumns_II()

    n = 1
    a = 1
    b = 2
    c = 3
    d = 4
    e = 5
    f = 6
    g = 7

    Dim dbConnectStr As String
    Dim tabela_ime As String
	
    tabela_ime = n & "," & a & "," & b & "," & c & "," & d & "," & e & "," & f & "," & g

    Dim cnt As ADODB.Connection
    dbConnectStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & "C:\VBA\A\vaja.accdb"

    Set cnt = New ADODB.Connection
    
    With cnt
        .Open dbConnectStr
        .Execute "CREATE TABLE" & tabela_ime & "([No0] Integer," & "[No1] Byte, " & "[No2] Byte, " & "[No3] Byte, " & "[No4] Byte, " & "[No5] Byte, " & "[No6] Byte, " & "[No7] Byte)"
    End With
    
    Set cnt = Nothing

End Sub
V tej kodi mi prevajalnik javi napako:
Sintaksna napaka v izjavi CREATE TABLE.
Želel bi, da ima novo kreirana tabela ime sestavljeno iz prej definiranih spremenljivk kot je to definirano v tabela_ime.

Pred več kot 10 leti mi je nekaj podobnega delovalo v Excel VBA 2003.

:| ?

lp
admin
Site Admin
Prispevkov: 3583
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Kreiranje tabele v Access-u z Excel-om VBA

Odgovor Napisal/-a admin »

Pozdravljeni,

Če namesto .Execute zapišete Debug.Print, da sploh vidite, kaj želite poslati v Access oz. kakšen SQL stavek želite izvesti, boste dobili sledeč izpis:

Koda: Izberi vse

CREATE TABLE1,1,2,3,4,5,6,7([No0] Integer,[No1] Byte, [No2] Byte, [No3] Byte, [No4] Byte, [No5] Byte, [No6] Byte, [No7] Byte)
Ta stavek je očitno napačen iz več razlogov. Najprej vam manjkajo presledki, saj ni jasno, kaj je SQL ukaz in kaj je ime tabele. Torej potrebno je narediti dva presledka:

Koda: Izberi vse

Debug.Print "CREATE TABLE " & tabela_ime & " ([No0] Integer," & "[No1] Byte, " & "[No2] Byte, " & "[No3] Byte, " & "[No4] Byte, " & "[No5] Byte, " & "[No6] Byte, " & "[No7] Byte)"
Sedaj dobite sledeč ukaz:

Koda: Izberi vse

CREATE TABLE 1,1,2,3,4,5,6,7 ([No0] Integer,[No1] Byte, [No2] Byte, [No3] Byte, [No4] Byte, [No5] Byte, [No6] Byte, [No7] Byte)
Ta bi že skoraj bil OK, vendar pa so problem vejice, saj se te v imenu datoteke ne smejo pojaviti. Če nujno želite vejice v imenu, potem je potrebno ime tabele zapreti v oglate oklepaje:

Koda: Izberi vse

Debug.Print "CREATE TABLE [" & tabela_ime & "] ([No0] Integer," & "[No1] Byte, " & "[No2] Byte, " & "[No3] Byte, " & "[No4] Byte, " & "[No5] Byte, " & "[No6] Byte, " & "[No7] Byte)"
S tem dobite veljaven SQL ukaz, ki se v Accessu izvede, vendar to res ni primerno ime za tabelo!!! A če je to tisto kar želite, potem je to odgovor

Koda: Izberi vse

.Execute "CREATE TABLE [" & tabela_ime & "] ([No0] Integer," & "[No1] Byte, " & "[No2] Byte, " & "[No3] Byte, " & "[No4] Byte, " & "[No5] Byte, " & "[No6] Byte, " & "[No7] Byte)"
lp,
Matjaž Prtenjak
Administrator
Odgovori