もともとはEXCEL2000XPのVBAでマクロを作り、ACCESS2000のMDBを使用しています。 これはうまく機能しています。 これを、ACCESS97に落としたら、EXCEL2000からMDBを参照すると、NOMATCHがうまく機能してくれません。
インデックキーでテーブルを読みに行くのですが、NOMATCHでは、レコードがあるにもかかわらず、常にTRUEになってしまいます。
ACCESS97へのコンバート処理は、ACCESS2000にて旧バージョンへの変換を使用しました。
それに、ACCESS97でも、NOMATCHがうまく機能していません。
ACCESSはデータとプログラムと別々に作成しており、テーブルのリンクで結合しています。
アドインに問題があるのかな、と思ったりしているのですが良く分かりません。
どなたか御教授願います。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
うーん・・・現状が把握できてません。
。。ソースを公開できませんか?
この回答への補足
早速返事を頂きありがとうございます。
補足させていただきます。
コードは次の通りです。 Accessでのフォームのコードです
Const DBName = "DATA97.mdb"
Public DB As Database
Public BGrc As Recordset
Private Sub Code_AfterUpdate()
'===================================================
Set DB = DBEngine.Workspaces(0).OpenDatabase(DBName)
Set BGrc = DB.OpenRecordset("Gyomu")
BGrc.Index = "BGprmkey"
BGrc.Seek "=", Me!code
If Not BGrc.NoMatch Then
Me!systemname = BGrc!gyomu
Else
Me!systemname = Null
End If
End Sub
ただ、これだけのことなのですが、データがあるにもかかわらず、BGRC.NOMATCHが Trueになってしまいます。
これを、若干変更してEXCEL2000で 実行してみましたが、accessと同様の結果です。
アドインを比較してみたのですが、。。。。。
そこで、一つ思ったのですが、OFFICE2000をインストールしてから、ACCESS97をインストールしたために、何らかのファイルが壊れているのではないかと思われるのです。 明日、早速やってみようと思います。
よろしく御教授ください。
No.2
- 回答日時:
( ・・)?ン
なぜだろう。。。
WIN2000SERVER_SP2
ACCESS2000_SP2
環境で、NoMatch はうまく反応してくれました。
で思ったのですが、SEEKを使わないのでよければ、SQL文で拾う方法があります。
これでだめなら、DBへの接続方式をADOにしてあげれば、きちんとできるような気がします。
Private Const DBName = "c:\DATA97.mdb"
Private DB As Database
Private BGrc As Recordset
Private Sub Code_AfterUpdate()
Me!systemname = getGyomu(Me!Code)
End Sub
'あえて受けの「inVal」のタイプを宣言してません。
Private Function getGyomu(inVal) As Variant
Dim tdfWork As TableDef
Dim strField As String
Dim strSQL As String
getGyomu = Null
Set DB = DBEngine.Workspaces(0).OpenDatabase(DBName)
'この処理は、インデックス名「BGprmkey」の割当たってるフィールド名を取得しているだけです。
'直接フィールド名を指定してあげたら、ここの部分の処理は省けます。
'strField = 《キーフィールド名》って感じ
'「Gprmkey」に該当するフィールド名を得る
Set tdfWork = DB.TableDefs("Gyomu")
strField = tdfWork.Indexes("BGprmkey").Fields(0).Name
'Indexとなるフィールドの型がわからなかったので、二通り書いておきます。
'型にあわせて、どちらかを使用してください。
'SQL文の作成(キーとなるフィールドが数値型の場合)
strSQL = "select Gyomu from Gyomu where " & strField & "=" & inVal
'SQL文の作成(キーとなるフィールドが文字列型の場合)
strSQL = "select Gyomu from Gyomu where " & strField & "='" & inVal & "'"
'レコードセット
Set BGrc = DB.OpenRecordset(strSQL)
'データが存在していたら取得
If Not BGrc.EOF Then
getGyomu = BGrc.Fields(0).Value
End If
BGrc.Close
DB.Close
Set BGrc = Nothing
Set DB = Nothing
End Function
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- その他(パソコン・スマホ・電化製品) EXCELのSUMPRODUCT関数について 2 2022/09/21 17:30
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- その他(データベース) Microsoft Accessについて 1 2022/06/06 16:20
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) Access VBAから使用したExcelプロセスを閉じる方法について 4 2022/06/08 17:50
- Access(アクセス) accessデータを指定したExcel、そして指定したセルへエクスポートするaccess VBAコー 2 2023/05/17 17:02
- その他(データベース) Accessのリンクテーブルについて 1 2023/05/20 16:10
- その他(データベース) 20万行あるデータを動かしたい 2 2023/06/13 15:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessのフィールド名に半角括...
-
2つ目のレコードの値を取得す...
-
AccessのDAOでフィールド名を配...
-
日付と文字列を条件としてDLook...
-
フィールド名の指定でエラー
-
アクセス ADO Null以外のレコ...
-
ACCESSのフィールドデータの照...
-
SQLでフィールド番号を指定する...
-
ACCESS VBA Parametersで or演...
-
DataTableに特定のフィールドが...
-
INT64対応のprintf系関数はあり...
-
accessでフィールド追加のあと...
-
ACCESSで日別集計をする場合
-
Accessの画像挿入のVBAコード
-
クリスタルレポートの式フィー...
-
フィールド名をループの添え字...
-
Access :ALTER TABLE で作成...
-
ノーツ:ユーザ名から別名を取...
-
AS/400の論理ファイルで年度だ...
-
Access Dcount関数で引数が指定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
accessでフィールド追加のあと...
-
INT64対応のprintf系関数はあり...
-
DataTableに特定のフィールドが...
-
Accessのフィールド名に半角括...
-
2つ目のレコードの値を取得す...
-
AccessのDAOでフィールド名を配...
-
クリスタルレポートで困ってい...
-
テーブルのデータ型の変更がで...
-
Access 2010で実行時エラー3061
-
日付と文字列を条件としてDLook...
-
2次元のdictionary
-
ACCESSで日別集計をする場合
-
Access VBA 添付型フィールド
-
SQLで複数のテーブルと結合した...
-
クリスタルレポートで文字列の...
-
ACCESSで視覚的タイムテーブル...
-
アクセス ADO Null以外のレコ...
-
アクセスでADO 並べ替えが適用...
-
AccessVBAで他テーブルのデータ...
-
オートナンバー型を抽出条件に...
おすすめ情報