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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストボックスのvalueとtext...
-
マクロ 特定のセル値のみクリ...
-
VB.NETでコンボボックスの1行目...
-
PL/SQLでのTO_DATEの時間取得に...
-
変数名の取得
-
シーケンサで最小値を保持する
-
textboxとLabelを動的に変更する
-
OpenCVにおいてのYCrCb値の求め方
-
VB初心者。小数点以下の表示で...
-
変数に代入してある数値を表示...
-
Excel VBAのリストボックスの値...
-
ハッシュテーブル(連想配列)が...
-
範囲が指定されている乱数について
-
VBAのIF分で値を入れる場合
-
Webbrowser.innerHTMLの「oncha...
-
ASPの変数の値をJAVA Script内...
-
vb6のVSFlexGridで選択行、列の...
-
[VBA]選択範囲の下から上に処理...
-
Excel vba ユーザーフォームテ...
-
Excel VBA 複数選択したリスト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスのvalueとtext...
-
ハッシュテーブル(連想配列)が...
-
マクロ 特定のセル値のみクリ...
-
VB.NETでコンボボックスの1行目...
-
変数名の取得
-
値を返さないコード パス
-
Powershellのparamについて
-
power BI クエリエディター 〇...
-
PysimpleGUIでデータベースを作る
-
DataTableに対するLINQについて
-
Excel VBAのリストボックスの値...
-
VB初心者。小数点以下の表示で...
-
Excel VBA 複数選択したリスト...
-
ダブルクリックをした順番に数...
-
PL/SQLでのTO_DATEの時間取得に...
-
[VB.net] DataGridViewのコンボ...
-
マクロで奇数と偶数の値を2か所...
-
ASPの変数の値をJAVA Script内...
-
vb6のVSFlexGridで選択行、列の...
-
シーケンサで最小値を保持する
おすすめ情報