vb6 mysql源码_mysql和VB6,存儲過程

你好,我有下面的下面的代碼...mysql和VB6,存儲過程

DELIMITER $$

USE `gateshms`$$

DROP PROCEDURE IF EXISTS `SP_Rank_by_Company`$$

CREATE DEFINER=`gates`@`%` PROCEDURE `SP_Rank_by_Company`(PETSA VARCHAR(50),ins VARCHAR(200))

BEGIN

IF ins = "DELETE" THEN

DELETE FROM tblrevrankreport WHERE xdate = PETSA;

ELSEIF ins = "INSERT" THEN

INSERT INTO tblrevrankreport (ndate, xDate, tid, transid, rmno, rmcat, rmcatdesc, rmtariff,

marketdesc, cindate, coutdate,

mulrate,

revamt,

othamt,

Company)

SELECT a.xDate, a.xDate, b.id, a.guestno, a.roomno, b.RoomCat, b.roomcat, b.Room_Tariff,

b.Market, b.CInDate, b.coutdate,

b.MultipleRate,

IF(c.ratecode=1,(a.amount-(a.AMT_VAT+a.AMT_SC+a.AMT_LT)),''),

IF(c.ratecode<>1,(a.amount-(a.AMT_VAT+a.AMT_SC+a.AMT_LT)),''),b.Company

FROM tbltransactionpostingdumy a

LEFT JOIN tblcustomerinfo b ON a.MaintransNo = b.transactionID

LEFT JOIN tblreftransaction c ON a.trcode = c.xcode

WHERE a.xDate = PETSA AND c.xcat = 'ROOM CHARGE';

ELSEIF ins = "UPDATE_NNN1" THEN

UPDATE tblrevrankreport tr INNER JOIN tblcustomerinfohistory tc

ON tr.xDate = tc.xDate

AND tr.`transid` = tc.`TransactionID`

AND tr.`xDate` = PETSA

AND tr.COutDate > tr.xdate

AND (tr.rmcat <> 'PQ' OR tr.rmcat <> 'Walkin')

SET tr.nyts = 1,

tr.NoOfAdult = tc.NoOfAdult,

tr.NoOfChild = tc.NoOfChild;

ELSEIF ins = "UPDATE_NNN2" THEN

UPDATE tblrevrankreport

SET

nyts = '0',

NoOfAdult = '0',

NoOfChild = '0'

WHERE xdate = PETSA

AND coutdate<=xdate;

ELSEIF ins = "UPDATE_ROOMTARIFFDESC" THEN

UPDATE tblrevrankreport,tblroomrate

SET tblrevrankreport.`rmtariffdesc` = tblroomrate.`rateDesc`

WHERE tblrevrankreport.rmtariff = tblroomrate.`room_type`

AND tblrevrankreport.xdate = PETSA;

ELSEIF ins = "UPDATE_ROOMDESC" THEN

UPDATE tblrevrankreport,tblroom

SET tblrevrankreport.`rmdesc` = tblroom.`roomdesc`

WHERE tblrevrankreport.`rmno` = tblroom.`Room_No`

AND tblrevrankreport.xdate = PETSA;

ELSEIF ins = "UPDATE_MARKETCODE" THEN

UPDATE tblrevrankreport,tblcmarket

SET tblrevrankreport.marketCode = tblcmarket.`xCode`

WHERE tblcmarket.`xDesc` = tblrevrankreport.`marketdesc`

AND tblrevrankreport.xdate = PETSA;

END IF;

END$$

DELIMITER ;

對於某些報告,因爲我不能在手術過程中添加一個進度條正在運行(這將引領應用程序中沒有響應),我添加了一個名爲「插件」只是爲了節省每次查詢的整個過程則在其之間添加一定的UI操作變量,見下面的代碼:

Public Sub processRevRank(ByVal MyDate1 As String, ByVal MyDate2 As String)

'-- LATEST CODE AS OF JUNE 08, 2017

Dim RSC As ADODB.Recordset

Dim sDate As String

sDate = Format(MyDate1, "yyyy-mm-dd")

Dim xDays As Integer

If MyDate1 = "" And MyDate2 <> "" Then

MyDate2 = MyDate1

xDays = DateDiff("d", MyDate2, MyDate2)

ElseIf MyDate1 <> "" And MyDate2 = "" Then

MyDate1 = MyDate2

xDays = DateDiff("d", MyDate1, MyDate1)

ElseIf MyDate1 <> "" And MyDate2 <> "" Then

xDays = DateDiff("d", MyDate1, MyDate2)

Else

Unload frmLoadingReports

Exit Sub

End If

Dim xWidth As Integer

If xDays <> 0 Then

xWidth = 886/xDays

Else

xWidth = 886

End If

Do Until CDate(sDate) > CDate(MyDate2)

frmLoadingReports.lblTitle.Caption = "PROCESSING (Rank by Company : " & sDate & ")"

frmLoadingReports.lblLoadingTitleBack.Caption = "Deleting Records"

frmLoadingReports.lblLoadingTitleFront.Caption = "Deleting Records"

frmLoadingReports.picLoading.Width = frmLoadingReports.picLoading.Width + xWidth

DoEvents

Set RSC = Nothing

Set RSC = OpenRS("CALL SP_Rank_by_Company('" & sDate & "','DELETE')")

frmLoadingReports.lblLoadingTitleBack.Caption = "Inserting Records"

frmLoadingReports.lblLoadingTitleFront.Caption = "Inserting Records"

frmLoadingReports.picLoading.Width = frmLoadingReports.picLoading.Width + xWidth

DoEvents

Set RSC = Nothing

Set RSC = OpenRS("CALL SP_Rank_by_Company('" & sDate & "','INSERT')")

frmLoadingReports.lblLoadingTitleBack.Caption = "Updating Records"

frmLoadingReports.lblLoadingTitleFront.Caption = "Updating Records"

frmLoadingReports.picLoading.Width = frmLoadingReports.picLoading.Width + xWidth

DoEvents

Set RSC = Nothing

Set RSC = OpenRS("CALL SP_Rank_by_Company('" & sDate & "','UPDATE_NNN1')")

frmLoadingReports.lblLoadingTitleBack.Caption = "Updating Room Tariff Description"

frmLoadingReports.lblLoadingTitleFront.Caption = "Updating Room Tariff Description"

frmLoadingReports.picLoading.Width = frmLoadingReports.picLoading.Width + xWidth

DoEvents

Set RSC = Nothing

Set RSC = OpenRS("CALL SP_Rank_by_Company('" & sDate & "','UPDATE_ROOMTARIFFDESC')")

frmLoadingReports.lblLoadingTitleBack.Caption = "Updating Room Description"

frmLoadingReports.lblLoadingTitleFront.Caption = "Updating Room Description"

frmLoadingReports.picLoading.Width = frmLoadingReports.picLoading.Width + xWidth

DoEvents

Set RSC = Nothing

Set RSC = OpenRS("CALL SP_Rank_by_Company('" & sDate & "','UPDATE_ROOMDESC')")

frmLoadingReports.lblLoadingTitleBack.Caption = "Updating Marketcode"

frmLoadingReports.lblLoadingTitleFront.Caption = "Updating Marketcode"

frmLoadingReports.picLoading.Width = frmLoadingReports.picLoading.Width + xWidth

DoEvents

Set RSC = Nothing

Set RSC = OpenRS("CALL SP_Rank_by_Company('" & sDate & "','UPDATE_MARKETCODE')")

sDate = DateAdd("d", 1, MyDate1)

sDate = Format(sDate, "yyyy-mm-dd")

Loop

frmLoadingReports.lblLoadingTitleBack.Caption = "Done"

frmLoadingReports.lblLoadingTitleFront.Caption = "Done"

frmLoadingReports.picLoading.Width = 5320

DoEvents

'timer for closing

frmLoadingReports.Timer4.Enabled = True

Exit Sub

End Sub

我仍然不滿意因爲沒有響應仍然發生,所以我想在切換查詢中的UPDATE部分,因爲ui掛起了這部分按交易和按日期。

我的問題是... 如何使用SELECT table1創建一個存儲過程,然後使用選定的記錄更新table2並循環它,直到某個條件滿足爲止?任何簡單的SQL存儲過程循環選擇和更新?

謝謝!

+0

與其試圖在UI中解決此問題(或者作爲第一步),您是否滿意自己調整了數據庫以儘可能有效地運行這些查詢? –

+0

是的,明白了,那是我使用WinXP在vmware上運行項目的。謝謝! –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值