tagCANDY CGI エラーの原因は
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
エラーの原因は
このスレッドはロックされています。記事の閲覧のみとなります。
元に戻る スレッド一覧へ 記事閲覧
このページ内の検索ができます。(AND 検索や OR 検索のような複数のキーワードによる検索はできません。)

エラーの原因は [No.73の個別表示]
日時: 2008/01/14 10:26
名前: BBKING

今このコードがエラーが出ってどうしても分からないから教えてください。


Private Sub cmdUpdate_Click()
    deMain.rscmdMaster.Update   ' この部分で止ってしまう!!つまり新規登録ができません!!
    dbgSub.Visible = True
    '追加操作関連のボタン
    cmdAdd.Enabled = True
    cmdUpdate.Enabled = False
    cmdCancel.Enabled = False
    cmdDelete.Enabled = True
    
    'レコード移動ボタン
    cmdFirst.Enabled = True
    cmdPrevious.Enabled = True
    cmdNext.Enabled = True
    cmdLast.Enabled = True
End Sub

実行時エラー’-2147467259(8004005)'
更新に必要なベーステーブル情報がたりません。

というエラーメセッジがでる。

VB6.0 
XP SP1

念のため全部添付しましたので

よろしくお願いします。 

Option Explicit

Private cn As New ADODB.Connection



Private Sub cmdFirst_Click()
    deMain.rscmdMaster.MoveFirst
    
    Call RefreshData
    Call CalcTotal
End Sub



Private Sub cmdPrevious_Click()
    deMain.rscmdMaster.MovePrevious
    If deMain.rscmdMaster.BOF Then
      deMain.rscmdMaster.MoveFirst
    End If
    
    Call RefreshData
    Call CalcTotal
End Sub



Private Sub cmdNext_Click()
    deMain.rscmdMaster.MoveNext
    If deMain.rscmdMaster.EOF Then
      deMain.rscmdMaster.MoveLast
    End If

    Call RefreshData
    Call CalcTotal
End Sub



Private Sub cmdLast_Click()
    deMain.rscmdMaster.MoveLast

    Call RefreshData
    Call CalcTotal
End Sub




Private Sub mnuFileQuit_Click()
    Unload Me
End Sub


Private Sub RefreshData()
    Dim rs As New ADODB.Recordset 'Recordsetオブジェクト
    Dim mySQL As String           'SQLステートメント
    
    'SQLステートメント
    mySQL = "SELECT 伝票番号,伝票サブ.商品ID, 商品名, 単価, 数量, " _
           & "単価 * 数量 AS 金額 " _
           & "FROM 伝票サブ INNER JOIN 商品一覧 " _
           & "ON 伝票サブ.商品ID = 商品一覧.商品ID " _
           & "WHERE 伝票番号 = " & txt伝票番号.Text
    
    'レコードセットを取得
    rs.Open mySQL, cn, adOpenStatic, adLockOptimistic
    Set dbgSub.DataSource = rs
    
    'フォーマット
    dbgSub.Columns("伝票番号").Visible = False
    dbgSub.Columns("商品ID").Width = 60 * 15  '900twip
    dbgSub.Columns("商品名").Width = 150 * 15 '2250twip
    dbgSub.Columns("単価").Width = 60 * 15    '900twip
    dbgSub.Columns("数量").Width = 60 * 15    '900twip
    dbgSub.Columns("金額").Width = 60 * 15    '900twip
End Sub


Private Sub Form_Load()
    Dim dbname As String  'データベース名
    
    dbname = GetDataSource()
    cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;" _
                        & "Data Source=" & dbname
    cn.Open
    
    'レコードがあるとき
    If deMain.rscmdMaster.RecordCount <> 0 Then
      Call RefreshData
      Call CalcTotal
      
      cmdFirst.Enabled = True
      cmdPrevious.Enabled = True
      cmdNext.Enabled = True
      cmdLast.Enabled = True
      cmdDelete.Enabled = True
      
    'レコードがないとき
    Else
      dbgSub.Visible = False
      cmdFirst.Enabled = False
      cmdPrevious.Enabled = False
      cmdNext.Enabled = False
      cmdLast.Enabled = False
      cmdDelete.Enabled = False
    End If
    
    cmdAdd.Enabled = True
    cmdUpdate.Enabled = False
    cmdCancel.Enabled = False
    cmdSubDelete.Enabled = False
End Sub


Private Function GetDataSource() As String
    Dim startPos As Long  '開始位置
    Dim endPos As Long    '終了位置
    Dim skip As Long      '読み飛ばす文字数
    
    'データソースの取得
    startPos = InStr(1, deMain.cnSales.ConnectionString, _
                     "Data Source=", vbTextCompare)
    endPos = InStr(startPos, deMain.cnSales.ConnectionString, _
                   ";", vbTextCompare)
    skip = Len("Data Source=")
    
    GetDataSource = Mid(deMain.cnSales.ConnectionString, _
                        startPos + skip, endPos - (startPos + skip))
End Function


Private Sub dbgSub_OnAddNew()
    dbgSub.Columns("伝票番号").Value = txt伝票番号.Text
End Sub


Private Sub Form_Unload(Cancel As Integer)
    Set cn = Nothing
End Sub


Private Sub dbgSub_Click()
    If dbgSub.SelBookmarks.Count = 0 Then
      cmdSubDelete.Enabled = False
    Else
      cmdSubDelete.Enabled = True
    End If
End Sub


Private Sub cmdSubDelete_Click()
    Dim rs As New ADODB.Recordset 'Recordsetオブジェクト
    Dim ret As Integer            'MsgBox関数の戻り値
    
    ret = MsgBox("選択中のレコードを削除しますか。", _
                 vbYesNo + vbQuestion + vbDefaultButton2, _
                 "詳細削除")
    
    Select Case ret
      Case vbYes  'はい
        Set rs = dbgSub.DataSource
        rs.Delete
        
        Call RefreshData
        Call CalcTotal
        
        cmdSubDelete.Enabled = False

      Case vbNo 'いいえ
        '
    End Select
End Sub


Private Sub cmdAdd_Click()
    Dim rs As New ADODB.Recordset 'Recordsetオブジェクト
    Dim denNo As Long             '伝票番号
    
    'レコードが存在しないとき
    If deMain.rscmdMaster.RecordCount = 0 Then
      denNo = 0
      
    'レコードがあるとき
    Else
      Set rs = deMain.rscmdMaster
      rs.Sort = "伝票番号 ASC"
      rs.MoveLast
      denNo = rs!伝票番号
      Set rs = Nothing
    End If
    
    '伝票を追加
    deMain.rscmdMaster.AddNew
    txt伝票番号.Text = denNo + 1
    txt日付.Text = Date
    txt日付.SetFocus
    
    Call RefreshData
    Call CalcTotal
    dbgSub.Visible = False
    
    '追加操作関連のボタン
    cmdAdd.Enabled = False
    cmdUpdate.Enabled = True
    cmdCancel.Enabled = True
    cmdDelete.Enabled = False
    
    'レコード移動ボタン
    cmdFirst.Enabled = False
    cmdPrevious.Enabled = False
    cmdNext.Enabled = False
    cmdLast.Enabled = False
End Sub


Private Sub cmdUpdate_Click()
    deMain.rscmdMaster.Update
    dbgSub.Visible = True

    '追加操作関連のボタン
    cmdAdd.Enabled = True
    cmdUpdate.Enabled = False
    cmdCancel.Enabled = False
    cmdDelete.Enabled = True
    
    'レコード移動ボタン
    cmdFirst.Enabled = True
    cmdPrevious.Enabled = True
    cmdNext.Enabled = True
    cmdLast.Enabled = True
End Sub


Private Sub cmdCancel_Click()
    deMain.rscmdMaster.CancelUpdate

    'レコードがあるとき
    If deMain.rscmdMaster.RecordCount <> 0 Then
      Call RefreshData
      Call CalcTotal
      dbgSub.Visible = True
      
      cmdFirst.Enabled = True
      cmdPrevious.Enabled = True
      cmdNext.Enabled = True
      cmdLast.Enabled = True
      cmdDelete.Enabled = True
    
    'レコードがないとき
    Else
      cmdFirst.Enabled = False
      cmdPrevious.Enabled = False
      cmdNext.Enabled = False
      cmdLast.Enabled = False
      cmdDelete.Enabled = False
    End If
    
    cmdAdd.Enabled = True
    cmdCancel.Enabled = False
    cmdUpdate.Enabled = False
End Sub


Private Sub cmdDelete_Click()
    Dim rs As New ADODB.Recordset 'Recordsetオブジェクト
    Dim ret As Integer            'MsgBox関数の戻り値
    
    Beep
    ret = MsgBox("表示中の伝票を削除します。よろしいですか", _
                 vbYesNo + vbQuestion + vbDefaultButton2, _
                 "伝票削除")
    
    Select Case ret
      Case vbYes  'はい
        'マスター削除
        deMain.rscmdMaster.Delete
        
        '詳細削除
        Set rs = dbgSub.DataSource
        If rs.RecordCount <> 0 Then
          rs.MoveFirst
          Do Until rs.EOF
            rs.Delete
            rs.MoveNext
          Loop
        End If
        
        'カレント レコード設定
        '--レコードがあるとき
        If deMain.rscmdMaster.RecordCount <> 0 Then
          deMain.rscmdMaster.MovePrevious
          If deMain.rscmdMaster.BOF Then
            deMain.rscmdMaster.MoveFirst
          End If
          Call RefreshData
          Call CalcTotal
  
        '--レコードがないとき
        Else
          cmdFirst.Enabled = False
          cmdPrevious.Enabled = False
          cmdNext.Enabled = False
          cmdLast.Enabled = False
          cmdDelete.Enabled = False
          cmdAdd.SetFocus
          '
          deMain.rscmdMaster.AddNew
          deMain.rscmdMaster.CancelUpdate
          dbgSub.Visible = False
          txt合計.Text = ""
        End If
        
      Case vbNo
        '
    End Select
End Sub


Private Sub CalcTotal()
    Dim rs As New ADODB.Recordset 'Recordsetオブジェクト
    Dim total As Long       '合計金額
    Dim bmark As Variant    'ブックマーク
    
    '初期化
    total = 0
    Set rs = dbgSub.DataSource
    
    '新しいデータ
    If IsNull(rs!数量) Then
      Exit Sub
    End If
          
    If rs.RecordCount <> 0 Then
      bmark = dbgSub.Bookmark
      rs.MoveFirst
    End If

    '合計金額
    Do Until rs.EOF
      total = total + rs!金額
      rs.MoveNext
    Loop
    txt合計.Text = CStr(Format(total, "#,##0"))
    
    'もとのレコードへ
    If bmark <> Null Then
      dbgSub.Bookmark = bmark
    Else
      If rs.RecordCount <> 0 Then
        rs.MoveLast
      End If
    End If
End Sub


Private Sub dbgSub_AfterColEdit(ByVal ColIndex As Integer)
    Select Case ColIndex
      Case 1, 4
        Call CalcTotal
      
      Case Else
        '
    End Select
End Sub


Private Sub mnuFilePrint_Click()
    deMain.Commands("rptMaster").Parameters("prmNo") _
                     = txt伝票番号.Text

    'プレビュー画面の大きさ
    drDenpyo.Width = 900 * 15
    drDenpyo.Height = 600 * 15

    'プレビュー表示
    drDenpyo.Show
End Sub


Private Sub mnuEditFind_Click()
    Dim denNo As String   '検索する値
    Dim bmark As Variant  'ブックマーク
    Dim ret As Integer    'MsgBox関数の戻り値
    
    'ブックマークを保持
    bmark = deMain.rscmdMaster.Bookmark
    
    denNo = InputBox("伝票番号を入力してください", "伝票検索")
    If denNo = "" Then
      Exit Sub
    End If
    
    '検索
    deMain.rscmdMaster.MoveFirst
    deMain.rscmdMaster.Find "伝票番号 = " & CLng(denNo)

    '見つからなかったとき
    If deMain.rscmdMaster.EOF Then
      Beep
      ret = MsgBox("該当する伝票が見つかりません。", _
                   vbOKOnly, "伝票検索")
      deMain.rscmdMaster.Bookmark = bmark

    '見つかったとき
    Else
      Call RefreshData
      Call CalcTotal
    End If
End Sub



Private Sub mnuOptionExport_Click()
On Error GoTo Err_mnuOptionExport_Click
    
    Dim ret As Integer  'MsgBox関数の戻り値
    
    '[保存]ダイアログ ボックス
    dlgSave.InitDir = App.Path
    dlgSave.ShowSave
    
    'CSV形式で出力
    With deMain.rscmdExport
      .Open
      Open dlgSave.FileName For Output As #1
        'タイトル
        Write #1, "顧客ID", "顧客名", "郵便番号", _
                  "都道府県", "住所", "郵便番号"
        
        'データ
        .MoveFirst
        Do Until .EOF
          Write #1, !顧客ID, !顧客名, !郵便番号, _
                    !都道府県, !住所, !電話番号
          .MoveNext
        Loop
      Close #1
      .Close
    End With
    
    '終了
    Beep
    ret = MsgBox("エクスポートを終了しました", _
                 vbOKOnly, "エクスポート")

Err_mnuOptionExport_Click:
End Sub


メンテ

Page: 1 |

Re: エラーの原因は  (No.1) [スレッド一覧へ]
日時: 2008/01/15 09:35
名前:

ココに回答をしている方々はデバッガーでもなんでもないので
もう少し質問の仕方に気を配った方がいいと思いますよ。
これでは丸投げと変わりませんからね。

とりあえず、エラーメッセージが判っているなら
それで検索掛ければ原因も対処法も出て来ると思いますが…。
そういった調査は行われましたか?
メンテ

Page: 1 |