ACCESS2000で、フォーム上にボタンを作り、そのボタンをクリック時に
以下のイベント プロシージャを実行させています。
Dim dbs As Database
Dim rst As Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("採番_相談者")
Dim Number
rst.MoveFirst
Number = rst!相談者番号
Number = Number + 1
Me.相談者NO = Number '相談者NOはフォーム上のテキストボックスです。
で上記 Set rst = dbs.OpenRecordset("採番_相談者")
の所で、「実行時エラー 13 型が一致しません」とエラーになります。
テーブル:採番_相談者は、オートナンバー型のIDフィールドと相談者番号という7桁のテキスト型で
”1000001”が入っています。(ちなみに、数値型に変えても同じエラーでした。)
詳しい方教えてください。お願いします。
No.3ベストアンサー
- 回答日時:
#1さんの回答に同じく
さらにソースの先頭に「Option Explicit」を記述するともっとベター
このソースは、フォーム上の相談者NOテキストボックスに新規"相談者番号"を取得して表示すものでしょうか?
(余計なおせっかいですが...)ソースに省略箇所がありありなので、ちょっと修正
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim strSQL As String
Dim Number As Integer
Set dbs = CurrentDb
strSQL = "select max(相談者番号) as max相談者番号 from 採番_相談者;"
Set rst = dbs.OpenRecordset(strSQL, dbOpenSnapshot)
If IsNull(rst.Fields("max相談者番号").value) Then
Number = 1000001
Else
Number = CInt(rst.Fields("max相談者番号").Value)
Number = Number + 1
End If
Me.相談者NO.Value = Number
No.2
- 回答日時:
これはDAOの記述ですよね。
Access2000はADOがデフォルトなのでまずDAO X.X Object Libraryに参照設定して宣言部でrstを宣言するときにrstがDAOのレコードセットオブジェクトであることを明示的に宣言する必要があります。
Dim rst As DAO.Recordset
のように
またはADOで
Dim Rst As New ADODB.Recordset
として
Rst.Open "採番_相談者", CurrentProject.Connection, adOpenKeyset, adLockPessimistic
でいけるのではと
No.1
- 回答日時:
Recordsetという型はDAOとADOで同じ名前です。
単にRecordsetと記述した場合に、DAOとADOのどちらが採用されるかは、
参照設定の優先順位で決まります。
おそらく、この場合、ADOの方の優先順位が高いため、RecordsetがADOの
Recordsetと解釈されているのでしょう。
ADOのRecordsetはDAOのdbs.OpenRecordsetで戻されるオブジェクトとは
型が違うのでエラーになります。
対処としては、
(1)DAOの優先順位をADOよりも上にする
(2)Dim rst As Recordsetの記述をDim rst As DAO.Recordsetとし、
DAOのRecordsetであることを明示的に宣言する
の2通りが考えられます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセス レポートを開いたときにパラメーターの自動入力がしたい 4 2022/11/30 11:21
- Visual Basic(VBA) Excle VBA Findメソッドについて 3 2022/07/15 13:56
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) IBM Notes9のメールをExcelVBAにて送信するコードについての質問です。 以下のコードを 3 2023/06/21 17:58
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- Visual Basic(VBA) 実行時エラー´5854´ 文字列型パラメーターが長すぎます。 3 2023/06/08 21:17
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
エラー(型が一致しません。)の対処方法
Visual Basic(VBA)
-
Accessで「型が一致しません」エラーが出る
Excel(エクセル)
-
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
-
4
Access2010 「演算子がありません」エラー
その他(データベース)
-
5
どこにもフォーカスを当てたくない
Access(アクセス)
-
6
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
-
7
access別のテーブルを参照してテキストボックスに値を表示、編集したい
Access(アクセス)
-
8
Accessでレコードを別テーブルへコピーするには
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
VBAがブレークモードになっ...
-
エクセルエラー13型が一致しま...
-
【Excel VBA】マクロをボタンに...
-
なぜこんな初歩的なVBAのIf文で...
-
実行時エラー3001「引数が間違...
-
EXCEL VBAマクロ中断でデバッグ...
-
ExcelVBA Range クラスの Page...
-
VBS実行時エラー オブジェクト...
-
OLEDB.NETで接続できない
-
AccessVBAでExcelを起動し、罫...
-
実行時エラー -'-2147417848
-
エクセルVBAで以下のようなコー...
-
ACCESS2000VBAでエラー「型が一...
-
なぜエラーになるのでしょうか...
-
ASP.NET OleDbConnectionが定義...
-
VB6+SQL サーバー 2000 で 実行...
-
INSERT INTOステートメント構文...
-
ExcelのVBAのAutoFillの使い方...
-
VBSで変数の宣言はできないので...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
【Excel VBA】マクロをボタンに...
-
実行時エラー -'-2147417848
-
マクロについて教えてください...
-
VBAがブレークモードになっ...
-
なぜこんな初歩的なVBAのIf文で...
-
実行時エラー3001「引数が間違...
-
OLEDB.NETで接続できない
-
ExcelVBA Range クラスの Page...
-
EXCEL VBAマクロ中断でデバッグ...
-
ADODB.Streamを使用してUTF-8を...
-
VBS実行時エラー オブジェクト...
-
Outlook.ApplicationをCreateOb...
-
VBSで変数の宣言はできないので...
-
なぜエラーになるのでしょうか...
-
VB6+SQL サーバー 2000 で 実行...
-
VBAでのエラー
-
Application.ActiveInspectorで...
-
Excelで下記のようにマクロを作...
おすすめ情報