質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

2回答

3023閲覧

Fieldsで文字化け・別の値を取得している

goulok

総合スコア12

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2020/06/16 02:29

編集2020/06/16 02:54

Accessでイベントを実行すると、たびたび突然終了していました。
RecordSetでFieldsの値にアクセスすると、この現象が起きているようです。

たとえば以下のような値を取得しています。
それぞれ 20200501 を示しているはずのフィールドです。

Local\2
2: ??
※コードは、前者「cmd移動情報追加」をご参照ください

MSysNavPaneGroupCategories
????邸???貝?????邸???貝
※コードは、後者「cmd集計」をご参照ください

このファイルでリレーションシップは利用していません。
解決にあたって行うべきことは何でしょうか。

必要な情報がありましたら、ご指摘ください。

※本質問は、Microsoftコミュニティでも同じ質問をしています。
できるだけ早く解決したく、ご了承いただければ幸いです。

Private Sub cmd移動情報追加() Dim dbs As DAO.Database Dim t_Idou As DAO.Recordset Dim q_Idou As DAO.Recordset Dim lngStart(1) As Long Dim strCrit As String Dim strID As String Set dbs = Application.CurrentDb Set t_Idou = dbs.OpenRecordset(Name:="移動対象_算定日", Type:=dbOpenDynaset) Set q_Idou = dbs.OpenRecordset(Name:="Q_移動抽出", Type:=dbOpenDynaset) Do Until q_Idou.EOF If Not q_Idou(1) Like strID Then Erase lngStart() strID = q_Idou(1) lngStart(1) = CLng(Left(q_Idou(7), 8)) If lngStart(0) = 0 Then strCrit = "T_NO Like '" & q_Idou(1) & "'" Else strCrit = "T_NO Like '" & q_Idou(1) & "' AND T_DATE >" & lngStart(0) End If t_Idou.FindFirst strCrit Do Until t_Idou.NoMatch t_Idou.Edit ' 以下の値の取得で突然終了する If lngStart(1) > t_Idou(2) Then t_Idou(0) = q_Idou(9) Else If q_Idou(12) = 0 Then t_Idou(0) = q_Idou(4) End If End If t_Idou.Update t_Idou.FindNext strCrit Loop lngStart(0) = lngStart(1) q_Idou.MoveNext Loop q_Idou.Close t_Idou.Close End Sub
Private Sub cmd集計() Dim dbs As DAO.Database Dim rs日 As DAO.Recordset   Set dbs = Application.CurrentDb strSQL = "SELECT distinct Q_p_data.[T_KAIKEI_DATE]" strSQL = strSQL & "FROM Q_p_data;" Set rs日 = dbs.OpenRecordset(strSQL) str日 = "" Do Until rs日.EOF ' 以下の値の取得で突然終了する str日 = str日 & Chr(34) & rs日.Fields(0) & Chr(34) & "," rs日.MoveNext Loop str日 = Left(str日, (Len(str日) - 1)) rs日.Close Set rs日 = Nothing End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DreamTheater

2020/06/16 02:39

これだけじゃ調べようがないとおもいますよ。 問題のVBAコードを提示してください。
goulok

2020/06/16 03:10 編集

大変失礼いたしました。 コードを追加しましたので、よければご参照ください。
DreamTheater

2020/06/16 04:16

他のカラムの値が表示されていたりしないですか? 位置情報でカラム値取得しているようですが、Fields("カラム名")でも文字化けするのでしょうか?
goulok

2020/06/16 04:25

ご回答ありがとうございます。 取得したデータは、他のカラムの値、また異なるデータ型でもありませんでした。 また、Fields("カラム名")も試しましたが、結果に変化はありませんでした。
DreamTheater

2020/06/16 04:34

ACCESS 2010/2016で5年以上VBA開発していますが、お目にかかったことがありません。 sousukeさんの回答のような、あまり一般的でないカラム属性を使用していないでしょうか? 自分の場合、文字型・数値型・日付型くらい(あとはオートナンバー型)です。 Fields("カラム名")でも文字化けするとなると製品不具合の可能性もありますね。 お使いのACCESSのバージョンは最新化されているのですよね?
goulok

2020/06/16 05:04

私も初めて確認した次第で、戸惑っています。 データは8ケタの日付なので、カラム属性は十進型、精度8です。 この属性は元データからそのまま引き継いでおり、意識していませんでした。 Accessも更新されており、バージョン 2005(ビルド 12827.20268)です。 https://docs.microsoft.com/ja-jp/officeupdates/current-channel#version-2005-june-02
goulok

2020/06/18 06:20 編集

皆様、ご示唆ありがとうございました。参考ページを拝見しました。 以下のフィールドを予め明示的にCLngで十進型に変換すると 突然終了することなく、予定されたデータを得ることができました。 If lngStart(1) > t_Idou(2) Then
guest

回答2

0

Microsoftコミュニティにて本件に関連する報告を紹介いただきました。
当該ページを参考まで紹介いたします。
Fieldsで文字化け・別の値を取得している

投稿2020/06/21 07:43

goulok

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

テーブルの十進型を止めるというエスパー回答

投稿2020/06/16 04:10

sousuke

総合スコア3828

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

goulok

2020/06/16 04:32

上記、確認します。今少しお待ちください。
goulok

2020/06/21 07:19 編集

ご回答ありがとうございました。 コメントにて報告しましたが、CLngにて明示的に長整数型を指定すると 突然終了することなくデータ処理できました。ありがとうございました。 しかし、これまでは当ファイルで同じ現象が起きたことはなく 他の部分(テキスト型)でも突然終了することがわかりました。 これについては別に質問する予定です。
goulok

2020/06/21 07:44 編集

Microsoftコミュニティにて本件に関連する報告を紹介いただきました。 自己解決として転記しましたので、ご参照ください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問