アプリ版:「スタンプのみでお礼する」機能のリリースについて

◆テーブル作成クエリで作成するテーブルにオートナンバー型のフィールドを設けたい。◆
(ナンバーが必ず1から振られることが条件)

※補足※
あらかじめオートナンバー型を含むテーブルを用意し、追加クエリ&削除クエリを使用すればよいという意見もありますが、この場合オートナンバー型のフィールドはカウントをアップし続けてしまう為断念。

★教えてほしい事★

テーブル作成クエリからオートナンバー型のフィールドを作成できるのか?
もしくは
あらかじめオートナンバー型を含むテーブルを用意し削除クエリでテーブルのデータを空にしてから追加クエリでデータを入力しても必ずオートナンバー型のフィールドの先頭値は"1"から始まるようにできるか?

宜しくお願い致します。

A 回答 (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以降でないとエラーが出ると思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!