- 締切済み
Accessから呼び出した値を比較するには?
お世話になります。 Excel入力したデータをボタンをクリックすることによってAccessにインプットするVBAを組んでおります。 Accessにインポートするのは、できたのですが、重複データが存在していた際には、インポート時に「既に登録されてます」とエラー表示をさせたいのですが、なかなかできず手間取っておりますので、ご助力お願いします。 Private Sub DB登録_Click() 'Accessにて作成したeigyoデータベースへの登録 Const MyPath = "eigyo.mdb" Dim msg As Integer Dim MySQL As String Set MyCon = New ADODB.Connection Set MyRs = New ADODB.Recordset 'MDBへの接続情報を指定 MyCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=" & MyPath MyCon.Open "provider=Microsoft.Jet.OLEDB.4.0;Data Source=eigyo.mdb" '接続を開く MySQL = "select * from 営業受託情報" MyRs.Open MySQL, MyCon, adOpenStatic, adLockOptimistic msg = MsgBox("データを追加しますか?", vbOKCancel) 'キャンセルのときは追加しない If msg = vbCancel Then Cancel = True Else '重複登録を回避 '工事名称を抽出して比較する name = Worksheets("横案").Range("d2").Value '名称を代入 sql = "select * from 営業受託情報 where 名称 & name" If sql = name Then MsgBox ("既に登録されています") Else With MyRs.AddNew MyRs!名称 = Worksheets("横案").Range("d2").Value MyRs!場所 = Worksheets("横案").Range("d3").Value MyRs.Update End With MyCon.Close '接続終了 Set MyRs = Nothing MsgBox ("データを追加しました") End If End If End Sub
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- keirika
- ベストアンサー率42% (279/658)
お礼
返答ありがとうございます。 ご指摘の部分は転記をミスしました。 色々調べて以下のコードにて思ったようにできました。 '工事名称を抽出して比較する name = Worksheets("横案").Range("d2").Value 'シートに入力された名称を代入 sql = "select * from 営業受託情報 where 名称 ='" & name &"'" MyRs.Open sql,MyCon,adOpenStatic,adLockOptimistic If MyRs.EOF = False Then MsgBox ("既に登録されています") Else