VB6.数据库更新的问题!!!!!!!!

songyingjian2008 2008-12-11 08:50:54
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 Sub

Private 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_Proc

End Sub


这个是插入的功能已经实现了,我想做更新的功能,请高手指点。
新规,更新,删除的共通函数都是CF_UpdData。
...全文
116 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
songyingjian2008 2008-12-11
  • 打赏
  • 举报
回复
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 Select

Exit_Proc:
Exit Sub

Err_Proc:
'共通エラー処理
Call CS_OnError(Me.Name & ".Form_Load", Err.Number)
Resume Exit_Proc

End Sub


这是做的逻辑删除,应该和更新,差不多,只不过是把DLETE_FLG的值给改了
我想作更新操作是不是和别人作的逻辑删除一样啊
songyingjian2008 2008-12-11
  • 打赏
  • 举报
回复
退出当前画面,返回主画面的地方我调好了,呵呵
songyingjian2008 2008-12-11
  • 打赏
  • 举报
回复
嗯,谢谢了。
jhone99 2008-12-11
  • 打赏
  • 举报
回复
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 If

Exit_Proc:
Exit Sub

Err_Proc:
'共通エラー処理
Call CS_OnError(Me.Name & ".Form_Load", Err.Number)
Resume Exit_Proc

End Sub

aohan 2008-12-11
  • 打赏
  • 举报
回复
有点乱,看不下去的感觉

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧