【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言

お世話になります。
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

A 回答 (1件)

sql = "select * from 営業受託情報 where 名称 & name"



のところですが

sql = "select * from 営業受託情報 where 名称 = name"

ではないでしょうか。(あまり自信はありません。)
    • good
    • 0
この回答へのお礼

返答ありがとうございます。
ご指摘の部分は転記をミスしました。

色々調べて以下のコードにて思ったようにできました。

'工事名称を抽出して比較する
name = Worksheets("横案").Range("d2").Value 'シートに入力された名称を代入
sql = "select * from 営業受託情報 where 名称 ='" & name &"'"
MyRs.Open sql,MyCon,adOpenStatic,adLockOptimistic

If MyRs.EOF = False Then
MsgBox ("既に登録されています")
Else

お礼日時:2008/06/17 13:41

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


おすすめ情報