MoiD101
MoiD101

Reputation: 195

Converting classic ASP ADODB script to TSQL

Hi i inherited a load of old classic ASP code that makes some updates to some tables in what i think was old MS access db.

The databases have now been converted to SQL and work OK, however i have a need to convert some old ASP code to the equivalent TSQL. TSQL is NOT my strong point and would appreciate some help converting the vb script to the equivalent TSQL for a stored procedure called 'UpdateCircuitOrdersComments' its not the basic syntax i'm struggling with, its more what can be done IE FOR's IF's Cases, loops etc in order to achieve the below in sql.

I know the code below is not great or could be done far better, but that's what i inherited sorry.

Every field is available to me via c# parameters passed to the sproc using ajax apart from the "Contract Period"

Looking forward to learning from any sound advice from you guys...

The script is below:

Dim connect2, Class2, Query2, Counter
Dim indate1, indate2, indate3, aday1, amonth1, ayear1, aday2, amonth2, ayear2, aday3, amonth3, ayear3, length, maintrate, equiprate, stqrrate, startserial, liveserial, endserial

Dim splitArray


Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open QuotebaseDB

Set Class1 = Server.CreateObject("ADODB.Recordset")
Query =    "SELECT * FROM circuits WHERE ID=" & Request("ID")
Class1.Open Query,Connect,adOpenDynamic,adLockOptimistic

if Class1("Contract Period") <> "" Then
    length = Class1("Contract Period")
    splitArray = split(length, " ")
    length = CInt(splitArray(0))
else
    length = 1
end if

Class1("actual live date") = Request("actuallivedate")
Class1("lastupdater") = Session("username")
Class1("lastupdate") = Date()
Class1("Contract Period") = length

Class1.Update

'=========================================
' Add Rate Information - Based On Actuals
'=========================================

   indate1 = Request("actuallivedate")   
   indate2 = Request("actuallivedate")
   indate3 = Request("actuallivedate")

   aday1 = Left(indate1, 2)
   amonth1 = Mid(indate1, 4, 2)
   ayear1 = Right(indate1, 2)
   aday2 = Left(indate2, 2)
   amonth2 = Mid(indate2, 4, 2)
   ayear2 = Right(indate2, 2)
   aday3 = Left(indate3, 2)
   amonth3 = Mid(indate3, 4, 2)
   ayear3 = Right(indate3, 2) + length

   startserial = dateserial(ayear1, amonth1, aday1)
   liveserial = dateserial(ayear2, amonth2, aday2)
   endserial = dateserial(ayear3, amonth3, aday3)


'========================================================
' Check that current maintenance rate will be superseded
'========================================================


Dim MaintConnect1, MaintRS1, MaintQuery1 

Set MaintConnect1 = Server.CreateObject("ADODB.Connection")
MaintConnect1.Open QuotebaseDB

Set MaintRS1 = Server.CreateObject("ADODB.Recordset")
MaintQuery1 =    "SELECT * FROM maintenancetable WHERE CircuitID=" & Request("ID")
MaintRS1.Open MaintQuery1,MaintConnect1,adOpenDynamic,adLockOptimistic

Do while not MaintRS1.eof

If (MaintRS1("startdate") < startserial) OR (MaintRS1("enddate") > endserial) Then

MaintRS1("startdate") = StartSerial
MaintRS1("enddate") = EndSerial
MaintRS1("circuitnum") = Class1("circuit number")
MaintRS1("modifieddate") = now

MaintRS1.Update

End If

MaintRS1.movenext

Loop

MaintRS1.close
set MaintRS1 = nothing

MaintConnect1.close
set MaintConnect1 = nothing

'========================================================
' Check that current equipment rate will be superseded
'========================================================


Dim EquipConnect1, EquipRS1, EquipQuery1 

Set EquipConnect1 = Server.CreateObject("ADODB.Connection")
EquipConnect1.Open QuotebaseDB

Set EquipRS1 = Server.CreateObject("ADODB.Recordset")
EquipQuery1 =    "SELECT * FROM [equipment table] WHERE CircuitID=" & Request("ID")
EquipRS1.Open EquipQuery1,EquipConnect1,adOpenDynamic,adLockOptimistic

Do while not EquipRS1.eof

If (EquipRS1("startdate") < startserial) OR (EquipRS1("enddate") > endserial) Then

EquipRS1("startdate") = StartSerial
EquipRS1("enddate") = EndSerial
EquipRS1("circuitnum") = Class1("circuit number")
EquipRS1("modifieddate") = now

EquipRS1.Update

End If

EquipRS1.movenext

Loop

EquipRS1.close
set EquipRS1 = nothing

EquipConnect1.close
set EquipConnect1 = nothing

'========================================================
' Check that current rental rate will be superseded
'========================================================

Dim STQRConnect1, STQRRS1, STQRQuery1 

Set STQRConnect1 = Server.CreateObject("ADODB.Connection")
STQRConnect1.Open QuotebaseDB

Set STQRRS1 = Server.CreateObject("ADODB.Recordset")
STQRQuery1 =    "SELECT * FROM STQRtable WHERE CircuitID=" & Request("ID")
STQRRS1.Open STQRQuery1,STQRConnect1,adOpenDynamic,adLockOptimistic

Do while not STQRRS1.eof

If (STQRRS1("startdate") < startserial) OR (STQRRS1("enddate") > endserial) Then

STQRRS1("startdate") = StartSerial
STQRRS1("enddate") = EndSerial
STQRRS1("circuitnum") = Class1("circuit number")
STQRRS1("modifieddate") = now

STQRRS1.Update

End If

STQRRS1.movenext

Loop

STQRRS1.close
set STQRRS1 = nothing

STQRConnect1.close
set STQRConnect1 = nothing

'===========================================
' Update Connection Charge As A One Off Charge
'===========================================

Dim OneConnect, OneRS, OneQuery 

Set OneConnect = Server.CreateObject("ADODB.Connection")
OneConnect.Open QuotebaseDB

Set OneRS = Server.CreateObject("ADODB.Recordset")
OneQuery = "SELECT * FROM OneOffCharges WHERE chargetype = 'Connection Charge' and CircuitID=" & Request("ID")

OneRS.Open OneQuery,OneConnect,adOpenDynamic,adLockOptimistic

If not oners.eof Then

OneRS("chargedate") = startserial
OneRS("modifieddate") = now
OneRS("chargetype") = "Connection Charge"

OneRS.Update

End If

OneRS.close
set OneRS = nothing

OneConnect.close
set OneConnect = nothing

Class1.close
set Class1 = nothing

Connect.close
set Connect = nothing

Upvotes: 1

Views: 200

Answers (1)

T I
T I

Reputation: 9933

The loops don't appear to do much other then iterate over the record set. It is unlikely that you will need to do this in T-SQL as you can probably deduce everything from queries.

Most of it just looks like update statements

-- Check that current maintenance rate will be superseded
UPDATE maintenancetable 
SET StartDate = @startSerial,
    EndDate = @endSerial,
    CircuitNum = @circuitNumber,
    ModifiedDate = CURRENT_TIMESTAMP
WHERE CircuitID=@circuitId
AND (Startdate < @startSerial OR EndDate > @endSerial)

The contract period is a bit confusing it seems to be getting the first item of an array so maybe this is the equivalent of

SELECT TOP 1 ContractPeriod FROM circuits WHERE ID=@id
-- ? ORDER BY ContractPeriod ?

Upvotes: 3

Related Questions