2012-05-04 237 views
2

データベースエンジンとしてAccess 97データベースとJet 3.5を使用する古いVisual Basic 5アプリケーションのカスタマイズを希望する顧客がいます。構文エラーが発生するALTER TABLEステートメントのDEFAULT句

目的のカスタマイズでは、既存のテーブルに列を追加する必要があります。次はうまくいきます:

strSQL = "ALTER TABLE Users ADD COLUMN Status BYTE" 
pdbDatabase.Execute strSQL 

ただし、新しい列にはデフォルト値(0または1)を設定します。

strSQL = "ALTER TABLE Users ADD COLUMN Status BYTE DEFAULT 1" 

しかし、彼らは、私は、というエラーですべての結果

、この問題を調査中で」「ALTER TABLE文で構文エラーを(3293)を。」:私は、次および多くのバリエーションを試してみましたAccess 97とJet 3.5の古い構成でサポートされていないDEFAULT句には表示されない情報があります。

誰でもこれを確認することができますか、これを正しく動作させるには正しい方向に向いていますか?

ありがとうございました。

+1

句は、Jet 3.5/Access 97には存在しませんでした。 – RThomas

答えて

1

Access 97/Jet 3.5のSQLドキュメントDEFAULT句の記述は、ALTER TABLEステートメントまたはCREATE TABLEステートメントの記述時に行われません。これは、Jet 4.0の新機能としてここに記載されています:http://support.microsoft.com/kb/275561

私が確かに知っている唯一の方法は、デフォルト値を設定することです。GUIのテーブルデザインを開き、次にフィールドのプロパティをデフォルト値。 Access 97のインストールにアクセスできますか?

VB/VBAでは、おそらくフィールドのデフォルト値プロパティにアクセスして設定や変更を行うことができます.Sqlを使用しないでください。

+0

個々のユーザーのマシン上のデータベースが更新されるようにコードで行う必要があります。しかし、私はこれについて考えているように、実際に必要なことを実行するかどうかは分かりません。私が本当に必要とするのは、既存のすべてのレコードを、新しい列の目的のデフォルト値に更新することです。だから、すべてのレコードを繰り返し処理し、その値を書き込むコードを書く必要があるかもしれません。 – user1373826

+0

もちろん、Jet 4.0のデフォルト設定でも、すでに存在するレコードは更新されません。申し訳ありませんが、私は良い答えがありませんでした:)。 – RThomas

+1

@ user1373826 SQL UPDATE Users SET Status = 1でレコードを更新するだけです。 – MarkJ

4

これは、DAOオブジェクトを使用して行うことができます。

Microsoftがアクセステーブルを変更する方法について、これを言う:また

、そのようなフィールドのValidationRuleとのDefaultValueプロパティなどのMicrosoft Access固有の性質、特定のタイプは、唯一のMicrosoft Accessユーザーインターフェイスを介して設定することができ、またはコードでDAOを使用します。

以下のリンクから詳細を読むことができます。例がありますが、DefaultValueプロパティを使用して具体的にどこに表示されるか分かりませんでした。 http://technet.microsoft.com/en-us/library/cc966376.aspx

関連する問題