投稿時間: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
|