VBA(Access95)で作成されたツールをAccess2000で動かすと、
コンパイルエラーになってうまく動きません。
今のところエラーになっている箇所は、
Dim xxx As Recordset
Global xxx As Database
です。
どうすれば問題なく動くようになりますか?
やっぱり、2000ではダメなんでしょうか??
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

Micorsoft DAO の参照設定がされていないためです。


Access2000が手元にないので、Access97の場合ですが、
モジュールを開いて、「ツール」-「参照設定」を選択し、
Microsoft DAO ObjectLibrayをチェックしてみてください。
それで対応できると思います。

この回答への補足

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
早速のご回答、どうもありがとうございました。
「ツール」-「参照設定」で、Microsoft DAO ObjectLibrayを探してみました。
 Microsoft DAO 2.5/3.0 Compatibility Libray
 Microsoft DAO 3.0 Object Libray
 Microsoft DAO 3.6 Object Libray
それらしいのが上記の3つだったので、設定してみましたがコンパイルエラーになりました。
また、何かいい方法があったら教えて下さい。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

と、先程お知らせしたのですが、Microsoft DAO 3.6 Object Librayを設定した状態で、
データベースの変換からやり直したところ、
『このデータベースを変換または有効にするときにコンパイルエラーが発生しました』
というメッセージはでるものの、なんとか動くようになりました。

かなり助かりました。どうもありがとうございました!!

補足日時:2001/04/18 10:45
    • good
    • 0
この回答へのお礼

早速のご回答、どうもありがとうございました。

「ツール」-「参照設定」で、Microsoft DAO ObjectLibrayを探してみました。
 Microsoft DAO 2.5/3.0 Compatibility Libray
 Microsoft DAO 3.0 Object Libray
 Microsoft DAO 3.6 ObjectLibray
それらしいのが上記の3つだったので、設定してみましたがコンパイルエラーになりました。

また、何かいい方法があったら教えて下さい。

お礼日時:2001/04/18 10:20

ACCESS2000からはADO(ActiveX Data Object)が既定になっています。


ACCESS97までのDAO(Data Access Object)の記述のコードを使用する
には参照設定でMicrosoft DAO 3.6 Object Libraryにチェックすれば
OKです。
ただ、この時にDAOとADOが同時にチェックされている場合は優先順位が
高い方を優先的に参照するのでADOが上位の時はDAOであると明示する必要があります。
(例)
Dim rs As DAO.Recordset

DAOが上位ならば明示しなくても使用できます。
もし、ADOを使用しないのであれば参照設定でMicrosoft ActiveX Data Object~
のチェックを外しておけばよいと思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

おかげさまで、何とか動くようになりました。

お礼日時:2001/04/18 10:52

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qバージョンアップを英語で言うと

お世話になっております
●●というソフトウェアがあったと仮定して

1.以下の訳をもっと自然に訳してください
※特にバージョンのところをお願いします
「このマシンは●●の4以上が必要です」
→This machine requires ●● whose version is more than 4

2.(現在のバージョンは対応してないので、)バージョンアップが必要である。
この場合の「バージョンアップ」とは
raise its version up
raise up its version
raise its version   (upを書かない)
grade its version up

のどれが自然でしょうか。
ちなみに今回は、ソフトウェアのバージョンに限ってでお願いします

Aベストアンサー

1. This system requires ●● 4.0 or greater [higher, later, later version].

2. The system requires a version upgrade of the application software to become compliant.

バージョンアップをする
update [upgrade] the version
update [upgrade] Version 3.0 to 4.0
update [upgrade] to a newer version

The company has upgraded ●● to version 4.0.
a patch that updates Version 3.0 to 4.0

QAccessVBAで「dim dbs as database」がエラーになる

済みませんが、非常に基本的なことを聞かせていただきたいと思います。

AccessのVBAで関数を実行すると、いきなりエラーになりました。
dim dbs as database の文でエラーになり、「コンパイルエラー ユーザ定義型が定義されていません」というエラーメッセージが出ました。
databaseが定義されているような感じです。

どうすれば宜しいでしょうか?

Aベストアンサー

こんにちは。maruru01です。

VBEの画面のメニューの[ツール]→[参照設定]で、

「Microsoft DAO X.X Object Library」(X.Xはバージョン)

の項目にチェックが入っていますか?

ちなみに、DatabaseオブジェクトはDAOしかないのでいいですが、Recordsetオブジェクトなどは、ADOとDAOの両方にあるので、

Dim rs As DAO.Recordset

のように、どちらかを明確に記述しないといけません。
統一的で分かりやすいコーディングのためには、Databaseオブジェクトも、

Dim dbs As DAO.Database

のように記述するように心がけましょう。

Qバージョンアップは和製英語らしいです。バージョンア

バージョンアップは和製英語らしいです。バージョンアップのことをアメリカ人は何と言っていますか?

Aベストアンサー

    upgrade

QAccess2000 サブフォームのRecordSet取得法

Access2000を用い、メインフォームを作成(F_Main)し、
サブフォームコントロール(sub_from)を配置しました。
sub_formの「ソースオブジェクト」プロパティを別フォーム(F_Sub)とし、F_Subのレコードソースにはテーブル(T_Name)を設定しました。
つまり、メインフォームに子フォームが配置された状態です。

このF_Subのテーブルのレコードを操作するため、以下のプログラムを作りましたが、「フォームF_Subが見つかりません。」というエラーになってしまいます。

Dim rs as Recordset
rs = Forms![F_Sub].RecordsetClone ← エラー

メインフォームのモジュールでも、サブフォームのモジュールでもどちらにこのプログラムを記述してもエラーが発生します。

メインフォーム上に配置したサブフォームのレコードセットを取得し、操作する方法をご教授下さい。

環境
Windows 2000 Professional
Access 2000

Aベストアンサー

こんにちは。maruru01です。

サブフォームの参照方法は、

Forms!メインフォーム名!サブフォーム名.Form.Recordset
または、
Me!サブフォーム名.Form.Recordset
です。
下の場合は、メインフォームのモジュールに記述します。

Qアンジェラ・アキの「Kiss Me Good-Bye」(英語バージョン)のカラオケバージョンを探しています。

アンジェラ・アキさんの「Kiss Me Good-Bye」(英語バージョン)のカラオケバージョン(歌なし)を探しています。
シングルのCDの収録内容では日本語バージョンと英語バージョンが収録されているのですが、カラオケバージョンは入っていませんでした。
どなたかカラオケバージョンの音源をどこで入手できるか教えていただけないでしょうか。
姉が婚約者の告別式で使いたいそうなので、なるべく早めに教えていただけるととても有り難いです。よろしくお願いいたします。

Aベストアンサー

お悔やみ申し上げます。

似たような状況で過去にも探してみましたが、私が把握している限りこの曲のカラオケは発表されていません。

カラオケで歌う場合は clubDAM あたりでカラオケ楽曲を買って流すしかないでしょう。
http://www.clubdam.com/app/leaf/songDamKaraokeLeaf.do?contentsId=3848935

しかしそういう辛い状況で、お姉さま歌い続けられますかね?
ひとつの方法として、英語バージョンを流しながらお姉さまが日本語の方を朗読するパターンが考えられます。参列者にはその方が判りやすいでしょう。
*********
カラオケを含め楽曲は、不特定多数の人が集まるところでの使用は著作権法に抵触します。慎重にお取り扱いください。

Q変数の宣言の名称を教えてください。(Dim i As Long)

Dim i As Longについて

「dim」→?
「i」→変数名
「As」→?
「Long」→変数の型

というように、dimとAsがなんと言えばいいのかわかりません。
アドバイスよろしくお願いします。

Aベストアンサー

>「i」→変数名
という形と合わせるのなら、以下のような感じでしょうか?
(意味についてのご質問ではないと受け取りました)

Dim・・・ステートメント
     変数の(型)宣言に用いる
AS・・・・キーワード
     変数や関数の型を示したり、フォルダ(やファイル)名を
     示したりするのに用いる

Q邦楽を歌っている人の曲の英語バージョン。

テレビなどで、ごくたま~にですが、国内アーティストが歌っている曲の英語バージョンが流れている時があります。私が聞いて覚えている曲は、プッチモニの「ちょこっとLOVE」の英語バージョンでした。こういった曲は、他にどんな曲がありますか?
また、どこで手に入りますか?

Aベストアンサー

THE BOOMの島唄はいろいろな人がカヴァーしています。

IZZY(英語)
アイジン(北京語)
周華健(広東語)
アルフレッドカゼーロ(スペイン語)

まだあるような気がしますが・・・。

QVBAからaccessへの接続で、RecordsetのCursorTypeが勝手に変更される

エクセルVBAからaccessへの接続で、RecordsetのCursorTypeが勝手に変更されてしまいます。

Dim rst As New ADODB.Recordset
rst.CursorType = adOpenStatic

と「adOpenStatic」に設定したいのですが、
Set rst = con.Execute(sql_str, , adCmdText)
のようにクエリを実行した直後にCursorTypeを調べると、「adOpenForwardOnly」に変わってしまっています。
(設定直後に調べると、ちゃんとadOpenStaticになっています)

「CursorType」を何に設定しても、Execute直後に「adOpenForwardOnly」になってしまっていまうようです。

CursorTypeをadOpenStaticにして、RecordCountを使いたいのですが、、、
CursorTypeが変わってしまう原因をお知りの方は、教えていただけるとありがたいです。

Dim rst As New ADODB.Recordset
Dim con As New ADODB.Connection
con.Open "Provider=Microsoft.jet.OLEDB.4.0;" & "Data Source=" & ThisWorkbook.Path & "\" & mdb_file & ";"
rst.CursorType = adOpenStatic
rst.LockType = adLockReadOnly
MsgBox "前 = " & rst.CursorType
Set rst = con.Execute(sql_str, , adCmdText)
MsgBox "後 = " & rst.CursorType

エクセルVBAからaccessへの接続で、RecordsetのCursorTypeが勝手に変更されてしまいます。

Dim rst As New ADODB.Recordset
rst.CursorType = adOpenStatic

と「adOpenStatic」に設定したいのですが、
Set rst = con.Execute(sql_str, , adCmdText)
のようにクエリを実行した直後にCursorTypeを調べると、「adOpenForwardOnly」に変わってしまっています。
(設定直後に調べると、ちゃんとadOpenStaticになっています)

「CursorType」を何に設定しても、Execute直後に「adOpenForwardOnly」になって...続きを読む

Aベストアンサー

ohnotellme 様。

Recordset の前に Commandを実行してから、Recordset を開けるのじゃないでしょうか?
ここらになると、さすがに、SQL が手が出ないので、実際のところ確かめは出来てはいないのですが、以下に、一応、格好だけは出来ています。

UserFunction ですから、一応、貫通したら、ErrHandler のメッセージの部分は必要ありません。それと、Connectionは、開きっぱなしにしてよいのか、ここらは、まだ経験が浅いので、私には判断付きませんが、私の知っている範囲では、一旦閉じるようにすると聞いています。しかし、[閉じる]・[開ける]を繰り返すのは、その反応を異様に遅くするのです。それで、前回、ADO使って、Excel側からのコネクトする方法は、さじを投げてしまいました。

今回は、ほとんど自信がありませんので、そちら側で、ブレークポイントを設けて、ちょっと見てくださいませんか?私にとっても、ここはまだ勉強中で、もう少し余裕があれば、また違った回答ができるかと思いますが、それでも何とか解決までこぎつけたいです。
よろしくお願いします。

'--------------------------------------------------------
Public Function post_query(ByVal sql_str As String) As Integer
  Dim Con As New ADODB.Connection
  Dim Rst As ADODB.Recordset
  Dim Cmd As ADODB.Command
  Dim mdb_file As String
 mdb_file = "code.mdb"
On Error GoTo DbClose
  Con.Open "Provider=Microsoft.jet.OLEDB.4.0;" & "Data Source=" & ThisWorkbook.Path & "\" & mdb_file & ";"
Set Cmd = New ADODB.Command
Set Cmd.ActiveConnection = Con
With Cmd
 .CommandText = sql_str
 .CommandType = adCmdText
 .Execute
End With
Set Rst = New ADODB.Recordset
Set Rst.ActiveConnection = Con
Rst.Open ,Cmd , adOpenStatic, adLockReadOnly
 '※ここでチェック(Break Point地点)
post_query = Rst.RecordCount
DbClose:
If Err.Number > 0 Then
 MsgBox Err.Number & "(" & Err.Description & ")"
 On Error GoTo 0
End If
Con.Close
 Set Cmd = Nothing
 Set Rst = Nothing
 Set Con = Nothing
End Function

ohnotellme 様。

Recordset の前に Commandを実行してから、Recordset を開けるのじゃないでしょうか?
ここらになると、さすがに、SQL が手が出ないので、実際のところ確かめは出来てはいないのですが、以下に、一応、格好だけは出来ています。

UserFunction ですから、一応、貫通したら、ErrHandler のメッセージの部分は必要ありません。それと、Connectionは、開きっぱなしにしてよいのか、ここらは、まだ経験が浅いので、私には判断付きませんが、私の知っている範囲では、一旦閉じるようにすると聞...続きを読む

Q木村カエラのbutterflyの英語バージョンの歌詞

木村カエラのbutterflyの英語バージョンの歌詞

木村カエラのbutterflyの英語バージョンの歌詞をご存じの方、教えてください。

Aベストアンサー

歌詞の記載は「許諾」されているサイトでしか記載はありません。

「許諾」されている音楽サイトを検索して下さい。

QAccess97からACCESS2000への変更

Access97でマクロは使わずSQLやVBAというやつで、
会社にいた人がクレーム情報を管理する台帳を作ってくれました。
FREEソフトなんかと連動して、メールを送付するようなこともできるようになっています。
会社でAccess97からAccess2000へ変更することになったのですが、このアプリケーションを開発してくれた人がAccess97のファイルを2000でやたら開くともう2000でしか開けなくなると言っていました。彼が会社をやめてしまって困っています。
どうすればAccess97からAccess2000に移行できるのですか?
単純に97のファイルを2000で開くとどのような不具合が起きるのですか?

Aベストアンサー

 Access97から2000へ移行したときに、VBAをほとんど手直しした経験があります。
 業務で使っていますので、バージョン変更のトラブルは避けたいため、新しいバージョンへアップすることは考えています。
 環境を見ますと2000は安定していますので現在も2000利用者は一番多いと思います。
 
 データベースは業務で使っている人がほとんどと思いますから、従って長期にわたって変更されない方が使い勝手も良いという事だと思います。


人気Q&Aランキング

おすすめ情報