• 締切済み

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

みんなの回答

  • keirika
  • ベストアンサー率42% (279/658)
回答No.1

sql = "select * from 営業受託情報 where 名称 & name" のところですが sql = "select * from 営業受託情報 where 名称 = name" ではないでしょうか。(あまり自信はありません。)

refine
質問者

お礼

返答ありがとうございます。 ご指摘の部分は転記をミスしました。 色々調べて以下のコードにて思ったようにできました。 '工事名称を抽出して比較する name = Worksheets("横案").Range("d2").Value 'シートに入力された名称を代入 sql = "select * from 営業受託情報 where 名称 ='" & name &"'" MyRs.Open sql,MyCon,adOpenStatic,adLockOptimistic If MyRs.EOF = False Then MsgBox ("既に登録されています") Else

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

関連するQ&A