• ベストアンサー
  • すぐに回答を!

SQLServerのテーブルはdbOpenTableで取得できない?

SQLServerのテーブルはdbOpenTableで取得できない? いつもお世話になっております。 VB6.0、Access2003で開発されたシステムのデータベースを SQLServer(2008Express)に置き換えています。 接続方法は、現行通りのDAOを使用したいと考えております。 レコードセットをオープンするときに、 Set RS = DB.OpenRecordset("テーブル名", dbOpenTable) としたら、「引数が無効です」というエラーが発生しました。 dbOpenTableの所をdbOpenDynasetに変更したらエラーは発生しなくなりました。 SQLServerへの接続の場合、dbOpenTableは使用できないのでしょうか? dbOpenTableが使用できないとなると、IndexやSeekも使用できないということでしょうか? 以上です。よろしくお願い致します。

共感・応援の気持ちを伝えよう!

  • SQL Server
  • 回答数1
  • 閲覧数687
  • ありがとう数7

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1

> SQLServerへの接続の場合、dbOpenTableは使用できないのでしょうか? > dbOpenTableが使用できないとなると、IndexやSeekも使用できないということでしょうか? はい、その通りです。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます! indexやseekを使わない方向で頑張ろうと思います。

関連するQ&A

  • accessからsqlserverにアップサイジングしましたが,テーブ

    accessからsqlserverにアップサイジングしましたが,テーブルにデータを入力出来なくなってしまいました。 Dim rs As DAO.Recordset Dim db As DAO.Database Set db = CurrentDb() Set rs = db.OpenRecordset("確認用", dbOpenDynaset) rs.AddNew rs!品番 = Me.品番 rs.Update 上記のようにDAOを介してテーブルにデータを入れていました。 アップサイジングする前は、問題なかったのですが、どういったことが原因になりますでしょうか?

  • SQLSERVERからデータを取得する方法

    SQLSERVERに商品テーブルを作り ACCESSにローカルテーブル(下記の例では入力テーブル)を 作りました。 ACCESS VBAで ACCESSのローカルテーブルを1件ずつ読み SQLSERVERの商品テーブルを検索したいのですが 下記の例 どちらが処理スピードが速いのですか? なお下記以外にも処理スピードが速い方法が あったら教えてください。 ●例1 Dim db As DATABASE Dim rs As Recordset   dim rt as Recordset Set db = CurrentDb Set rt = db.OpenRecordset("入力テーブル", dbOpenDynaset) sql = "SELECT 商品名 FROM 商品テーブル " sql = sql & "where 商品ID = '" & rt![商品ID] & "'" Set rs = db.OpenRecordset(sql) If rs.RecordCount = 0 Then MsgBox "NG" Else MsgBox rs![商品名] End If ●例2 Dim db As DATABASE Dim rs As Recordset   dim rt as Recordset Set db = CurrentDb Set rt = db.OpenRecordset("入力テーブル", dbOpenDynaset) Set rs = db.OpenRecordset("商品テーブル", dbOpenDynaset) rs.FindFirst "商品CD = '" & rt![商品CD] & "'" If rs.NoMatch Then MsgBox "NG" Else MsgBox rs![商品名] End If よろしくお願いします。

  • 空欄を含む項目のレコードセット

    Access 2003 DAO.Recordsetにてデータを取得しようと思うのですが テーブル項目に空欄がある場合はどのように書けばよろしいのでしょうか? Dim DB As DAO.Database Dim RS As DAO.Recordset Set DB = CurrentDb Set RS = daoDB.OpenRecordset("Aテーブル", dbOpenDynaset) RS.AddNew daoRS!ああ ああ = xx RS!Update ・・・ とするとエラーになります。 項目名"ああ ああ"はどのように書けばいいのでしょうか? よろしくおねがいします。

  • アクセスのリンクテーブルの操作方法について

    アクセスで、OpenRecordsetオブジェクトでリンクテーブルを開こうとしましたが、引数にテーブルタイプのdbopentableを使用すると"無効な処理を行いました"とエラーになります。引数を省略すると、そこではエラーになりませんが、テーブルの更新ができません。 どのようにしたら、リンクテーブルのレコード操作ができるでしょううか?

  • テーブルのリンク(ACCESS)

    ACCESS2003で下記の記述で「実行時エラー ’3219’ 無効な処理です。」というエラーメッセージがでます。 外部mdbでテーブルをリンクさせるとこのエラーがでます。同じmdbファイルにデータテーブルを置くと問題なく処理できます。 参照設定も過去ログを見てチェックしています。 Dim dbs As DAO.Database Dim rst As DAO.Recordset Set dbs = CurrentDb Set rst = dbs.OpenRecordset("テーブル名", dbOpenTable) ACCESS97では何の問題もなかったのですが, 2003ではうまくいきません。 どうかよろしくお願いします。

  • アクセスVBA 変数での抽出条件の書きかた

    顧客データテーブルからの抽出です。 変数を使った書き方がわかりません。 よろしくお願いします。 テーブルのレコードには [氏名]:鈴木 [telnum]:0123456789 が存在します。 Private Sub テキスト0_BeforeUpdate(Cancel As Integer) Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb Set rs = db.OpenRecordset("顧客マスタ", dbOpenDynaset) Dim str As String str = "0123456789" rs.Filter = "[telnum] = ' " & str & " ' " Set rs = rs.OpenRecordset MsgBox (rs!氏名) ’←エラーメッセージ”カレントレコードがありません。”が出ます End Sub

  • DAOでレコード数を取得したい(ACESSVBA)

    レコードの行数は複数あるのに --------------------------------------------------------- Sub あ() Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb Set rs = db.OpenRecordset("T_test", dbOpenDynaset) MsgBox rs.RecordCount Set rs = Nothing Set db = Nothing End Sub --------------------------------------------------------- これでレコード数を取得しようとすると1がかえるのですが なぜレコードの行数を取得できないのでしょうか?

  • テーブル1から抽出したものをテーブル2に入れたい

    ACCESSのVBA初心者です。 基本的な質問で申し訳ないのですが、どうかご教授をお願いします。 まず、まったく同じフィールドを持つテーブル1とテーブル2があります。 抽出したい項目は、テーブル1の中にある[性別]と[登録月]が一致するデータの全てです。 性別と登録月は別のフォームのコンボボックスで選択したもので抽出しようと思っています。 該当するデータが含まれているレコードを全てテーブル2に移したいです。 説明が下手で申し訳ないのですが、どうかご教授をお願い致します。 Dim rs As DAO.Recordset Set db = CurrentDb() Set rs = db.OpenRecordset("テーブル1", dbOpenDynaset) DoCmd.RunSQL "DELETE FROM テーブル2" rs.Filter = " テーブル1.性別 = テーブル2.性別 & テーブル1.登録月 = テーブル2.登録月" テーブル2 = テーブル1.RecordsetClone 最初にdeleteがあるのは、前回の抽出条件を消したいからです。 よろしくお願い致します。

  • dbOpenTableとdbOpenDynaset

    Access2003 で開発をしています。 サブフォームで選択行のある項目の値を取得したいのですが、 下記ロジック(1)で正しく動作するアプリAと、動作しないアプリBが出てきました。 動作しないアプリは、他の行の値を取ってきてしまいます。 【ロジック(1)】 Set db = CurrentDb Set rs = db.OpenRecordset("サブフォーム用テーブル", dbOpenTable) Cnt = 1 If rs.BOF = True And rs.EOF = True Then Else Do Until Cnt = Forms![メイン]![サブフォーム].Form.CurrentRecord rs.MoveNext Cnt = Cnt + 1 Loop    MsgBox ("項目1の値:" & rs![項目1]) End If 色々調べたところ、正しく動かないアプリでは、ロジックを下記(2)のように変更したら、 正しく動きました。 【ロジック(2)】 Set rs = db.OpenRecordset("サブフォーム用テーブル", dbOpenDynaset)   MsgBox ("項目1の値:" & rs.Fields("項目1").Value) こちらのロジックの方が簡単なのもありますが、 テーブルをopenする際、dbOpenTable と dbOpenDynaset がありますが、 サブフォームのレコードを扱う際には、dbOpenDynaset にするべきなのでしょうか。 ロジック(1)で正しく動作していると思われるアプリAは、現在稼動中のため、 ロジックに間違いがなければそのままにしたいのですが、 ロジック(1)の dbOpenDynaset だと間違いで不具合が起きる可能性があるのでしょうか? ご教授いただければ幸いです。 よろしくお願いいたします。

  • 実行時エラー'13' :型が一致しません。

    Windows XPで、Access 2002を使用しています。 テーブル1のフィールド1の値を、ハイフン区切りで分割をしたいと思い、split関数を使用して、 下記、VBAを実行しましたが、「実行時エラー'13' :型が一致しません。」と言うエラーが 発生して、先に進む事ができません。 ツール→参照設定で、Microsoft DAO 3.6 Object Libraryにチェックを入れたり外したりしましたが、 全く改善されず、同じエラーが発生します。 DAO.を付けると解決するとの事で、 Dim dbs As DAO.Database Dim rs As DAO.Connection としましても、同じエラーが出ます。 デバッグしますと、 Set rs = dbs.OpenRecordset("select フィールド1 from テーブル1") の所で発生しているようです。 Private Sub コマンド0_Click() Dim dbs As DAO.Database Dim rs As DAO.Connection Set dbs = CurrentDb Set rs = dbs.OpenRecordset("select フィールド1 from テーブル1") Dim Vartemp As Variant Vartemp = Split(rs, "-") Debug.Print Vartemp(0) Debug.Print Vartemp(1) Debug.Print Vartemp(2) Debug.Print Vartemp(3) End Sub 以上、初心者で、行き詰ってしまっておりますので、どうか宜しくお願いします。