例
1.テーブル TBL001
ID オートナンバー レプリケーションID KEY設定
NAME テキスト型
2.UPDATE例
※下記のようなコードで、Rsに割り当てられたIDを入れたいです(実際にはこのコードではRs代入時にエラーになります)
'変数
Dim strSQLStatement As String
Dim Cn As ADODB.Connection
Dim Rs As ADODB.Recordset
'DB登録
strSQLStatement = "INSERT INTO TBL001 (NAME) VALUES ('山田太郎')"
Set Cn = CurrentProject.Connection
Set Rs = Cn.Execute(strSQLStatement)
Rs.Close: Set Rs = Nothing
Cn.Close: Set Cn = Nothing
私の環境です
MS Acsess 2003 SP1
Windows XP SP2
こうゆうことですかね。
Sub hoge() Dim cn As ADODB.Connection Dim rs As New ADODB.Recordset Set cn = CurrentProject.Connection rs.Open "SELECT * FROM TBL001", cn, adOpenDynamic, adLockPessimistic rs.AddNew ' レコード追加 Debug.Print StringFromGUID(rs("ID").Value) ' 設定されたIDをプリント rs("NAME").Value = "山田太郎" rs.Update ' レコードの変更を確定 rs.Close End Sub
select * from TBL001 where name = '山田太郎'
更新時の日時分秒を入力する'insertDateTime'等、適当にテーブルにカラムを新設して
insert時に同時に更新するようにしてやり、検索時にあわせて検索すると間違いありません。
CSVなどから一斉にデータ入力があって日時分秒(およびマイクロ秒)まで固有にならない場合がありもっと徹底的にやりたい場合は、
'key'等、照合専用のカラムを作り、uniqueをtrueにした上で適当に乱数生成したりして埋めるといいと思います。
ご回答ありがとうございました
こうゆうことですかね。
Sub hoge() Dim cn As ADODB.Connection Dim rs As New ADODB.Recordset Set cn = CurrentProject.Connection rs.Open "SELECT * FROM TBL001", cn, adOpenDynamic, adLockPessimistic rs.AddNew ' レコード追加 Debug.Print StringFromGUID(rs("ID").Value) ' 設定されたIDをプリント rs("NAME").Value = "山田太郎" rs.Update ' レコードの変更を確定 rs.Close End Sub
ご回答ありがとうございました。
このような方法があるとは知りませんでした。
以下のようなコードでできると思います。
ここでIDは新しいほうが大きくなっていくのであとから挿入したものの方が大きいはずなので、同じ名前の人がいても、MAX関数で取得すれば今挿入したもののIDが取得できます。
(注意)
こちらはAccess2007で検証しました。フィールド名にNAMEを設定するとエラーがでますので、便宜上aNAMEとしています。
テキスト0:登録したい名前を入れるテキストボックス
ラベル6:登録した名前のIDを表示するためのラベル
Private Sub コマンド7_Click()
Dim strSQL As String
Dim Conn As ADODB.Connection
Dim Rs As New ADODB.Recordset
strSQL = "INSERT INTO TBL001(aNAME) VALUES('" & Me.テキスト0.Value & "')"
Set Conn = CurrentProject.Connection
Conn.Execute (strSQL)
strSQL = "SELECT MAX(ID) AS xID FROM TBL001 WHERE aNAME = """ & Me.テキスト0.Value & """ GROUP BY aNAME"
Rs.Open strSQL, Conn, adOpenStatic
If Rs.RecordCount = 0 Then
MsgBox "レコードが登録されていません"
Exit Sub
End If
Me.ラベル6.Caption = Rs![xID].Value
End Sub
ご回答ありがとうございました。
ご回答ありがとうございました。
このような方法があるとは知りませんでした。