• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ADOX Append Null許可フィールド作成)

ADOX Append Null許可フィールド作成

このQ&Aのポイント
  • Null不許可で追加したフィールドをNull許可にする方法について
  • エラーが発生した際には、各OLE DBの状態の値を確認する必要がある
  • フィールドの追加にはADOXのCatalogオブジェクトを使用する

質問者が選んだベストアンサー

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

一応、Accessでの質問ということで。 質問について少し実験をしてみました。このADOXをAccessから なのかあるいはExcelなど他の環境から使うのかわかりませんが、 結果から申し上げますと、ADOXを使う場合は、 (1) 新規にテーブルを作るときに先にテーブルを作成し後から    フィールドを設定するようなコードを組むと「空文字の許可」    を「はい」にする、「値要求」をいいえにするなどデフォルト    の設定を変更することはできない。     この場合は、先にフィールドの設計をして、その後にテーブルを   作成する、という手順を踏む。 (2) 既存のテーブルにフィールドを追加するときに、フィールド の属性も変更しようとしてもフィールドの属性を設定し、 それからテーブルにフィールドを追加してもデフォルト の設定を変更できない。    この場合、どうしてもコードで属性を変更したいというので    あれば、ADOXを使うのは諦めてSQLでデータ定義クエリを作成    して、SQL文を実行する。たとえば、 strSQL = "alter table テーブル名 alter column フィールド名 text(255) constraint NantokaKantoka NOT NULL" DoCmd.RunSQL strSQL のように。SQL文中のNantokaKantokaは制約名で適当に設定。    ただし、「値要求」を「いいえ」から「はい」にはできるが    その逆、すなわち質問の変更はできない。    あるいは、DAOのTableDefオブジェクトを使用し、TableDefの    Fieldオブジェクトのプロパティから変更する。この方法ならば    ほぼ望むことが実現される。    たとえば、現在開いているファイルのとき、 Dim db As DAO.Database Dim tdf As DAO.TableDef Set db = CurrentDb Set tdf = db.TableDefs("既存のテーブル名") Dim fld As DAO.Field Set fld = tdf.Fields("既存のフィールド名") '値要求を「いいえ」に fld.Required = False '空文字の許可を「はい」に fld.AllowZeroLength = True    のように。 というのが、いろいろ試してみた結論です。ひょっとしたら ADOXでの方法があるのかもしれませんが、いろいろ検索 しても出てきませんでした。

readme_eml
質問者

お礼

ありがとうございます。 なかなか回答をもらえなかったため、諦めてログインもしてませんでした。 SQLで実行して確認させていただきます。 結果はまた、報告させていただきます。

readme_eml
質問者

補足

確認できました。 DAOを使うと既存テーブルの属性変更ができるみたいですね。 ありがとうございました。

すると、全ての回答が全文表示されます。
このQ&Aのポイント
  • 【ぷららWEBメール】が知らぬ間に解約され、ログインできなくなりました。トラブルの経緯や解決策を教えてください。
  • ぷららWEBメールが突然解約され、ログイン不可となりました。解決方法や代替手段についてアドバイスをお願いします。
  • ぷららWEBメールが勝手に解約され、アクセスできなくなりました。問題の原因と解決策について詳しく教えてください。
回答を見る

専門家に質問してみよう