投稿日 | : 2004/12/01(Wed) 15:08 |
投稿者 | : junchan |
Eメール | : bkalw803@rinku.zaq.ne.jp |
URL | : |
タイトル | : Re^2: ACCESSとVB間でのデータのやり取りについて |
> > VBからは、ACCESSで作成されたデータもVBで書き込んだデータも問題なく呼び出されるのですが、
> > ACCESSからはVBで書き込んだデータが呼び出すことができません。
> いまいち状況が掴めない(読解力不足か)んですが、
> VBからはどういう方法で、読み書きしてますか?
> 例えば、
> ADOかDAOかとか
> SQL文かUpDataかとか
書き込みのプロシージャー
Private] Sub Command1_Click()
Dim cn As New ADODB.Connection
Dim rst As ADODB.Recordset
Dim strSQL As String
Set cn = New ADODB.Connection
cn.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=\\DELL\My Documents\NEWスタンプ会.mdb"
cn.Open
Set rst = New ADODB.Recordset
rst.Source = "会員マスタ"
rst.ActiveConnection = cn
rst.CursorType = adOpenStatic
rst.LockType = adLockOptimistic
rst.Open
With rst
.MoveLast
.AddNew
![連番] = ![連番] + 1
![会員NO.] = Text1.Text
![郵便番号] = Text4.Text
vntResult = Split(Text5.Text, " ")
![住所1] = vntResult(0)
![住所2] = vntResult(1)
![電話番号] = Text6.Text
![氏名] = Text2.Text
![ふりがな] = Text3.Text
![性別NO.] = Text8.Text
![生年月日] = Text7.Text
![加盟店NO.] = Combo1.Text
![登録NO.] = Text9.Text
![DM] = 0
![チラシ] = 0
![会員証] = 0
![ラッキー] = 0
.Update
End With
rst.Close
cn.Close
Set rst = Nothing
Set cn = Nothing
End sub
呼び出しのプロシージャー
Private Sub Text1_LostFocus()
Dim cn As New ADODB.Connection
Dim rst1 As ADODB.Recordset
Dim searchNum As String
Dim searchAdd As String
Dim DBFile As String
Dim ubCode As Long
Dim vntResult As Variant
searchNum = Text1.Text
Set cn = New ADODB.Connection
cn.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=\\DELL\My Documents\NEWスタンプ会.mdb"
cn.Open
Set rst1 = New ADODB.Recordset
rst1.Source = "会員マスタ"
rst1.ActiveConnection = cn
'rsr1.CursorType = adOpenStatic
rst1.Open
On Error Resume Next
rst1.MoveFirst
Do While Not rst1.EOF
If searchNum = rst1![会員NO.] Then
Text2.Text = rst1![氏名]
Text3.Text = rst1![ふりがな]
Text5.Text = rst1![住所1] & " " & StrConv(rst1![住所2], vbWide)
Text6.Text = rst1![電話番号]
Text7.Text = rst1![生年月日]
Text8.Text = rst1![性別NO.]
Text9.Text = rst1![登録NO.]
entryFlag = True
Exit Do
Else
entryFlag = False
End If
rst1.MoveNext
Loop
住所 = Text5.Text
vntResult = Split(住所, " ")
searchAdd = vntResult(0)
Open CurDir & "\ZipCode.csv" For Input As #1
Do Until EOF(1)
Input #1, ubCode, Jusho
If InStr(Jusho, searchAdd) > 0 Then
Text4.Text = ubCode
Exit Do
End If
Loop
Close #1
If Text2.Text = "" Then
Else
Text10.SetFocus
End If
On Error GoTo 0
rst1.Close
cn.Close
Set rst1 = Nothing
Set cn = Nothing
End Sub
> ACCESSから呼び出せないとは、どういう呼び出し方をしたときですか?
ACCESSの入力FORMの「会員NO.」を入力した場合、登録RECORDが呼び出されるようになっていますが
VBから入力されたRECORDに限り表示されず、他のFIELDの値を入力し、登録ボタンをCLICKすると、
インデックス、主キーまたはリレーションシップで値が重複していると警告されます。
重複しているということは、「会員マスタ」TABLEの該当RECORDを認識しているとおもわれますが、
「会員NO.」のデータの型に問題があるのでしょうか?
ちなみにACCESSの「会員NO.」のデータの型はSTRINGでFIELD SIZE = 13 です。
> テーブルをダブルクリックする等で開いたときには見えてますか?
ACCESSでTABLEを開くとVBで書かれたRECORDは見えています。
以上のとおりです。お手数ですが、よろしくお願いいたします。
カムリン様
Junchan