Access97で使用しているデータベースに、
スクリプトでテーブルを作成する必要が出てきたので、
作成してみたのですが、プロパティで値要求を「はい」に設定しているにも関わらず、
設定する事が出来ませんでした。
設定の仕方が悪いのでしょうか?
下記にサンプルソースを上げました。
教えて頂けると助かります。
よろしくお願い致します。
--------------------------------------
Option Explicit
'データベースパス
Dim strDBPath
Dim strDBName
strDBName = "db1.mdb"
Dim strDBFullPath 'ファイルが存在する場所
strDBFullPath = Replace(WScript.ScriptFullName,WScript.ScriptName, "")
'FileSystemObject
Dim objFS
'SQL文
Dim strSQL
'テーブル名
Const strTBL = "テスト"
'ADOX用定義
Const adBoolean = 11 'ブール値型
Const adColFixed = 1 '値要求 はい
Const adColNullable = 2 '値要求 いいえ
Dim objCat
Dim objTbl
Dim objCol
'ADOオブジェクトを作成します
Set objCat = WScript.CreateObject("ADOX.Catalog")
Set objTbl = WScript.CreateObject("ADOX.Table")
Dim strJoin
strJoin = ""
strJoin = strJoin & "Provider=Microsoft.Jet.OLEDB.4.0;"
strJoin = strJoin & "Data Source=" & strDBFullPath & strDBName & ";"
strJoin = strJoin & "Jet OLEDB:Engine Type=5;"
objCat.ActiveConnection = strJoin
'テーブル名を定義します
objTbl.Name = strTBL
objCat.Tables.Append objTbl
'■列の設定
'フラグ Yes/No型 はい -
Set objCol = WScript.CreateObject("ADOX.Column")
With objCol
' フィールド名
.Name = "フラグ"
' データ型
.Type = adBoolean
' 値要求 はい
.Attributes = adColFixed
End With
objCat.Tables(strTBL).Columns.Append objCol
Set objCol = Nothing
Set objTbl = Nothing
Set objCat = Nothing
No.1ベストアンサー
- 回答日時:
97の環境がありませんので、実験していませんが、
ADOでコネクションを開き、
strSQL = CON.Execute "ALTER TABLE TABLE2 ALTER COLUMN FIELD1 TEXT(30) NOT NULL"
のようなSQLを発行することによって、「値要求」を「はい」にすることはできます。
既に存在しているデータに制約に違反するものがある場合は、エラーが起きて実行できなかったと思います。
ただし上記SQLをNULLに変えても、NULL値禁止制約は解除されません。(逆向きの操作はできません。)
もひとつ別情報としては、CREATE TABLE の CONSTRAINTでは、NULL値禁止制約を設定することはできません。
(ソースは見つけられません。)
昔、この件で悩んだ事があったような、なかったような・・・
(mdbを)ご利用の際は計画的に!
この回答への補足
ありがとうございます。
調査してみた結果、
Alter Table..Alter Column構文がサポートされたのは
Access2000以降の為、
Access97ではサポートされていないようです。
解決致しました。
具体的にはどうしたかというと、
テーブル作成後に、「ALTER TABLE テスト ADD フラグ2 YESNO NOT NULL;」のSQLを発行して、値要求「はい」の項目を追加致しました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PysimpleGUIでデータベースを作る
-
マクロ 特定のセル値のみクリ...
-
midiのデルタタイムについて
-
VB2008 iniファイルの指定セク...
-
テキストボックスのvalueとtext...
-
Excel vba ユーザーフォームテ...
-
VisualStudio2005で中断した際...
-
プロジェクト間の値の渡し方
-
OracleでRecordCountが正しくな...
-
シーケンスについて質問です。 ...
-
0から12までの値nを入力し、n...
-
マクロで奇数と偶数の値を2か所...
-
IP Address Controlから値を取...
-
画面のフィールドの値を共通処...
-
最大・最小を求めるプログラム
-
vbaの繰り返しで求める最大値に...
-
ユーザーフォームのテキストボ...
-
VBプログラム エラーが出ます
-
この場合のフォートランのフォ...
-
if ( fp == NULL ){ を if ( f...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスのvalueとtext...
-
VB.NETでコンボボックスの1行目...
-
値を返さないコード パス
-
Excel VBA 複数選択したリスト...
-
PL/SQLでのTO_DATEの時間取得に...
-
マクロ 特定のセル値のみクリ...
-
VB初心者。小数点以下の表示で...
-
Excel VBAのリストボックスの値...
-
変数名の取得
-
VB.NETでアクティブなformを知...
-
マクロで奇数と偶数の値を2か所...
-
Powershellのparamについて
-
ISDBNULLをスルーしてDBNULLが...
-
DataTableに対するLINQについて
-
Excel vba ユーザーフォームテ...
-
C#の質問です
-
ユーザーフォームのテキストボ...
-
VBA ドロップダウンリストを残...
-
シーケンサで最小値を保持する
-
[VBA]選択範囲の下から上に処理...
おすすめ情報