2

Access の更新クエリで問題が発生しています。

テーブルにフィールドを追加し、別のフィールドのすべての値を同じ値に変更するという 2 つのことをしようとしています。

ALTER TABLE 103 ADD COLUMN test TEXT;
UPDATE 103 SET [103].Workcenter = "103";

これらの 2 行を個別に実行すると正常に動作しますが、同じクエリに入れると「ALTER TABLE の構文エラー」ステートメントが発生します。なぜ私がこれを行うことができないのか誰かが知っていますか?

また、列を追加して、そのフィールドのすべての値をデフォルト値に更新できれば素晴らしいと思います。ALTER TABLE コマンドで DEFAULT を試しましたが、どちらも機能していません。

提案を事前にありがとう!

4

2 に答える 2

3

ron tornambe が言ったように、アクセス クエリに複数のコマンドを含めることはできません。バッチ処理はサポートしていません。

VBA コードは、テーブルを変更する際の友です。Access で使用されるデータ定義言語は、データベース オブジェクトを直接操作する場合に VBA から使用できるものよりも制限されています。

たとえば、あなたが求めていることを正確に行うには:

Public Sub AddFieldAndUpdate()
    ' Initialise '
    Dim db As DAO.Database
    Dim tb As DAO.TableDef
    Dim fd As DAO.Field
    Set db = CurrentDb()

    ' Get the 103 table '
    Set tb = db.TableDefs("103")
    ' Create a new 'test' field, 128 char long '
    Set fd = tb.CreateField("test", dbText, 128)
    ' Set the Default value for the new field '
    fd.DefaultValue = "000"
    ' Add the new field to the 103 table
    tb.Fields.Append fd

    ' Now do the update
    db.Execute "UPDATE 103 SET [103].Workcenter = '103';", dbFailOnError
    Debug.Print "Number of Updated records: " & db.RecordsAffected

    ' Cleanup
    Set fd = Nothing
    Set tb = Nothing
    Set db = Nothing
End Sub

これは冗談ですが、おそらくそれ以上のことをしたいでしょう。たとえば、必要に応じてインデックスやデフォルトの書式設定などを設定します。

于 2012-05-07T03:39:45.600 に答える
1

一部のテーブル デザイン機能は、DAO オブジェクト モデルを使用して TableDef を変更する場合にのみ使用できます。その他は、ADO 接続から DDL ステートメントを実行する場合にのみ使用できます。

テーブル デザインの変更には、どちらの方法でも使用できる機能が含まれます。どちらでも構いませんが、個人的には次の方法を選択します。

Dim strDdl As String
strDdl = "ALTER TABLE 103 ADD COLUMN test TEXT(128) DEFAULT ""000"";"
CurrentProject.Connection.Execute strDdl
于 2012-05-07T04:51:21.203 に答える