Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10全般 : Access 2013)
入力ができない2467エラーが出ます
投稿日時: 20/03/18 11:22:19
投稿者: chikakichi

外注で作成してもらったアクセス2013の受発注などを管理するシステムなのですがWindows7で使っていた時には出てこないでバックが発生して困っています。今はWindows10で運用しています。
開発者が個人のため連絡が取れなく・・。
納品書を入庫しようとするとエラーが出てしまい入力できません。
社内に詳しいものが誰もいなくこちらにたどり着きました。
 
下から4行目の
 
  材料受入1_SUB.Form.Filter = G_Tyusyutsu
 
この部分に矢印が出ていて黄色くなって表示されています
 
以下デバック画面コピーです。
 
 
 
 
Option Compare Database '文字列の比較にデータベースで決められた形式を使用します。
Option Explicit
Function ResetOpt()
'
'
'
    optFilter = 9
'
End Function
 
 
Private Sub 発注番号_AfterUpdate()
'
'
'
    Dim i As Integer
    Dim v As Variant
    Dim v受入済 As Variant
'
    If IsNull(発注番号) Then Exit Sub
'
    v受入済 = DLookup("受入済区分", "発注データ", "発注番号=" & Val(発注番号))
    If IsNull(v受入済) Then MsgError "該当する発注データは有りません": Exit Sub
    If GuNew Then
        If v受入済 Then MsgError "このデータは受入済みです": Exit Sub
    Else
        If v受入済 = False Then MsgError "このデータは受入されていません": Exit Sub
    End If
'
    v = DLookup("発注データID", "発注データ", "発注番号=" & Val(発注番号))
'
    i = CallFormFilter("材料受入2", True, "発注データID=" & v)
'
End Sub
 
Private Sub cmdEdit_Click()
'
'
'
    Dim i As Integer
    Dim v As Variant
'
    v = GetSubValue([材料受入1_SUB]![発注データID])
    If IsNull(v) Then Exit Sub
'
    i = CallFormFilter("材料受入2", True, "発注データID=" & v)
'
End Sub
 
 
 
Private Sub cmdOk_Click()
'
'
'
    Dim i As Integer
'
    i = ReturnForm()
'
End Sub
 
Private Sub DKeyDown_Click()
'
'
'
    Dim i As Integer
'
    If Not IsNull(DKeyS) Then i = ScrollWeek([DKeyS], -2)
    If Not IsNull(DKeyE) Then i = ScrollWeek([DKeyE], -2)
'
    i = ResetOpt()
'
End Sub
 
 
 
Private Sub DKeyUp_Click()
'
'
'
    Dim i As Integer
'
    If Not IsNull(DKeyS) Then i = ScrollWeek([DKeyS], 2)
    If Not IsNull(DKeyE) Then i = ScrollWeek([DKeyE], 2)
'
    i = ResetOpt()
'
End Sub
 
Private Sub Form_Open(Cancel As Integer)
'
'
'
    Dim i As Integer
'
    i = initForm(Me)
'
    If GuNew Then
        lblH1.Caption = "材料入庫(新規)": lblH2.Caption = lblH1.Caption
        lblMsg.Caption = "入庫した材料の発注情報行を選択して、入庫ボタンをクリックして下さい"
        lbl入庫.Caption = "入 庫"
    Else
        lblH1.Caption = "材料入庫(修正)": lblH2.Caption = lblH1.Caption
        lblMsg.Caption = "修正する発注情報行を選択して、修正ボタンをクリックして下さい"
        lbl入庫.Caption = "修 正"
    End If
'
    optFilter = 0
    optFilter_AfterUpdate
'
End Sub
 
 
Private Sub optFilter_AfterUpdate()
'
'
'
    Dim i As Integer
    Dim vDateS, vDateE
    Dim sFilter As String
'
    If optFilter = 9 Then Exit Sub
 
    If G_FFLG = "1" Then
        optFilter = 1
        G_FFLG = ""
        If G_FD1 = "1990/1/1" Then
            DKeyS = Null
        Else
            DKeyS = G_FD1
        End If
         
        If G_FD2 = "2100/12/31" Then
            DKeyE = Null
        Else
            DKeyE = G_FD2
        End If
         
        D商社名 = G_FS
        D現場名 = G_FG
        D在庫発注区分 = G_FZ
        D仮発注分 = G_KH
        D仮入庫分 = G_KN
        GoTo 抽出
    Else
    End If
 
'
    If optFilter = 0 Then
     
        G_Tyusyutsu = ""
         
        DKeyS = Date - 14
        DKeyE = Null
        D商社名 = Null
        D現場名 = Null
        D在庫発注区分 = False
        D仮発注分 = False
        D仮入庫分 = False
    End If
'
    sFilter = "受入済区分=" & IIf(GuNew, "No", "Yes")
'
    If IsNull(DKeyS) Then vDateS = CVDate("1990/1/1") Else vDateS = DKeyS
    If IsNull(DKeyE) Then vDateE = CVDate("2100/12/31") Else vDateE = DKeyE
    If IsDateSpan(vDateS, vDateE) = False Then Exit Sub
    sFilter = sFilter & " and 納期 Between #" & Y2001K(vDateS) & "# and #" & Y2001K(vDateE) & "#"
'
    If Not IsNull(D商社名) Then
        If sFilter <> "" Then sFilter = sFilter & " and "
        sFilter = sFilter & "商社マスタID=" & D商社名
    End If
    If Not IsNull(D現場名) Then
        If sFilter <> "" Then sFilter = sFilter & " and "
        sFilter = sFilter & "現場マスタID=" & D現場名
    End If
    If GetBValue(D在庫発注区分) Then
        If sFilter <> "" Then sFilter = sFilter & " and "
        sFilter = sFilter & "在庫発注区分=Yes"
    End If
    If GetBValue(D仮発注分) Then
        If sFilter <> "" Then sFilter = sFilter & " and "
        sFilter = sFilter & "仮=-1"
    End If
    If GetBValue(D仮入庫分) Then
        If sFilter <> "" Then sFilter = sFilter & " and "
        sFilter = sFilter & "仮入=-1"
    End If
 
'
     
    G_FD1 = vDateS
    G_FD2 = vDateE
    G_FS = D商社名
    G_FG = D現場名
    G_FZ = GetBValue(D在庫発注区分)
    G_KH = GetBValue(D仮発注分)
    G_KN = GetBValue(D仮入庫分)
    '発注番号抽出コード
    G_Tyusyutsu = sFilter
                                
抽出:
    '材料受入1_SUB.Form.Filter = sFilter
    材料受入1_SUB.Form.Filter = G_Tyusyutsu
    材料受入1_SUB.Form.FilterOn = True
'
End Sub

回答
投稿日時: 20/03/19 13:46:09
投稿者: sk

引用:
入力ができない2467エラーが出ます

引用:
下から4行目の
  
  材料受入1_SUB.Form.Filter = G_Tyusyutsu

・そのフォームの詳細セクション上に[材料受入1_SUB]という名前の
 サブフォームコントロールが配置されており、
 その[ソースオブジェクト]プロパティが空白である。
 (サブフォームコントロールに何のオブジェクトも埋め込まれていない)
 
・サブフォームコントロール[材料受入1_SUB]の[ソースオブジェクト]プロパティには
 何らかの(フォームではなく)レポートの名前が指定されている。
 
・そのフォームが開かれる際、サブフォームコントロール[材料受入1_SUB]の
 SourceObject プロパティの値を書き換えるコードが実行されており、
 そのコードが実行された(あるいは正常に実行されなかった)結果、
 上記のいずれかと同じ状態になっている。
 
今のところ考えられるのは以上のような原因。
 
引用:
Private Sub Form_Open(Cancel As Integer)
'
'
'
    Dim i As Integer
'
    i = initForm(Me)

現時点で公開されているコードの中で特に怪しいと思われるのは
このプロシージャの内部処理。

投稿日時: 20/03/23 13:59:53
投稿者: chikakichi

コメントいただきありがとうございます。
自分でどこまでできるかわかりませんが、何とか調べてみようと思います。
わからないことだらけでまた書き込みをしてしまうかもしれませんが。
原因が少し思い当たることがあり理解できました。
ありがとうございました。

トピックに返信