Установите "Обязательно = False" в VBScript для файла MS Access - PullRequest
1 голос
/ 26 октября 2011

Я нашел действительно хороший пример того, как взять данные из классического файла ASP и выложить их в новый файл MS Access.Моя единственная проблема заключается в том, что мне нужно установить для свойства «Требуется» столбца значение false, чтобы при отсутствии данных для этого столбца он не падал.Поиск в Google дает мне результаты с другим синтаксисом, и это, похоже, не работает.Если кто-то может помочь мне установить свойство в этом примере, я буду признателен.

dim provider : provider = "microsoft.jet.oledb.4.0"
dim db : db = "c:\Documents and Settings\*****\Desktop\foodb.mdb"
dim ds : ds = "provider=" & provider & "; data source=" & db

dim catalog:set catalog=createobject("adox.catalog")
catalog.create ds 'create db file

'const for column types
 const adInteger=3   'integer
 const adVarChar=202   'variable character

 dim new_table:set new_table=createobject("adox.table")
 new_table.Name="customer"
 new_table.columns.append "id", adInteger
 new_table.columns.append "surname", adVarChar

 new_table.keys.append "pk_cust_id", 1, "id" 'primary key

 catalog.Tables.Append new_table   'append table to DB

 'release resources
 set new_table=nothing
 set catalog=nothing

 'By this point, DB is now created

 'populate table

 dim conn: set conn=createobject("adodb.connection") 'create connection
 conn.open ds 'open connection

 sql="insert into customer (id, surname) values (5, 'smith')"
 conn.Execute sql

 'close connection and reclaim resources
  conn.close
 set conn=nothing

1 Ответ

1 голос
/ 26 октября 2011

Этот VBScript делает то, что я думаю, что вы хотите, но делает это более кратко IMO.

Option Explicit
Dim provider: provider = "microsoft.jet.oledb.4.0"
Dim db: db = "C:\Access\webforums\foodb.mdb"
Dim ds: ds = "provider=" & provider & "; data source=" & db
Dim Sql
Dim CreateTable
Dim catalog: Set catalog = CreateObject("adox.catalog")

catalog.create ds 'create db file
Set catalog = Nothing

'By this point, DB is now created
'create and populate table

Dim conn: Set conn = CreateObject("adodb.connection") 'create connection
conn.Open ds 'open connection
CreateTable = "CREATE TABLE customer (" & _
    "id COUNTER CONSTRAINT pk_cust_id PRIMARY KEY, " & _
    "surname TEXT(255));"
conn.Execute CreateTable
Sql = "insert into customer (id, surname) values (5, 'smith')"
conn.Execute Sql

'close connection and reclaim resources
conn.Close
Set conn = Nothing

При использовании этого метода свойства поля фамилии включают в себя Required = No, что, я думаю, вам нужно.

Если вы имели в виду, что хотите вставить Null в поле id, это не может произойти с id в качестве первичного ключа. Ограничение первичного ключа не допускает значения Null.

...