2010-04-02 5 views
0

J'ai trouvé le code suivant qui est censé créer une table SQL dans une base de données SQl. La base de données est spécifiée dans dbpath et la table à créer est tblname.Excel VBA pour créer une table SQL

Cependant, lorsque j'exécute ce code, j'ai un problème de connexion à la bonne base de données SQL.

Par exemple, si je spécifie dbpath comme "WIN2k8 \ Test \ ABC", c'est-à-dire que le nom de la machine est WIN2k8, l'instance sql est Test database is ABC.

Pour une raison quelconque, il continue à ramasser le dbpath comme où j'ai enregistré le classeur Excel puis WIN2k8 \ test \ abc.

Quelqu'un peut-il aider?

Dim dbConnectStr As String 
Dim Catalog As Object 
Dim cnt As ADODB.Connection 
Dim dbPath As String 
Dim tblName As String 

'Set database name in the Excel Sheet 
dbPath = ActiveSheet.Range("B1").Value 'Database Name 
tblName = ActiveSheet.Range("B2").Value 'Table Name 

dbConnectStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath & ";" 

'Create new database using name entered in Excel Cell ("B1") 
Set Catalog = CreateObject("ADOX.Catalog") 
Catalog.Create dbConnectStr 
Set Catalog = Nothing 

'Connect to database and insert a new table 
Set cnt = New ADODB.Connection 
With cnt 
    .Open dbConnectStr 
    .Execute "CREATE TABLE tblName ([BankName] text(50) WITH Compression, " & _ 
      "[RTNumber] text(9) WITH Compression, " & _ 
      "[AccountNumber] text(10) WITH Compression, " & _ 
      "[Address] text(150) WITH Compression, " & _ 
      "[City] text(50) WITH Compression, " & _ 
      "[ProvinceState] text(2) WITH Compression, " & _ 
      "[Postal] text(6) WITH Compression, " & _ 
      "[AccountAmount] decimal(6))" 
End With 
Set cnt = Nothing 

Répondre

1

Le fournisseur Jet.OLEDB est pour MS Access. Essayez d'utiliser une chaîne de connexion SQL Server si c'est ce que vous essayez de vous connecter. Vous pouvez trouver les différents types de chaînes de connexions au http://www.connectionstrings.com/.

espoir qui aide