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。
...全文
165 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
  • 打赏
  • 举报
回复
有点乱,看不下去的感觉
内容概要:本文围绕基于粒子群算法(PSO)的风电与水电(抽水蓄能)联合优化调度问题展开研究,旨在通过智能优化算法实现可再生能源的高效利用与电力系统的经济稳定运行。文中系统阐述了粒子群算法的核心原理及其在电力调度中的适用性,构建了综合考虑风电出力不确定性、抽水蓄能电站调节能力及系统运行约束的联合优化调度模型。采用Matlab进行算法编程与仿真求解,验证了该方法在降低系统综合运行成本、提升新能源消纳水平、增强电网调峰调频能力等方面的优越性能。研究进一步设计了多种对比场景,分析不同调度策略下的系统表现,充分展示了所提模型在应对复杂运行条件时的鲁棒性与实用价值。; 适合人群:具备一定电力系统分析基础和Matlab编程能力的研究生、科研人员,以及从事新能源并网调度、电力系统规划与运行等相关领域的工程师; 使用场景及目标:①应用于风电场与抽水蓄能电站的协同优化调度决策支持;②为高比例可再生能源接入的电力系统提供经济可靠的低碳调度方案;③服务于高校及科研院所中关于智能优化算法在能源系统中应用的教学与科研实验; 阅读建议:建议读者结合提供的Matlab代码深入理解算法实现细节与模型构建逻辑,重点关注目标函数设计、约束条件处理及参数设置对优化结果的影响,并通过复现仿真结果来掌握粒子群算法解决复杂非线性调度问题的关键技术要点。

7,788

社区成员

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

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