Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


806 / 2272 ツリー ←次へ | 前へ→

【9970】アクセス95から2000に移行後のエラー timtim 07/11/9(金) 10:13 質問[未読]
【9971】Re:アクセス95から2000に移行後のエラー クロ 07/11/12(月) 8:54 回答[未読]
【9974】Re:アクセス95から2000に移行後のエラー timtim 07/11/13(火) 23:14 質問[未読]
【9975】Re:アクセス95から2000に移行後のエラー Gin_II 07/11/14(水) 8:41 回答[未読]
【9976】Re:アクセス95から2000に移行後のエラー timtim 07/11/14(水) 9:14 質問[未読]
【9977】Re:アクセス95から2000に移行後のエラー Gin_II 07/11/14(水) 10:20 回答[未読]
【9978】Re:アクセス95から2000に移行後のエラー timtim 07/11/14(水) 11:12 質問[未読]
【9979】Re:アクセス95から2000に移行後のエラー Gin_II 07/11/15(木) 8:41 回答[未読]
【9982】Re:アクセス95から2000に移行後のエラー timtim 07/11/16(金) 1:40 質問[未読]
【9983】Re:アクセス95から2000に移行後のエラー Gin_II 07/11/16(金) 8:49 回答[未読]
【9989】Re:アクセス95から2000に移行後のエラー timtim 07/11/18(日) 12:38 お礼[未読]
【10008】Re:アクセス95から2000に移行後のエラー VBWASURETA 07/11/22(木) 18:23 発言[未読]
【10012】Re:アクセス95から2000に移行後のエラー timtim 07/11/22(木) 20:17 発言[未読]
【10014】Re:アクセス95から2000に移行後のエラー VBWASURETA 07/11/22(木) 20:52 回答[未読]
【10015】Re:アクセス95から2000に移行後のエラー timtim 07/11/22(木) 21:36 質問[未読]
【10016】Re:アクセス95から2000に移行後のエラー Gin_II 07/11/23(金) 2:06 発言[未読]
【10017】Re:アクセス95から2000に移行後のエラー VBWASURWTA 07/11/23(金) 9:51 発言[未読]

【9970】アクセス95から2000に移行後のエラー
質問  timtim E-MAIL  - 07/11/9(金) 10:13 -

引用なし
パスワード
   初心者ですがよろしくお願いします。
昔、95で作成されたプログラムを2000に移行し、
走らせたところ、実行時エラー「94」:と表示され
下記のコードの※しるしがついたところがエアーと表示され
CTL![東亜建設コード]= Nullとなっている。

Private Sub Form_Open(Cancel As Integer)
  Dim D_DB As Database, CTL As Recordset, TOK As Recordset
  Set D_DB = DBEngine.Workspaces(0).OpenDatabase(DBNAME)
  Set CTL = D_DB.OpenRecordset("Fコントロール")
    CTL.INDEX = "主キー"
    CTL.Seek "=", 1
  If CTL.NoMatch Then
    MsgBox "コントロールF READエラー"
    Cancel = True: CTL.Close: Exit Sub
  End If
※ 東亜建設コード = CTL![東亜建設コード]
  有効日 = CTL![有効日]
  消費税率1 = CTL![消費税率1]
  消費税率2 = CTL![消費税率2]
  
  Set TOK = D_DB.OpenRecordset("M得意先")
    TOK.INDEX = "主キー"
    TOK.Seek "=", CTL![東亜建設コード]
  If TOK.NoMatch = True Then
    MsgBox "コントロールFに東亜建設コードを入力して下さい"
    Cancel = True: CTL.Close: TOK.Close: Exit Sub
  End If
  Me![端数区分] = TOK![端数区分]
  CTL.Close: TOK.Close
  
  Me![記事61] = "上記計"
End Sub
下記の部分を変更したら
Dim D_DB As Database, CTL As Recordset, TOK As Recordset
から
Dim D_DB As Database, CTL As Database, TOK As Database
に変更したら変更した上の行{Private Sub Form_Open(Cancel As Integer)}
が黄色く反転されます。
間違いがわかりません、よろしくご指導お願いします。

【9971】Re:アクセス95から2000に移行後のエラー
回答  クロ  - 07/11/12(月) 8:54 -

引用なし
パスワード
   おはようございます
「参照設定」で[Microsoft DAO 3.* Object Library] を参照する。
※3.6があれば3.6を

>Private Sub Form_Open(Cancel As Integer)
>  Dim D_DB As Database, CTL As Recordset, TOK As Recordset
>  Set D_DB = DBEngine.Workspaces(0).OpenDatabase(DBNAME)

ここを
Dim D_DB As DAO.Database
Dim CTL As DAO.Recordset
Dim TOK As DAO.Recordset
Set D_DB = Currentdb

以下省略

としてみてはどうですか?
※Ac2000ではデフォルトでDAOが参照されていないと思います。

【9974】Re:アクセス95から2000に移行後のエラー
質問  timtim E-MAIL  - 07/11/13(火) 23:14 -

引用なし
パスワード
   ▼クロ さん:
こんばんは ご心配かけてすみません、不在でしたので
連絡が遅くなってすみません。

下のように変えると又エラーがでました。
>おはようございます 
>「参照設定」で[Microsoft DAO 3.* Object Library] を参照する。
>※3.6があれば3.6を
>
>>Private Sub Form_Open(Cancel As Integer)
>>  Dim D_DB As Database, CTL As Recordset, TOK As Recordset
>>  Set D_DB = DBEngine.Workspaces(0).OpenDatabase(DBNAME)
>
>ここを
>Dim D_DB As DAO.Database
>Dim CTL As DAO.Recordset
>Dim TOK As DAO.Recordset
>Set D_DB = Currentdb
>
>以下省略
>
>としてみてはどうですか?
>※Ac2000ではデフォルトでDAOが参照されていないと思います。

Private Sub Form_Open(Cancel As Integer)
  Dim D_DB As DAO.Database
  Dim CTL As DAO.Recordset
  Dim TOK As DAO.Recordset
  Set D_DB = CurrentDb

  Set CTL = D_DB.OpenRecordset("Fコントロール")
    CTL.INDEX = "主キー"
    CTL.Seek "=", 1
  If CTL.NoMatch Then

上記のように入力すると
実行時エラー 3251
CTL.INDEX = "主キー" が黄色くなります。
入力が間違ってますか?

【9975】Re:アクセス95から2000に移行後のエラー
回答  Gin_II  - 07/11/14(水) 8:41 -

引用なし
パスワード
   > CTL.INDEX = "主キー"

"主キー"という名前のインデックスは設定してあるかを確認してください。
テーブルのデザインビューで、「表示」→「インデックス」

設定がしてあるのならば、

>   Set CTL = D_DB.OpenRecordset("Fコントロール")

  Set CTL = D_DB.OpenRecordset("Fコントロール", dbOpenTable)

のように変更してください。

【9976】Re:アクセス95から2000に移行後のエラー
質問  timtim E-MAIL  - 07/11/14(水) 9:14 -

引用なし
パスワード
   ▼Gin_II さん:
>> CTL.INDEX = "主キー"
>
>"主キー"という名前のインデックスは設定してあるかを確認してください。
>テーブルのデザインビューで、「表示」→「インデックス」
>
>設定がしてあるのならば、
>
>>   Set CTL = D_DB.OpenRecordset("Fコントロール")
>
>  Set CTL = D_DB.OpenRecordset("Fコントロール", dbOpenTable)
>
>のように変更してください。


おはよう御座います、お世話になります。

上記のとおり修正したところ 実行時エラー 3219

と変更した行全体が黄色くなります。

よろしくお願いします。

【9977】Re:アクセス95から2000に移行後のエラー
回答  Gin_II  - 07/11/14(水) 10:20 -

引用なし
パスワード
   >上記のとおり修正したところ 実行時エラー 3219
>と変更した行全体が黄色くなります。

元のコードの、

>   Set D_DB = DBEngine.Workspaces(0).OpenDatabase(DBNAME)

ここの、DBNAME には何が入っていますか?
同じmdbファイル内のテーブル(リンクテーブルは不可)であれば、
OpenRecordset メソッドで、dbOpenTable が使えると思いますけど。

【9978】Re:アクセス95から2000に移行後のエラー
質問  timtim E-MAIL  - 07/11/14(水) 11:12 -

引用なし
パスワード
   ▼Gin_II さん:
>>上記のとおり修正したところ 実行時エラー 3219
>>と変更した行全体が黄色くなります。
>
>元のコードの、
>
>>   Set D_DB = DBEngine.Workspaces(0).OpenDatabase(DBNAME)
>
>ここの、DBNAME には何が入っていますか?
>同じmdbファイル内のテーブル(リンクテーブルは不可)であれば、
>OpenRecordset メソッドで、dbOpenTable が使えると思いますけど。

誠にすみません、多分 アクセス95の分では最初に平成・年・月・日と日付を
入力します、エラー部分は日付の読み込みかと思いますが・・・。
よろしくお願いします。

【9979】Re:アクセス95から2000に移行後のエラー
回答  Gin_II  - 07/11/15(木) 8:41 -

引用なし
パスワード
   > 多分 アクセス95の分では最初に平成・年・月・日と日付を
> 入力します、エラー部分は日付の読み込みかと思いますが・・・。

どういうことでしょうか?

>   Set D_DB = DBEngine.Workspaces(0).OpenDatabase(DBNAME)

これは、外部のmdbファイルを開くときに使うもので、引数には
mdbファイル名が入っているはずです。

そのmdbファイルは、開いているファイルとは別なんですよね?


> Set CTL = D_DB.OpenRecordset("Fコントロール")

このテーブル(クエリ?)が、どのファイルに入っているかを確認して
ください。

外部のファイルであれば、OpenDatabase メソッドを使うか、リンクテーブルで
Find 系のメソッドを使う必要があると思います。

【9982】Re:アクセス95から2000に移行後のエラー
質問  timtim E-MAIL  - 07/11/16(金) 1:40 -

引用なし
パスワード
   ご迷惑をかけてすみません、入力しましたら
こんどは、実行時エラー2501
「OpenForm アクションの実行はキャンセルされました。」と
下記の2行目がエラー表示されました。

Private Sub 東亜建設工業請求書_Click()
  DoCmd.OpenForm "E東亜請求書手入力", acNormal, , , acEdit
End Sub

acNormal, , , acEdit が間違ってるのでしょうか?

【9983】Re:アクセス95から2000に移行後のエラー
回答  Gin_II  - 07/11/16(金) 8:49 -

引用なし
パスワード
   DoCmd.OpenForm "E東亜請求書手入力", acNormal, , , acEdit

> acNormal, , , acEdit が間違ってるのでしょうか?

と思ったのであれば、ヘルプを確認してください。

OpenForm メソッド(Access2003ヘルプより引用)

DataMode  省略可能です。AcFormOpenDataMode クラスの定数を使用します。

使用できる定数は、次に示す AcFormOpenDataMode クラスの定数のいずれかです。
acFormAdd ユーザーは新しいレコードを追加できますが、既存のレコードを編集できません。
acFormEdit ユーザーは既存のレコードを編集したり、新しいレコードを追加したりできます。
acFormPropertySettings (既定値)
acFormReadOnly ユーザーはレコードの参照のみ可能です。

Access2003では、上記のようになっています。

【9989】Re:アクセス95から2000に移行後のエラー
お礼  timtim  - 07/11/18(日) 12:38 -

引用なし
パスワード
   長い間、教えて頂きましてありがとう御座いました。
何とか移行後のエラーが元に回復できました。
使ってみてエラーがでましたら その時はよろしくお願いします。
ほんとにありがとう御座いました。

【10008】Re:アクセス95から2000に移行後のエラー
発言  VBWASURETA  - 07/11/22(木) 18:23 -

引用なし
パスワード
   こんにちはー。

参考までにですが、私も同じような作業で問題になったことがあります。

ただ書かれているような問題ではなく。覚えている範囲で2点ありました。

1.再クエリーをフィールド指定無しで呼び方すとクエリーが更新されない。

2.コンバートの際、クエリー名又はパラメータに半角全角文字を使うと
コンバートが勝手に半角に切り替えてしまいクエリーが存在しない又は、
パラメータ指定でエラーがありました。

その場合は後から手動で修正していくと大変な思いをした覚えがあります。

【10012】Re:アクセス95から2000に移行後のエラー
発言  timtim  - 07/11/22(木) 20:17 -

引用なし
パスワード
   ありがとう御座います、現在貴殿の言われたように あらゆるところでエラーがでて
困っているところです。素人にでもわかりやすい方法はないでしょうか?

【10014】Re:アクセス95から2000に移行後のエラー
回答  VBWASURETA  - 07/11/22(木) 20:52 -

引用なし
パスワード
   ▼timtim さん:
こんばんは。

比較的に問題が少なく済む方法としまして、
これはあくまで私が使っていた環境ですので参考にして下さい。

ですが、手間なのは変わりませんでした。
問題となりやすいのはモジュール関係を2000データベースで
コンバートさせると問題が発生します。

方法としては新規にデータベースを生成した後、
そのまま新規のデータベースに既存のデータベースの
テーブル、フォーム、レポート類をエクスポートします。
何故かはモジュール類は後でコンバートさせずに移すためです。
その後はモジュールを地道にコピー&ペーストします。

後、問題なのは上記にも記載しましたが、再クエリーだけは使用している
箇所を洗い出して修正していく作業やテーブルもエクスポートしている
わけですからキーの貼り直しも必要になりす。

この関係で結構大掛かりな作業になりました。

【10015】Re:アクセス95から2000に移行後のエラー
質問  timtim  - 07/11/22(木) 21:36 -

引用なし
パスワード
   ▼VBWASURETA さん:
>▼timtim さん:
>こんばんは。
>
>比較的に問題が少なく済む方法としまして、
>これはあくまで私が使っていた環境ですので参考にして下さい。
>
>ですが、手間なのは変わりませんでした。
>問題となりやすいのはモジュール関係を2000データベースで
>コンバートさせると問題が発生します。
>
>方法としては新規にデータベースを生成した後、
>そのまま新規のデータベースに既存のデータベースの
>テーブル、フォーム、レポート類をエクスポートします。
>何故かはモジュール類は後でコンバートさせずに移すためです。
>その後はモジュールを地道にコピー&ペーストします。
>
>後、問題なのは上記にも記載しましたが、再クエリーだけは使用している
>箇所を洗い出して修正していく作業やテーブルもエクスポートしている
>わけですからキーの貼り直しも必要になりす。
>
>この関係で結構大掛かりな作業になりました。

初心者でわかったようなわからないような感じですからもう一度お尋ねします。
今なおしてる分は95から97・2000に移行しました、出来あがったと思ったらエラーが
出始めました。
もう一度、最初から新しく、2000の新規のデータベースから既存の95データベースを
そのまま(テーブル、フォーム、レポート類)をインポートして、
やり直したほうがよろしいですか?

【10016】Re:アクセス95から2000に移行後のエラー
発言  Gin_II  - 07/11/23(金) 2:06 -

引用なし
パスワード
   >今なおしてる分は95から97・2000に移行しました、出来あがったと思ったらエラーが
>出始めました。
>もう一度、最初から新しく、2000の新規のデータベースから既存の95データベースを
>そのまま(テーブル、フォーム、レポート類)をインポートして、
>やり直したほうがよろしいですか?

変換の際に問題が発生するのは、ある程度パターンがあると思います。
それを事前に知ってから対処すれば、そこまで大変ではないと思います。
(最終的な確認作業は大変でしょうけど ^^; )

Access97からの資料ですが、

VBAエキスパート公式サイト - 学ぶ・教える VBAマイグレーションセンター
http://vbae.odyssey-com.co.jp/training/migration.htm

こちらなんかが参考になると思います。

【10017】Re:アクセス95から2000に移行後のエラー
発言  VBWASURWTA  - 07/11/23(金) 9:51 -

引用なし
パスワード
   こんにちは。

わかりづらい内容になってしまったようで。。

>もう一度、最初から新しく、2000の新規のデータベースから既存の95データベース>を
>そのまま(テーブル、フォーム、レポート類)をインポートして、
>やり直したほうがよろしいですか?

簡単に言えばインボートです。出来るだけAccess2000自身がコンバートしない
ようにするためにその方法をしたわけです。

Gin_IIさんが言うように一度コンバートで生じる問題を調べておいた
ほうが良いかも知れませんね。

後からだと、取り返しがつかない場合もありますから。

806 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078201
(SS)C-BOARD v3.8 is Free