2013-07-22 2 views
2

Я пытаюсь создать новые таблицы в существующей базе данных mdb, но назначая новые имена таблиц, используя переменную, которая имеет свое значение, заданное от ввода, введенного в форму. Он отлично работает, если я укажу имя для новой таблицы, но не работает, когда используется значение переменных.Создать новую таблицу mdb с использованием имени переменной

Я видел несколько проблесков сообщений, в которых упоминается использование динамического sql, но совершенно незнакомый с sql. Я не смог понять совет. Любая помощь будет оценена по достоинству.

<% 
table1 = Session("tableName") 

set conn = server.CreateObject ("ADODB.Connection") 
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.MapPath ("database.mdb") 

Dim strSQL 

'this works with explict naming and creates a table named table1 
'strSQL = "CREATE TABLE table1 (field1 int, field2 char)" 

'this does not work when trying to use a variable to set the tables name 
strSQL = "CREATE TABLE" & table1 & "(field1 int, field2 char)" 

conn.Execute strSQL 
conn.Close 
%> 
+0

Нужно пространство за 'TABLE'. – ZippyV

ответ

2

Без фактического сообщения об ошибке будет сложно дать более полезный ответ. Однако есть одна ошибка, которая может или не может существовать в вашем производственном коде. Вам не хватает пробелов вокруг имени таблицы так:

<% 
table1 = Session("tableName") 

set conn = server.CreateObject ("ADODB.Connection") 
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.MapPath ("database.mdb") 

Dim strSQL 

'this does not work when trying to use a variable to set the tables name 
strSQL = "CREATE TABLE" & table1 & "(field1 int, field2 char)" 

'this should be just fine - note the space after TABLE and before the quote. 
' ditto for the space after the quote and before the open parens 
strSQL = "CREATE TABLE " & table1 & " (field1 int, field2 char)" 

conn.Execute strSQL 
conn.Close 
%> 
+0

Спасибо AnonJr и ZippyV - «пробелы» хороши. Я ожидал тысячи строк незнакомого кода sql, чтобы исправить мою дилемму. Я должен помнить, что они говорят: «чем меньше проблема, тем труднее ее решить» - просто добавил пробелы и работает, как ожидалось. – Clay

Смежные вопросы