• 締切済み

VBのDataGridで見られるエラーについての質問

こんにちはtmgmです。 VisualBasic6.0のデータベース連携プログラムで困っています。 ACCESSであらかじめ.mdbを作成しておいて、そのDBに接続し、DataGridにmdbのデータを表示するという単純なプログラムなんですが、どうしても決まったエラーが出てしまいます。 下記プログラムの、Set D_GRID.DataSource = RECOでいつもエラーになります。 エラー内容は「行セットにはブックマークを指定できません」です。 つまりはこのエラーの意味がわからないので困っています。 分かる方、ご返答よろしくお願いします。 <補足> プログラムはこんな感じです。 ---------------------------------------------------------------------------- Private Sub Form_Load() '接続の定義 Dim CONN As adodb.Connection 'レコードセットの宣言 Dim RS As adodb.Recordset Set CONN = New adodb.Connection With CONN .ConnectionString = "provider=Microsoft.jet.oledb.4.0;" _ & "data source=C:\TESTMDB.mdb" .Open End With MsgBox "データベース接続に成功しました。", vbOKOnly + vbInformation, "VBプログラミング" Set RECO = New Recordset With RECO .ActiveConnection = CONN .Source = "T_TEST" .CursorType = adOpenDynamic .LockType = adLockOptimistic .Properties("IRowsetIdentity") = True .Open End With Set D_GRID.DataSource = RECO   Msgbox "データの取得に成功しました。", vbOkOnly + vbInformation, "VBプログラミング" End Sub

  • tmgm
  • お礼率17% (47/273)

みんなの回答

noname#5584
noname#5584
回答No.2

こちら↓が参考になると思います。 http://www.okweb.ne.jp/kotaeru.php3?q=757065

参考URL:
http://www.okweb.ne.jp/kotaeru.php3?q=757065
回答No.1

確か、DataSource って、RecordSet オブジェクトではなく、DataControl とペアで使用して DataControl をセットするんだったような気がします。 VB のコードウィンドウで DataSource 上にカーソルを置いて F1 でヘルプを見てみてください。たぶん何らかの説明が出てくると思うのですが。

関連するQ&A

  • VBのデータグリッドが表示されない!!!

    こんにちはtmgmです。 データグリッドが表示されません。 状況としては 1.プログラムは正常に動いています。(「接続に成功しました」メッセージ、「レコード取得に成功しました」メッセージ、ともに表示されます。) 2.しかしデータグリッドには何一つ表示されません。(ツールボックスから貼り付けたままの状態です) 3.参照設定はMicrosoft ActiveX Data Objects 2.5 Library、コンポーネントはMicrosoft DataGrid Control6.0(SP5)(OLEDB)です。 どなたかお分かりになる方いらっしゃいますでしょうか?非常に困っています。 ご返答よろしくお願いします。 ------------------------------------------------ Dim CONN As ADODB.Connection 'レコードセットの宣言 Dim RECO As ADODB.Recordset '接続の宣言 Set CONN = New ADODB.Connection '接続のプロパティ With CONN .ConnectionString=     "provider=Microsoft.jet.oledb.4.0;" _ & "data source=C:\TESTMDB.mdb" .Open End With MsgBox "データベース接続に成功しました"   'レコードセットのプロパティ Set RECO = New Recordset With RECO .ActiveConnection = CONN .Source = "SELECT ~(省略)" .CursorLocation = adUseClient .CursorType = adOpenStatic .LockType = adLockOptimistic .Properties("IRowsetIdentity") = True .Open End With   'レコードセットをデータグリッドに連結 Set D_GRID.DataSource = RECO MsgBox "レコードセット取得に成功しました ------------------------------------------------

  • 条件つきの計算

    コンボボックスに入ってる値に基づいて、データベースから値をとってきて計算したいという機能をつくりたいですが、 環境:Access2003 VB6 テーブル(SCHOOL)はYear,Class,成績1、成績2、成績3などあります。 コンボボックス1(学年)が1を選択して、 コンボボックス2(クラス)が1Aを選択したとき、 テーブルに1年1Aの人数を計算する場合はSQLはどうかけばいいのでしょうか。 また、その人数の成績1、成績2、成績3を合計したい場合はどうしたらいいのでしょうか。 アドバイスよろしくお願いします。 下はデータベース接続とコンボボックスの設定ですが、 合計値はラベルに表示したいと考えてます。 詳しい方、よろしくお願いします。 Dim CONN As ADODB.Connection 'レコードセット Dim RECO As ADODB.Recordset Dim REDO As ADODB.Recordset Private Sub ConnOpen() Set CONN = New ADODB.Connection '接続文字列の設定 CONN.ConnectionString = "provider=Microsoft.jet.oledb.4.0;"   _& "data source=D:\DB\dbstudent.mdb" 'コネクションをオープン CONN.Open End Sub Private Sub RecoSet() Set RECO = CONN.Execute("Select * From SCHOOL") End Sub Private Sub RedoSet() Set REDO = CONN.Execute("Select Distinct Year From SCHOOL") End Sub Private Sub cbx1_Click() Cbx2.Clear End Sub Private Sub Cbx1_LostFocus() Set RECO = CONN.Execute("Select Distinct Class From SCHOOL WHERE Year = '" & Cbx1.Text & "'") RECO.MoveFirst Do Until RECO.EOF Cbx2.AddItem (RECO.Fields(0)) RECO.MoveNext Loop RECO.Close End Sub  

  • DataGridに表示されない

    VB6でMySQL4.1に接続して MySQL内にあるデータベース"sample"の テーブル"総合"をDataGridに表示したいのですが できません。 エラーメッセージは "実行時エラー '7004': 行セットにはブックマークを設定できません" とでます。 どうしたら表示されるのでしょうか? Private Sub form_load() Dim cn As ADODB.Connection 'オブジェクト Dim rs As ADODB.Recordset 'データベースに接続 Set cn = New ADODB.Connection 'データベース:Sheet1 cn.ConnectionString = "Provider=MSDASQL.1;" _ & "Data Source=sample" cn.Open 'レコードセットの取得 Set rs = New ADODB.Recordset rs.ActiveConnection = cn rs.Source = "総合" rs.CursorType = adOpenStatic rs.LockType = adLockOptimistic rs.Open Set DataGrid1.DataSource = rs End Sub

  • 2のコンボボックスの関連

    環境:Access2003 VB6.0 2つのコンボボックス関連させたいが、やり方がよくわからないです。 たとえばSCHOOLというテーブルに1YearとClassのフィールドがあります。そこで、YearのコンボボックスでYearフィールドの値を選択して、Classのコンボボックスに選択された値に対する値をセットしたいです。 例(1年と選択して、2個目のコンボボックスにA、B、C、Dとセットしたいです。 初心者で、説明がわかりにくいかもしれないですが、よろしくお願いします。 以下データベースの接続設定 Dim m_formlording As Integer Dim CONN As ADODB.Connection 'レコードセット Dim RECO As ADODB.Recordset Private Sub ConnOpen() Set CONN = New ADODB.Connection '接続文字列の設定 CONN.ConnectionString = "provider=Microsoft.jet.oledb.4.0;" _& "data source=D:\DB\dbstudent.mdb" 'コネクションをオープン CONN.Open End Sub Private Sub RecoSet() Set RECO = CONN.Execute("Select * From SCHOOL") End Sub 詳しい方、ご教授ください。

  • 【VB】データグリッドコントロールにデータベースを表示させたい

    お世話になります。 フォーム上にMicrosoft DataGrid Control 6.0(OLEDB)を置いて、 データベースと接続し、データベースを表示させたいのですが、 データベースエンジンがMicrosoft.Jet.OLEDB3.51だとうまく表示してくれますが 4.0だとなぜか表示してくれません。 原因、対策などわかるでしょうか? ソースは以下のように単純なものです。 Private cn As ADODB.Connection Private rs As ADODB.Recordset Private Sub Form_Load() Set cn = New ADODB.Connection cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\パスワード管理.mdb" cn.Open Set rs = New ADODB.Recordset rs.Open "パスワード", cn, adOpenStatic, adLockReadOnly Set DataGrid1.DataSource = rs End Sub

  • VBからAccessへの接続でエラー

    OS:Win2K SP4 SOFT:VB6 ACCESS2K Dim strDatabase As String Dim cn As Object Dim rs As Object Sub xx() Set cn = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") strDatabase = "C:\出荷配送システム\mftbc.mdb" cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & strDatabase ・       ・       ・ End Sub 上記ソースの「cn.OPEN」メソッドでエラーが発生します。 エラー内容は 'OPEN'メソッドは失敗しました。'_Connection'オブジェクト データベースに接続できません。 です。 何が原因なんでしょうか?? mdbのあるPath,File名は合っています。

  • WindowsXPのアップデートを行ったらエラーが発生

    VB6.0で下記プログラムを作成したが、 WindowsXPのアップデートを行ったらエラーが発生するようになった。 ==プログラム Public Cn_Tables As ADODB.Connection Public Sub DB_Open() Set Cn_Tables = New ADODB.Connection Cn_Tables.ConnectionString = "Driver=Microsoft Access Driver (*.mdb);" & _ "DBQ=" & App.Path & "\TEST.MDB" Cn_Tables.Open End Sub ==エラー内容 「オートメーション エラーです。 指定されたプロシージャが見つかりません。 」 ※Openメソッド実施でエラー発生

  • ADOでレコードを閉じるタイミング。。Access2000/VB6/Win2K

    レコードセットを返すFuncitonプロシージャーを作ってみたのですが。。。 下のGet_Recordsの方のレコードセットをCloseすると上の方のDisp_Dataでオブ ジェクトが閉じているといって怒られます。しかし、閉じないと下の方では開きっ ぱなしになると思うのですが。。。どのように処理すればいいのでしょうか? Public P_CN As ADODB.Connection Private Sub Disp_Date()   Dim RS As ADODB.Recordset   Dim SQL AS String    Set RS = Get_Records(SQL)     With RS      If .RecordCount > 0 Then       .MoveLast: .MoveFirst       .Debug.Print !顧客_ID        End If      End With      RS.Close     Set RS = Nothing End Sub Public Function Get_Records(pSQL As String) As ADODB.Recordset   Dim RS As ADODB.Recordset     Set RS = New ADODB.Recordset      RS.Open pSQL, P_CN, adOpenKeyset, adLockOptimistic     Set Get_Records = RS '''    RS.Close '''   Set RS = Nothing End Function

  • データベース操作時エラーについて

    VB初心者です。 VB6+Access2000の環境下でプログラムを実行すると 「実行時エラー’3219’ このコンテキストで操作は許可されていません」とエラーになります。 下のプログラムの(2)の箇所でエラーになります。 (1)はエラーになりません。 つまり次のレコードに移動は問題ないのですが、前のレコードを表示 させようとするとエラーになります。 原因と解決方法をご教授ください。 ----------------------------------------------------------- プログラム Private mCn As ADODB.Connection Private mRs As ADODB.Recordset --------------------------------- Private Sub Form_Load() Set mCn = New ADODB.Connection mCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data    Source=.\word.mdb" mCn.Open Set mRs = mCn.Execute("Select * From week_cel") End Sub --------------------------------- Private Sub Command1_Click() ’(1) mRs.MovePrevious If mRs.BOF Then mRs.MoveFirst End If End Sub -------------------------------- Private Sub Command2_Click() ’(2)   mRs.MoveNext If mRs.EOF Then mRs.MoveLast End If End Sub   

  • Access ADOについて質問です。

    Access ADOについて質問です。 以下コードでレコードセットを返す関数を使用しています。 動作的には問題ないのですが、標準モジュール内のレコードセットをClose及びNothingしていないのが気になります。 Private Sub Form_Open(Cancel As Integer) Dim rs2 As ADODB.Recordset Set rs2 = New ADODB.Recordset Set rs2 = CreateRecordSet("SELECT * FROM T_Standard;") Set Me.Recordset = rs2 rs2.Close: Set rs2 = Nothing end sub '標準モジュール Public Function CreateRecordSet(strSQL As String) As ADODB.Recordset Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection cn.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=O:\標準DB\StandardBackEnd.mdb" cn.Open Set rs = New ADODB.Recordset rs.Open strSQL, cn, adOpenStatic, adLockReadOnly Set CreateRecordSet = rs ' rs.Close: Set rs = Nothing   ←この部分 ' cn.Close: Set cn = Nothing   ←この部分 End Function 標準モジュール内ではCloseやNothingしなくてもメモリの開放は行われているのでしょうか? アドバイスよろしくお願いいたします。

専門家に質問してみよう