• 締切済み

Accessでのテーブル作成や追加クエリなどについての質問です。

◆テーブル作成クエリで作成するテーブルにオートナンバー型のフィールドを設けたい。◆ (ナンバーが必ず1から振られることが条件) ※補足※ あらかじめオートナンバー型を含むテーブルを用意し、追加クエリ&削除クエリを使用すればよいという意見もありますが、この場合オートナンバー型のフィールドはカウントをアップし続けてしまう為断念。 ★教えてほしい事★ テーブル作成クエリからオートナンバー型のフィールドを作成できるのか? もしくは あらかじめオートナンバー型を含むテーブルを用意し削除クエリでテーブルのデータを空にしてから追加クエリでデータを入力しても必ずオートナンバー型のフィールドの先頭値は"1"から始まるようにできるか? 宜しくお願い致します。

みんなの回答

noname#140971
noname#140971
回答No.1

[イミディエイト] ? CNNExecute("CREATE TABLE MyTable (ID IDENTITY(1,1))") True ? CNNExecute("DROP TABLE MyTable") True ? CNNExecute("CREATE TABLE MyTable (ID LONG)") False True ? CnnExecute("ALTER TABLE MyTable DROP COLUMN ID)") True ? CnnExecute("ALTER TABLE MyTable ADD COLUMN ID IDENTITY(1,1)") True ? CnnExecute("ALTER TABLE MyTable ALTER COLUMN ID Long") True ? CnnExecute("ALTER TABLE MyTable ALTER COLUMN ID IDENTITY(1,1)") True オートナンバー型を生成したり削除したり追加したり長整数に変更したり戻したりしています。 以下のCNNExecute関数で色々と試されてください。 Public Sub ErrMessage(ByVal CnnErrors As ADODB.Error, ByVal strSQL As String)    MsgBox "ADOエラーが発生しましたので処理をキャンセルします。" & Chr$(13) & Chr$(13) & _       "・Err.Description=" & CnnErrors.Description & Chr$(13) & _       "・Err.Number=" & CnnErrors.Number & Chr$(13) & _       "・SQL State=" & CnnErrors.SQLState & Chr$(13) & _       "・SQL Text=" & strSQL, _       vbExclamation, " ADO関数エラーメッセージ" End Sub Public Function CnnExecute(ByVal strSQL As String) As Boolean On Error GoTo Err_CnnExecute   Dim isOK As Boolean   Dim cnn As ADODB.Connection      isOK = True   Set cnn = CurrentProject.Connection   With cnn     .Errors.Clear     .BeginTrans     .Execute strSQL     .CommitTrans   End With Exit_CnnExecute: On Error Resume Next   cnn.Close   Set cnn = Nothing   CnnExecute = isOK   Exit Function Err_CnnExecute:   isOK = False   If cnn.Errors.Count > 0 Then     ErrMessage cnn.Errors(0), strSQL     cnn.RollbackTrans   Else     MsgBox "プログラムエラーが発生しました。システム管理者に報告して下さい。(CnnExecute)", _         vbExclamation, " 関数エラーメッセージ"   End If   Resume Exit_CnnExecute End Function 注意: Access2000以降でないとエラーが出ると思います。

すると、全ての回答が全文表示されます。

関連するQ&A

専門家に質問してみよう