Private Sub cmdOk_Click()
     On Error GoTo Err_Proc
     '巇擖愭柤偑NULL偺帪
     If Me.txtCompany.Text = "" Then
         MsgBox "巇擖愭柤傪擖椡偟偰偔偩偝偄両", 48, "採帵"
         Exit Sub
     End If
     '揹榖斣崋偑NULL偺帪
     If Me.txtPhone.Text = "" Then
         MsgBox "揹榖斣崋傪擖椡偟偰偔偩偝偄両", 48, "採帵"
         Exit Sub
     End If
     
    '取得参数
    Set mobjParamCopy = gcolFormParms.GetItem("frmComManager")
    mstrCmpCd = mobjParamCopy.strCmpCd
    If mstrCmpCd <> "" Then
        mstrCmpCd = Left(mobjParamCopy.strCmpCd, InStr(Trim(mobjParamCopy.strCmpCd), "丗") - 1)
    End If
    
    If mstrCmpCd = "" Then
        '巇擖愭僐乕僪傪庢摼偡傞
         'sql傪嶌惉偡傞
        mstrSql = vbNullString
        mstrSql = mstrSql + " select max(COMPANY_ID) + 1 as COMPANY_ID "                        '巇擖愭ID
        mstrSql = mstrSql + " FROM     COMPANY_INFO A "
'        mstrSql = mstrSql + " WHERE    A.DLETE_FLG = '0' "
        
        '俢俛偺僇儗儞僩忬懺,奐偄偰偄傞偐
        If mobjRs.State = adStateOpen Then
        mobjRs.Close
        End If
        
       '堎忢廔椆偺応崌
       If CF_ADOIssueSelect(mstrSql, gcnnRD, mobjRs) = gcintStatus_NG Then
           GoTo Exit_Proc
       End If       '摉奩儗僐乕僪偑懚嵼偟偨偐傪妋擣偡傞
       If Not mobjRs.EOF Then
          txtCode.Text = CF_GetDbDataFldNm(mobjRs, "COMPANY_ID")
          Call sub_SaveData
       End If
       
'    Else
    
'    frmComManager.Show 1 在这里我想退出当前画面,返回主画面,但是有错误
    
Exit_Proc:
    Exit Sub
    
Err_Proc:
    '嫟捠僄儔乕張棟
    Call CS_OnError(Me.Name & ".Form_Load", Err.Number)
    Resume Exit_Proc
    
End SubPrivate Sub sub_SaveData()
    On Error GoTo Err_Proc
    
    Dim intRtn As Integer '栠傝抣
    Dim strKey As String
    Dim strData As String
    Dim strInsKey As String
    '懳徾僨乕僞嶍彍張棟<4.1> 僩儔儞僓僋僔儑儞傪奐巒偡傞
    If CF_ADOBgnTran(gcnnUPD) = gcintStatus_NG Then
        GoTo Exit_Proc
    End If
    
    strKey = "COMPANY_ID =" & CF_SqlCharEdit1(Trim(txtCode.Text), gcintSqlNumType)
    strInsKey = "COMPANY_ID,COMPANY_NAME,COMPANY_NICKNAME,COMPANY_TEL,COMPANY_ADDRESS,DLETE_FLG"
    strData = CF_SqlCharEdit1(Trim(txtCode.Text), gcintSqlNumType) & "," & CF_SqlCharEdit1(Trim(txtCompany.Text), gcintSqlStrType) _
                  & "," & CF_SqlCharEdit1(Trim(txtOwner.Text), gcintSqlStrType) & "," & CF_SqlCharEdit1(Trim(txtPhone.Text), gcintSqlStrType) _
                  & "," & CF_SqlCharEdit1(Trim(txtAdd.Text), gcintSqlStrType) & ",'0'"
    intRtn = CF_UpdData(gcstrComUpdKb_Ins, "COMPANY_INFO", strKey, strData, strInsKey)    '栠傝抣傪庢摼
    Select Case intRtn
        Case gcintDbUpd_Status_OK
            '懳徾僨乕僞怴婯張棟<4.3.3> 怴婯偑惓偟偔廔椆偟偨応崌
            '2) 嫟捠婡擻丗乽儊僢僙乕僕昞帵乿傪峴偄丄儊僢僙乕僕BOX傪昞帵偡傞
            '3) 奩摉儗僐乕僪傪怴婯偡傞
            If CF_ADOCommit(gcnnUPD) = gcintDbUpd_Status_OK Then
            End If
    End Select
    
Exit_Proc:
    Exit Sub
       
Err_Proc:
    '嫟捠僄儔乕張棟
    Call CS_OnError(Me.Name & ".Form_Load", Err.Number)
    Resume Exit_ProcEnd Sub 
这个是插入的功能已经实现了,我想做更新的功能,请高手指点。
新规,更新,删除的共通函数都是CF_UpdData。

解决方案 »

  1.   

    Private Sub sub_UpData()
        On Error GoTo Err_Proc    Dim strTemp As String
        Dim intTemp As Integer
            
        'cmdClose_Click()の初めで、MousePointerを設定
        Screen.MousePointer = vbHourglass
        
        '仕入先IDを取得する
        mstrCmpyId = Left(Trim(txtCode.Text), InStr(Trim(txtCode.Text), ":") - 1)
        
        '仕入先DはNullかどうか判断する
        If strTemp <> vbNullString Then
            intTemp = InStr(strTemp, ":")
            
            '更新日付はNullかどうかを判断する
            If intTemp <> 0 Then
                mstrCmpyId = Left(Trim(strTemp), InStr(Trim(strTemp), ":") - 1)
                gstrLastUpdTime = Right(Trim(strTemp), InStr(Trim(strTemp), ":") + 1)
            Else
                mstrCmpyId = strTemp
                gstrLastUpdTime = vbNullString
            End If
        End If
            
        '対象データ削除処理 共通機能:「メッセージ表示」を行い、メッセージBOXを表示する
        'MSGID SN100111 「削除します。よろしいですか?」
        If CF_MsgBox("SN1000111", vbYesNo) = vbNo Then
            GoTo Exit_Proc
        End If    '対象データ削除処理<4> マスタの当該レコードを削除する
        '対象データ削除処理<4.1> トランザクションを開始する
        If CF_ADOBgnTran(gcnnUPD) = gcintStatus_NG Then
            GoTo Exit_Proc
        End If
        
        mstrKey = vbNullString
        mstrData = vbNullString
        mstrKey = mstrKey & "DLETE_FLG ='0' AND COMMODITY_COMPANY_ID =" & CF_SqlCharEdit1(mstrCmpyId, gcintSqlNumType) _
                    & " AND COMMODITY_ID =" & CF_SqlCharEdit1(mstrCmmodityId, gcintSqlNumType)
        mstrData = mstrData & "DLETE_FLG ='1',SN_UPD_YMD_HMS=" & CF_SqlCharEdit1(Format(Now, "yyyy/mm/dd hh:mm:ss ms"), gcintSqlStrType)
        mintRtn = CF_UpdData(gcstrComUpdKb_Upd, "COMMODITY_INFO", mstrKey, mstrData, vbNullString)
        
        '戻り値を取得
        Select Case mintRtn
            Case gcintDbUpd_Status_OK
                '対象データ削除処理<4.3.3> 削除が正しく終了した場合
                '2) 共通機能:「メッセージ表示」を行い、メッセージBOXを表示する
                '3) 該当レコードをリストより削除する
                If CF_ADOCommit(gcnnUPD) = gcintDbUpd_Status_OK Then
                    Call CF_MsgBox("SN1000113", vbOKOnly)
                    '終了の場合
                    mstrCmpyId = Trim(cboCompany.Text)
                    
                    '仕入先情報コンボボックスのデータを確認する
                    If mstrCmpyId <> "" Then
                        '排他制御項目をセットする
                        If F_SelCOMPANYINFO(Left(mstrCmpyId, InStr(mstrCmpyId, ":") - 1)) = gcintStatus_NG Then
                            GoTo Exit_Proc
                        End If
                        
                    GoTo Exit_Proc
                Else
                    'コミットNGの場合、ロールバック
                    Call CF_ADORollBack(gcnnUPD)
                    Call CF_MsgBox("SN1000001", vbOKOnly)
                    GoTo Exit_Proc
                End If
            Case gcintDbUpd_Status_NG
                '対象データ削除処理<4.3.1> 対象レコードなしの場合
                '2) 共通機能:「メッセージ表示」を行い、メッセージBOXを表示する
                If CF_ADORollBack(gcnnUPD) <> gcintDbUpd_Status_OK Then
                    Call CF_MsgBox("SN1000001", vbOKOnly)
                    GoTo Exit_Proc
                End If
                Call CF_MsgBox("SN1000116", vbOKOnly)
                GoTo Exit_Proc
            Case Else
                '対象データ削除処理<4.3.4> それ以外のエラーが発生した場合はシステムエラーとする
                If CF_ADORollBack(gcnnUPD) <> gcintDbUpd_Status_OK Then
                    Call CF_MsgBox("SN1000001", vbOKOnly)
                    GoTo Exit_Proc
                End If
                GoTo Exit_Proc
        End SelectExit_Proc:
        Exit SubErr_Proc:
        '共通エラー処理
        Call CS_OnError(Me.Name & ".Form_Load", Err.Number)
        Resume Exit_ProcEnd Sub
    这是做的逻辑删除,应该和更新,差不多,只不过是把DLETE_FLG的值给改了
    我想作更新操作是不是和别人作的逻辑删除一样啊
      

  2.   

    Private Sub sub_UpData()
        On Error GoTo Err_Proc    Dim strTemp As String
        Dim intTemp As Integer
            
        'cmdClose_Click()の初めで、MousePointerを設定
        Screen.MousePointer = vbHourglass
        
        '仕入先IDを取得する
        mstrCmpyId = Left(Trim(txtCode.Text), InStr(Trim(txtCode.Text), ":") - 1)
        
        '仕入先DはNullかどうか判断する
        If strTemp <> vbNullString Then
            intTemp = InStr(strTemp, ":")
            
            '更新日付はNullかどうかを判断する
            If intTemp <> 0 Then
                mstrCmpyId = Left(Trim(strTemp), InStr(Trim(strTemp), ":") - 1)
                gstrLastUpdTime = Right(Trim(strTemp), InStr(Trim(strTemp), ":") + 1)
            Else
                mstrCmpyId = strTemp
                gstrLastUpdTime = vbNullString
            End If
        End If
            
        '対象データ削除処理 共通機能:「メッセージ表示」を行い、メッセージBOXを表示する
        'MSGID SN100111 「削除します。よろしいですか?」
        If CF_MsgBox("SN1000111", vbYesNo) = vbNo Then
            GoTo Exit_Proc
        End If    '対象データ削除処理 <4> マスタの当該レコードを削除する
        '対象データ削除処理 <4.1> トランザクションを開始する
        If CF_ADOBgnTran(gcnnUPD) = gcintStatus_NG Then
            GoTo Exit_Proc
        End If
        
        mstrKey = vbNullString
        mstrData = vbNullString
        mstrKey = mstrKey & "DLETE_FLG ='0' AND COMMODITY_COMPANY_ID ='" & CF_SqlCharEdit1(mstrCmpyId, gcintSqlNumType) _
                    & "' AND COMMODITY_ID ='" & CF_SqlCharEdit1(mstrCmmodityId, gcintSqlNumType) & "' "
        mstrData = mstrData & "DLETE_FLG ='1',and SN_UPD_YMD_HMS='" & CF_SqlCharEdit1(Format(Now, "yyyy/mm/dd hh:mm:ss ms"), gcintSqlStrType) & "' "
        mintRtn = CF_UpdData(gcstrComUpdKb_Upd, "COMMODITY_INFO", mstrKey, mstrData, vbNullString)
        
        '戻り値を取得
        Select Case mintRtn
            Case gcintDbUpd_Status_OK
                '対象データ削除処理 <4.3.3> 削除が正しく終了した場合
                '2) 共通機能:「メッセージ表示」を行い、メッセージBOXを表示する
                '3) 該当レコードをリストより削除する
                If CF_ADOCommit(gcnnUPD) = gcintDbUpd_Status_OK Then
                    Call CF_MsgBox("SN1000113", vbOKOnly)
                    '終了の場合
                    mstrCmpyId = Trim(cboCompany.Text)
                    
                    '仕入先情報コンボボックスのデータを確認する
                    If mstrCmpyId <> "" Then
                        '排他制御項目をセットする
                        If F_SelCOMPANYINFO(Left(mstrCmpyId, InStr(mstrCmpyId, ":") - 1)) = gcintStatus_NG Then
                            GoTo Exit_Proc
                        End If
                        
                    GoTo Exit_Proc
                Else
                    'コミットNGの場合、ロールバック
                    Call CF_ADORollBack(gcnnUPD)
                    Call CF_MsgBox("SN1000001", vbOKOnly)
                    GoTo Exit_Proc
                End If
            Case gcintDbUpd_Status_NG
                '対象データ削除処理 <4.3.1> 対象レコードなしの場合
                '2) 共通機能:「メッセージ表示」を行い、メッセージBOXを表示する
                If CF_ADORollBack(gcnnUPD) <> gcintDbUpd_Status_OK Then
                    Call CF_MsgBox("SN1000001", vbOKOnly)
                    GoTo Exit_Proc
                End If
                Call CF_MsgBox("SN1000116", vbOKOnly)
                GoTo Exit_Proc
            Case Else
                '対象データ削除処理 <4.3.4> それ以外のエラーが発生した場合はシステムエラーとする
                If CF_ADORollBack(gcnnUPD) <> gcintDbUpd_Status_OK Then
                    Call CF_MsgBox("SN1000001", vbOKOnly)
                    GoTo Exit_Proc
                End If
                GoTo Exit_Proc
        End Select        mstrSql = vbNullString
            mstrSql = mstrSql + " select max(COMPANY_ID) + 1 as COMPANY_ID "                        '巇擖愭ID
            mstrSql = mstrSql + " FROM    COMPANY_INFO A "
    '        mstrSql = mstrSql + " WHERE    A.DLETE_FLG = '0' "
            
            '俢俛偺僇儗儞僩忬懺,奐偄偰偄傞偐
            If mobjRs.State = adStateOpen Then
                mobjRs.Close
            End If
            
          '堎忢廔椆偺応崌
          If CF_ADOIssueSelect(mstrSql, gcnnRD, mobjRs) = gcintStatus_NG Then
              GoTo Exit_Proc
          End If      '摉奩儗僐乕僪偑懚嵼偟偨偐傪妋擣偡傞
          If Not mobjRs.EOF Then
              txtCode.Text = CF_GetDbDataFldNm(mobjRs, "COMPANY_ID")
          End IfExit_Proc:
        Exit SubErr_Proc:
        '共通エラー処理
        Call CS_OnError(Me.Name & ".Form_Load", Err.Number)
        Resume Exit_ProcEnd Sub