The Five Stages of .NET Conversion (for VB6 Developers)

For developers, the move from VB6 to VB.NET (or any .NET language) is much more of a mental one than anything else. The syntax of VB.NET is sufficiently familiar to avoid syntax overload. But the functional differences are significant enough to make one question how .NET could make anyone more productive. It has been a while since I made the move myself, but I’d like to share the stages that I, and I suspect most other converts, have passed through.

Anger

Unfortunately this was the first emotion I experience and the one that lingered the longest. When I made the move to .NET, I had been a VB/ASP developer for about 7 years. I could make VB/ASP sing and dance like a virtuoso. I didn’t need to think about the commands to type…my fingers knew what to do with no conscious bidding. I strongly believe that more current VB6 developers are living in this state of grace, which is the reason for the lack of acceptance that .NET could increase productivity.

The first two weeks of .NET were hellacious. I went from coding expert to coding simpleton. Things that were just ‘known’ took 45 minutes of Googling to find. Simple functions, like how to convert a string to a date; how to get the current time; how to identify the current working directory. I estimate that I 20% of what I knew was lost with the move to .NET. Anger doesn't begin to describe the feelings of frustration I felt. Rage would be closer.

Depression

Anger gave way to depression as I gradually realized that .NET was the way of the future. The size of the base class library was (and still is) quite intimidating. How was I going to get my head around all of the various namespaces/classes/properties/methods? After the frustration of the previous two weeks, I sunk into a depression as I realized that I was much further away from becoming “.NET virtuoso” than I had hoped I would be. The days of boundless productivity were both far behind me and far into the future.

Shock

The turning point in this process came when I tried to do something in .NET was was challenging in VB6. For me, that was the creation of a Windows Service. In VB6, the ability to create an application that started automatically when the computer was started and responded appropriately to start/stop/pause/continue commands required some high-end programming or a third-party component. But for .NET, it is dirt simple. In VB.NET, you simply create a class that derives from the ServiceBase class. Create the OnStart method that is invoked when the process first starts and you’re done. Even adding the mechanism to support installing the Windows Service from a command line was easy.

I was stunned. I started to take a second look at some of the other functionality that were challenging in VB6/ASP, to see if the same improvements had been made. My first stop was creating a simple data-driven Windows form. While it wasn’t exactly what I was looking for (a problem that has since been corrected in VS 2005), it was certainly better than VB6. And in ASP.NET, DataGrids rocked as a way to display tables of information pulled from a database. Maybe there was something to this productivity increase after all.

And it didn’t stop there. Creating a text box that accepted only phone numbers and looked like a normal text box(really…anyone *like* the inflexibility of the MaskedEdit controls display?) was also a breeze. Derive a class from the TextBox class and implement the KeyPress and Text property overloads to ensure that the format is appropriate. All dirt simple.

Denial

Now my world was really in an uproar. Could it be that VB6 wasn’t the epitome of development tools…that combination of ease and power that makes it such a staple for business developers? Not possible. After all, look at the millions of lines of code and thousands of developers being successful with VB6. That’s the only measure of a development environment, isn’t it?

Acceptance

And yet, VB.NET ultimately wasn’t that different from what I was used to. Object-oriented concepts had been floating around since VB4.Controls have properties and methods. So could classes. The syntax, nor the idea, isn’t that new. It took a little while to get my head around the power of inheritance, but that doesn’t come up in business development as much as people might think. I was now at the end of the made the journey through the stages of .NET. Once you get over the hump, VB.NET is definitely more productive than VB6 for the average business developer. And keep in mind that I went through these stages in 2002. Assuming you’re moving to VS 2005, then you have even more areas where you have less work to do than you did in the past.

I do have a word of warning for VB6 developers. The Base Class Library (BCL) is incredibly daunting. While I would like to tell everyone not to be intimidated, it’s hard not to be. Enhancements, like the My namespace in VB.NET 2005 relieve some of the stress, but there is still a lot of surface area that the average developer needs to be aware of to maximize their effectiveness. When you first buckle down to learn .NET, make sure you focus on the namespaces and classes that make up the bulk of what you’ll be doing, whether it’s data access, ASP.NET or graphics. Knowledge and familiarity was ultimately the reason that I was able to move through these stages without any -cide effects…that would be homicide or suicide.

Good luck with your own journey.

Update: Title changed, mostly because I can't count. Thanks Rob. 

Comments

  • bruce November 26, 2006 2:06 AM

    Option Explicit

    'Define a new RecordSet
    Private WithEvents rstK01 As ADODB.Recordset

    'This event is run for certain class errors.
    Public Event ClassError(sProcedureName As String, oErr As ErrObject)

    'This event accord when the recordset move completely to new record.
    Public Event MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)

    Private vBookMark As Variant
    Private mblnIsOpen As Boolean

    Private mstrWellCode As String
    Private mstrSerialNo As String
    Private mstrRefrenceNo As String
    Private mstrFieldName As String
    Private mstrLongitude As String
    Private mstrLatitude As String
    Private mstrCountryName As String
    Private mstrState As String
    Private mstrCompanyCode As String
    Private mstrLogCode As String
    Private mstrKB As String
    Private mstrGL As String
    Private mstrDF As String
    Private mstrPermanentDatum As String
    Private mstrLogMeasuredFrom As String
    Private mstrDrillingMeasuredFrom As String
    Private mstrElev As String
    Private mstrMaxWellDeviation As String
    Private mstrLoggingDate As String
    Private mstrLoggingTime As String
    Private mstrRunNo As String
    Private mstrDepthDriller As String
    Private mstrDepthLogger As String
    Private mstrFromPoint As String
    Private mstrToPoint As String
    Private mstrCasingDrillerSize As String
    Private mstrCasingDrillerSizeCode As String
    Private mstrCasingShoeDrillingDepth As String
    Private mstrCasingLoggerDepth As String
    Private mstrMudTypeCode As String
    Private mstrDensity As String
    Private mstrViscosity As String
    Private mstrFluidLoss As String
    Private mstrAlkalinityPH As String
    Private mstrSourceOfSample As String
    Private mstrRM As String
    Private mstrRMF As String
    Private mstrRMC As String
    Private mstrTRM As String
    Private mstrTRMF As String
    Private mstrTRMC As String
    Private mstrSourceRMF As String
    Private mstrSourceRMC As String
    Private mstrRMAtMRT As String
    Private mstrRMFAtMRT As String
    Private mstrMaxRecordedTemp As String
    Private mstrCirculationStoppedDate As String
    Private mstrCirculationStoppedTime As String
    Private mstrLoggerOnButtomDate As String
    Private mstrLoggerOnButtomTime As String
    Private mstrUnitNo As String
    Private mstrContractorLocation As String
    Private mstrRecoredBy As String
    Private mstrWithnessedBy As String
    Private mstrOtherServices1 As String
    Private mstrOtherServices2 As String
    Private mstrOtherServices3 As String
    Private mstrOtherServices4 As String
    Private mstrOtherServices5 As String
    Private mstrOtherServices6 As String
    Private mstrOtherServices7 As String
    Private mstrSalinity As String
    Private mstrCalcium As String
    Private mstrOilWater As String
    Private mstrSolid As String
    Private mstrBarite As String
    Private mstrExistPrint As String
    Private mstrExistFilm As String
    Private mstrFilmNo As String
    Private mstrExistTape As String
    Private mstrTapeTypeCode As String
    Private mstrTapeNo As String
    Private mstrExistCD As String
    Private mstrCDNo As String
    Private mstrOpenOrCaseHoleCode As String
    Private mstrToolsSerialNo1 As String
    Private mstrToolsSerialNo2 As String
    Private mstrToolsSerialNo3 As String
    Private mstrToolsSerialNo4 As String
    Private mstrToolsSerialNo5 As String
    Private mstrToolsSerialNo6 As String
    Private mstrToolsTypeCode As String
    Private mstrToolScatch As String
    Private mstrRemarks As String

    Public Property Get Recordset() As ADODB.Recordset
    Set Recordset = rstK01
    End Property
    Public Property Get RowIndex() As Long
    On Error GoTo errhandle
    RowIndex = Recordset.Bookmark
    Exit Property
    errhandle:
    RowIndex = -1
    End Property
    Public Property Let RowIndex(lNewIndex As Long)
    Recordset.AbsolutePosition = lNewIndex
    End Property
    Public Property Get IsOpen() As Boolean
    IsOpen = mblnIsOpen
    End Property
    Public Property Get Filter() As String
    Filter = Recordset.Filter
    End Property
    Public Property Let Filter(lNewFilter As String)
    On Error GoTo errhandle
    Recordset.Filter = lNewFilter
    Recordset.Requery
    UpdateData
    Exit Property
    errhandle:
    RaiseEvent ClassError("Filter", Err)
    End Property
    Public Property Let WellCode(ByVal vNewValue As String)
    mstrWellCode = vNewValue
    End Property
    Public Property Let SerialNo(ByVal vNewValue As String)
    mstrSerialNo = vNewValue
    End Property
    Public Property Let RefrenceNo(ByVal vNewValue As String)
    mstrRefrenceNo = vNewValue
    End Property
    Public Property Let FieldName(ByVal vNewValue As String)
    mstrFieldName = vNewValue
    End Property
    Public Property Let Longitude(ByVal vNewValue As String)
    mstrLongitude = vNewValue
    End Property
    Public Property Let Latitude(ByVal vNewValue As String)
    mstrLatitude = vNewValue
    End Property
    Public Property Let CountryName(ByVal vNewValue As String)
    mstrCountryName = vNewValue
    End Property
    Public Property Let State(ByVal vNewValue As String)
    mstrState = vNewValue
    End Property
    Public Property Let CompanyCode(ByVal vNewValue As String)
    mstrCompanyCode = vNewValue
    End Property
    Public Property Let LogCode(ByVal vNewValue As String)
    mstrLogCode = vNewValue
    End Property
    Public Property Let KB(ByVal vNewValue As String)
    mstrKB = vNewValue
    End Property
    Public Property Let GL(ByVal vNewValue As String)
    mstrGL = vNewValue
    End Property
    Public Property Let DF(ByVal vNewValue As String)
    mstrDF = vNewValue
    End Property
    Public Property Let PermanentDatum(ByVal vNewValue As String)
    mstrPermanentDatum = vNewValue
    End Property
    Public Property Let LogMeasuredFrom(ByVal vNewValue As String)
    mstrLogMeasuredFrom = vNewValue
    End Property
    Public Property Let DrillingMeasuredFrom(ByVal vNewValue As String)
    mstrDrillingMeasuredFrom = vNewValue
    End Property
    Public Property Let Elev(ByVal vNewValue As String)
    mstrElev = vNewValue
    End Property
    Public Property Let MaxWellDeviation(ByVal vNewValue As String)
    mstrMaxWellDeviation = vNewValue
    End Property
    Public Property Let LoggingDate(ByVal vNewValue As String)
    mstrLoggingDate = vNewValue
    End Property
    Public Property Let LoggingTime(ByVal vNewValue As String)
    mstrLoggingTime = vNewValue
    End Property
    Public Property Let RunNo(ByVal vNewValue As String)
    mstrRunNo = vNewValue
    End Property
    Public Property Let DepthDriller(ByVal vNewValue As String)
    mstrDepthDriller = vNewValue
    End Property
    Public Property Let DepthLogger(ByVal vNewValue As String)
    mstrDepthLogger = vNewValue
    End Property
    Public Property Let FromPoint(ByVal vNewValue As String)
    mstrFromPoint = vNewValue
    End Property
    Public Property Let ToPoint(ByVal vNewValue As String)
    mstrToPoint = vNewValue
    End Property
    Public Property Let CasingDrillerSize(ByVal vNewValue As String)
    mstrCasingDrillerSize = vNewValue
    End Property
    Public Property Let CasingDrillerSizeCode(ByVal vNewValue As String)
    mstrCasingDrillerSizeCode = vNewValue
    End Property
    Public Property Let CasingShoeDrillingDepth(ByVal vNewValue As String)
    mstrCasingShoeDrillingDepth = vNewValue
    End Property
    Public Property Let CasingLoggerDepth(ByVal vNewValue As String)
    mstrCasingLoggerDepth = vNewValue
    End Property
    Public Property Let MudTypeCode(ByVal vNewValue As String)
    mstrMudTypeCode = vNewValue
    End Property
    Public Property Let Density(ByVal vNewValue As String)
    mstrDensity = vNewValue
    End Property
    Public Property Let Viscosity(ByVal vNewValue As String)
    mstrViscosity = vNewValue
    End Property
    Public Property Let FluidLoss(ByVal vNewValue As String)
    mstrFluidLoss = vNewValue
    End Property
    Public Property Let AlkalinityPH(ByVal vNewValue As String)
    mstrAlkalinityPH = vNewValue
    End Property
    Public Property Let SourceOfSample(ByVal vNewValue As String)
    mstrSourceOfSample = vNewValue
    End Property
    Public Property Let RM(ByVal vNewValue As String)
    mstrRM = vNewValue
    End Property
    Public Property Let RMF(ByVal vNewValue As String)
    mstrRMF = vNewValue
    End Property
    Public Property Let RMC(ByVal vNewValue As String)
    mstrRMC = vNewValue
    End Property
    Public Property Let TRM(ByVal vNewValue As String)
    mstrTRM = vNewValue
    End Property
    Public Property Let TRMF(ByVal vNewValue As String)
    mstrTRMF = vNewValue
    End Property
    Public Property Let TRMC(ByVal vNewValue As String)
    mstrTRMC = vNewValue
    End Property
    Public Property Let SourceRMF(ByVal vNewValue As String)
    mstrSourceRMF = vNewValue
    End Property
    Public Property Let SourceRMC(ByVal vNewValue As String)
    mstrSourceRMC = vNewValue
    End Property
    Public Property Let RMAtMRT(ByVal vNewValue As String)
    mstrRMAtMRT = vNewValue
    End Property
    Public Property Let RMFAtMRT(ByVal vNewValue As String)
    mstrRMFAtMRT = vNewValue
    End Property
    Public Property Let MaxRecordedTemp(ByVal vNewValue As String)
    mstrMaxRecordedTemp = vNewValue
    End Property
    Public Property Let CirculationStoppedDate(ByVal vNewValue As String)
    mstrCirculationStoppedDate = vNewValue
    End Property
    Public Property Let CirculationStoppedTime(ByVal vNewValue As String)
    mstrCirculationStoppedTime = vNewValue
    End Property
    Public Property Let LoggerOnButtomDate(ByVal vNewValue As String)
    mstrLoggerOnButtomDate = vNewValue
    End Property
    Public Property Let LoggerOnButtomTime(ByVal vNewValue As String)
    mstrLoggerOnButtomTime = vNewValue
    End Property
    Public Property Let UnitNo(ByVal vNewValue As String)
    mstrUnitNo = vNewValue
    End Property
    Public Property Let ContractorLocation(ByVal vNewValue As String)
    mstrContractorLocation = vNewValue
    End Property
    Public Property Let RecoredBy(ByVal vNewValue As String)
    mstrRecoredBy = vNewValue
    End Property
    Public Property Let WithnessedBy(ByVal vNewValue As String)
    mstrWithnessedBy = vNewValue
    End Property
    Public Property Let OtherServices1(ByVal vNewValue As String)
    mstrOtherServices1 = vNewValue
    End Property
    Public Property Let OtherServices2(ByVal vNewValue As String)
    mstrOtherServices2 = vNewValue
    End Property
    Public Property Let OtherServices3(ByVal vNewValue As String)
    mstrOtherServices3 = vNewValue
    End Property
    Public Property Let OtherServices4(ByVal vNewValue As String)
    mstrOtherServices4 = vNewValue
    End Property
    Public Property Let OtherServices5(ByVal vNewValue As String)
    mstrOtherServices5 = vNewValue
    End Property
    Public Property Let OtherServices6(ByVal vNewValue As String)
    mstrOtherServices6 = vNewValue
    End Property
    Public Property Let OtherServices7(ByVal vNewValue As String)
    mstrOtherServices7 = vNewValue
    End Property
    Public Property Let Salinity(ByVal vNewValue As String)
    mstrSalinity = vNewValue
    End Property
    Public Property Let Calcium(ByVal vNewValue As String)
    mstrCalcium = vNewValue
    End Property
    Public Property Let OilWater(ByVal vNewValue As String)
    mstrOilWater = vNewValue
    End Property
    Public Property Let Solid(ByVal vNewValue As String)
    mstrSolid = vNewValue
    End Property
    Public Property Let Barite(ByVal vNewValue As String)
    mstrBarite = vNewValue
    End Property
    Public Property Let ExistPrint(ByVal vNewValue As String)
    mstrExistPrint = vNewValue
    End Property
    Public Property Let ExistFilm(ByVal vNewValue As String)
    mstrExistFilm = vNewValue
    End Property
    Public Property Let FilmNo(ByVal vNewValue As String)
    mstrFilmNo = vNewValue
    End Property
    Public Property Let ExistTape(ByVal vNewValue As String)
    mstrExistTape = vNewValue
    End Property
    Public Property Let TapeTypeCode(ByVal vNewValue As String)
    mstrTapeTypeCode = vNewValue
    End Property
    Public Property Let TapeNo(ByVal vNewValue As String)
    mstrTapeNo = vNewValue
    End Property
    Public Property Let ExistCD(ByVal vNewValue As String)
    mstrExistCD = vNewValue
    End Property
    Public Property Let CDNo(ByVal vNewValue As String)
    mstrCDNo = vNewValue
    End Property
    Public Property Let OpenOrCaseHoleCode(ByVal vNewValue As String)
    mstrOpenOrCaseHoleCode = vNewValue
    End Property
    Public Property Let ToolsSerialNo1(ByVal vNewValue As String)
    mstrToolsSerialNo1 = vNewValue
    End Property
    Public Property Let ToolsSerialNo2(ByVal vNewValue As String)
    mstrToolsSerialNo2 = vNewValue
    End Property
    Public Property Let ToolsSerialNo3(ByVal vNewValue As String)
    mstrToolsSerialNo3 = vNewValue
    End Property
    Public Property Let ToolsSerialNo4(ByVal vNewValue As String)
    mstrToolsSerialNo4 = vNewValue
    End Property
    Public Property Let ToolsSerialNo5(ByVal vNewValue As String)
    mstrToolsSerialNo5 = vNewValue
    End Property
    Public Property Let ToolsSerialNo6(ByVal vNewValue As String)
    mstrToolsSerialNo6 = vNewValue
    End Property
    Public Property Let ToolsTypeCode(ByVal vNewValue As String)
    mstrToolsTypeCode = vNewValue
    End Property
    Public Property Let ToolScatch(ByVal vNewValue As String)
    mstrToolScatch = vNewValue
    End Property
    Public Property Let Remarks(ByVal vNewValue As String)
    mstrRemarks = vNewValue
    End Property
    Public Property Get WellCode() As String
    WellCode = mstrWellCode
    End Property
    Public Property Get SerialNo() As String
    SerialNo = mstrSerialNo
    End Property
    Public Property Get RefrenceNo() As String
    RefrenceNo = mstrRefrenceNo
    End Property
    Public Property Get FieldName() As String
    FieldName = mstrFieldName
    End Property

    Public Property Get Longitude() As String
    Longitude = mstrLongitude
    End Property

    Public Property Get Latitude() As String
    Latitude = mstrLatitude
    End Property

    Public Property Get CountryName() As String
    CountryName = mstrCountryName
    End Property

    Public Property Get State() As String
    State = mstrState
    End Property
    Public Property Get CompanyCode() As String
    CompanyCode = mstrCompanyCode
    End Property
    Public Property Get LogCode() As String
    LogCode = mstrLogCode
    End Property
    Public Property Get KB() As String
    KB = mstrKB
    End Property
    Public Property Get GL() As String
    GL = mstrGL
    End Property
    Public Property Get DF() As String
    DF = mstrDF
    End Property
    Public Property Get PermanentDatum() As String
    PermanentDatum = mstrPermanentDatum
    End Property
    Public Property Get LogMeasuredFrom() As String
    LogMeasuredFrom = mstrLogMeasuredFrom
    End Property
    Public Property Get DrillingMeasuredFrom() As String
    DrillingMeasuredFrom = mstrDrillingMeasuredFrom
    End Property
    Public Property Get Elev() As String
    Elev = mstrElev
    End Property
    Public Property Get MaxWellDeviation() As String
    MaxWellDeviation = mstrMaxWellDeviation
    End Property
    Public Property Get LoggingDate() As String
    LoggingDate = mstrLoggingDate
    End Property
    Public Property Get LoggingTime() As String
    LoggingTime = mstrLoggingTime
    End Property
    Public Property Get RunNo() As String
    RunNo = mstrRunNo
    End Property
    Public Property Get DepthDriller() As String
    DepthDriller = mstrDepthDriller
    End Property
    Public Property Get DepthLogger() As String
    DepthLogger = mstrDepthLogger
    End Property
    Public Property Get FromPoint() As String
    FromPoint = mstrFromPoint
    End Property
    Public Property Get ToPoint() As String
    ToPoint = mstrToPoint
    End Property
    Public Property Get CasingDrillerSize() As String
    CasingDrillerSize = mstrCasingDrillerSize
    End Property
    Public Property Get CasingDrillerSizeCode() As String
    CasingDrillerSizeCode = mstrCasingDrillerSizeCode
    End Property
    Public Property Get CasingShoeDrillingDepth() As String
    CasingShoeDrillingDepth = mstrCasingShoeDrillingDepth
    End Property
    Public Property Get CasingLoggerDepth() As String
    CasingLoggerDepth = mstrCasingLoggerDepth
    End Property
    Public Property Get MudTypeCode() As String
    MudTypeCode = mstrMudTypeCode
    End Property
    Public Property Get Density() As String
    Density = mstrDensity
    End Property
    Public Property Get Viscosity() As String
    Viscosity = mstrViscosity
    End Property
    Public Property Get FluidLoss() As String
    FluidLoss = mstrFluidLoss
    End Property
    Public Property Get AlkalinityPH() As String
    AlkalinityPH = mstrAlkalinityPH
    End Property
    Public Property Get SourceOfSample() As String
    SourceOfSample = mstrSourceOfSample
    End Property
    Public Property Get RM() As String
    RM = mstrRM
    End Property
    Public Property Get RMF() As String
    RMF = mstrRMF
    End Property
    Public Property Get RMC() As String
    RMC = mstrRMC
    End Property
    Public Property Get TRM() As String
    TRM = mstrTRM
    End Property
    Public Property Get TRMF() As String
    TRMF = mstrTRMF
    End Property
    Public Property Get TRMC() As String
    TRMC = mstrTRMC
    End Property
    Public Property Get SourceRMF() As String
    SourceRMF = mstrSourceRMF
    End Property
    Public Property Get SourceRMC() As String
    SourceRMC = mstrSourceRMC
    End Property
    Public Property Get RMAtMRT() As String
    RMAtMRT = mstrRMAtMRT
    End Property
    Public Property Get RMFAtMRT() As String
    RMFAtMRT = mstrRMFAtMRT
    End Property
    Public Property Get MaxRecordedTemp() As String
    MaxRecordedTemp = mstrMaxRecordedTemp
    End Property
    Public Property Get CirculationStoppedDate() As String
    CirculationStoppedDate = mstrCirculationStoppedDate
    End Property
    Public Property Get CirculationStoppedTime() As String
    CirculationStoppedTime = mstrCirculationStoppedTime
    End Property
    Public Property Get LoggerOnButtomDate() As String
    LoggerOnButtomDate = mstrLoggerOnButtomDate
    End Property
    Public Property Get LoggerOnButtomTime() As String
    LoggerOnButtomTime = mstrLoggerOnButtomTime
    End Property
    Public Property Get UnitNo() As String
    UnitNo = mstrUnitNo
    End Property
    Public Property Get ContractorLocation() As String
    ContractorLocation = mstrContractorLocation
    End Property
    Public Property Get RecoredBy() As String
    RecoredBy = mstrRecoredBy
    End Property
    Public Property Get WithnessedBy() As String
    WithnessedBy = mstrWithnessedBy
    End Property
    Public Property Get OtherServices1() As String
    OtherServices1 = mstrOtherServices1
    End Property
    Public Property Get OtherServices2() As String
    OtherServices2 = mstrOtherServices2
    End Property
    Public Property Get OtherServices3() As String
    OtherServices3 = mstrOtherServices3
    End Property
    Public Property Get OtherServices4() As String
    OtherServices4 = mstrOtherServices4
    End Property
    Public Property Get OtherServices5() As String
    OtherServices5 = mstrOtherServices5
    End Property
    Public Property Get OtherServices6() As String
    OtherServices6 = mstrOtherServices6
    End Property
    Public Property Get OtherServices7() As String
    OtherServices7 = mstrOtherServices7
    End Property
    Public Property Get Salinity() As String
    Salinity = mstrSalinity
    End Property
    Public Property Get Calcium() As String
    Calcium = mstrCalcium
    End Property
    Public Property Get OilWater() As String
    OilWater = mstrOilWater
    End Property
    Public Property Get Solid() As String
    Solid = mstrSolid
    End Property
    Public Property Get Barite() As String
    Barite = mstrBarite
    End Property
    Public Property Get ExistPrint() As String
    ExistPrint = mstrExistPrint
    End Property
    Public Property Get ExistFilm() As String
    ExistFilm = mstrExistFilm
    End Property
    Public Property Get FilmNo() As String
    FilmNo = mstrFilmNo
    End Property
    Public Property Get ExistTape() As String
    ExistTape = mstrExistTape
    End Property
    Public Property Get TapeTypeCode() As String
    TapeTypeCode = mstrTapeTypeCode
    End Property
    Public Property Get TapeNo() As String
    TapeNo = mstrTapeNo
    End Property
    Public Property Get ExistCD() As String
    ExistCD = mstrExistCD
    End Property
    Public Property Get CDNo() As String
    CDNo = mstrCDNo
    End Property
    Public Property Get OpenOrCaseHoleCode() As String
    OpenOrCaseHoleCode = mstrOpenOrCaseHoleCode
    End Property
    Public Property Get ToolsSerialNo1() As String
    ToolsSerialNo1 = mstrToolsSerialNo1
    End Property
    Public Property Get ToolsSerialNo2() As String
    ToolsSerialNo2 = mstrToolsSerialNo2
    End Property
    Public Property Get ToolsSerialNo3() As String
    ToolsSerialNo3 = mstrToolsSerialNo3
    End Property
    Public Property Get ToolsSerialNo4() As String
    ToolsSerialNo4 = mstrToolsSerialNo4
    End Property
    Public Property Get ToolsSerialNo5() As String
    ToolsSerialNo5 = mstrToolsSerialNo5
    End Property
    Public Property Get ToolsSerialNo6() As String
    ToolsSerialNo6 = mstrToolsSerialNo6
    End Property
    Public Property Get ToolsTypeCode() As String
    ToolsTypeCode = mstrToolsTypeCode
    End Property
    Public Property Get ToolScatch() As String
    ToolScatch = mstrToolScatch
    End Property
    Public Property Get Remarks() As String
    Remarks = mstrRemarks
    End Property

    Public Sub UpdateData()
    On Error GoTo errhandle
    If rstK01.EOF = True Or rstK01.BOF = True Or rstK01.RecordCount <= 0 Then
    mstrWellCode = ""
    mstrSerialNo = ""
    mstrRefrenceNo = ""
    mstrFieldName = ""
    mstrLongitude = ""
    mstrLatitude = ""
    mstrState = ""
    mstrCountryName = ""
    mstrCompanyCode = ""
    mstrLogCode = ""
    mstrKB = ""
    mstrGL = ""
    mstrDF = ""
    mstrPermanentDatum = ""
    mstrLogMeasuredFrom = ""
    mstrDrillingMeasuredFrom = ""
    mstrElev = ""
    mstrMaxWellDeviation = ""
    mstrLoggingDate = ""
    mstrLoggingTime = ""
    mstrRunNo = ""
    mstrDepthDriller = ""
    mstrDepthLogger = ""
    mstrFromPoint = ""
    mstrToPoint = ""
    mstrCasingDrillerSize = ""
    mstrCasingDrillerSizeCode = ""
    mstrCasingShoeDrillingDepth = ""
    mstrCasingLoggerDepth = ""
    mstrMudTypeCode = ""
    mstrDensity = ""
    mstrViscosity = ""
    mstrFluidLoss = ""
    mstrAlkalinityPH = ""
    mstrSourceOfSample = ""
    mstrRM = ""
    mstrRMF = ""
    mstrRMC = ""
    mstrTRM = ""
    mstrTRMF = ""
    mstrTRMC = ""
    mstrSourceRMF = ""
    mstrSourceRMC = ""
    mstrRMAtMRT = ""
    mstrRMFAtMRT = ""
    mstrMaxRecordedTemp = ""
    mstrCirculationStoppedDate = ""
    mstrCirculationStoppedTime = ""
    mstrLoggerOnButtomDate = ""
    mstrLoggerOnButtomTime = ""
    mstrUnitNo = ""
    mstrContractorLocation = ""
    mstrRecoredBy = ""
    mstrWithnessedBy = ""
    mstrOtherServices1 = ""
    mstrOtherServices2 = ""
    mstrOtherServices3 = ""
    mstrOtherServices4 = ""
    mstrOtherServices5 = ""
    mstrOtherServices6 = ""
    mstrOtherServices7 = ""
    mstrSalinity = ""
    mstrCalcium = ""
    mstrOilWater = ""
    mstrSolid = ""
    mstrBarite = ""
    mstrExistPrint = ""
    mstrExistFilm = ""
    mstrFilmNo = ""
    mstrExistTape = ""
    mstrTapeTypeCode = ""
    mstrTapeNo = ""
    mstrExistCD = ""
    mstrCDNo = ""
    mstrOpenOrCaseHoleCode = ""
    mstrToolsSerialNo1 = ""
    mstrToolsSerialNo2 = ""
    mstrToolsSerialNo3 = ""
    mstrToolsSerialNo4 = ""
    mstrToolsSerialNo5 = ""
    mstrToolsSerialNo6 = ""
    mstrToolsTypeCode = ""
    mstrToolScatch = ""
    mstrRemarks = ""
    Else
    'CStr(IIf(IsNull(rstK01.Fields(WellCode).Value), "", rstK01.Fields(WellCode).Value))
    mstrWellCode = CStr(IIf(IsNull(rstK01.Fields("WellCode").Value), "", rstK01.Fields("WellCode").Value))
    mstrSerialNo = CStr(IIf(IsNull(rstK01.Fields("SerialNo").Value), "", Trim(rstK01.Fields("SerialNo").Value)))
    mstrRefrenceNo = CStr(IIf(IsNull(rstK01.Fields("RefrenceNo").Value), "", rstK01.Fields("RefrenceNo").Value))
    mstrFieldName = CStr(IIf(IsNull(rstK01.Fields("FieldName").Value), "", rstK01.Fields("FieldName").Value))
    mstrLongitude = CStr(IIf(IsNull(rstK01.Fields("Longitude").Value), "", rstK01.Fields("Longitude").Value))
    mstrLatitude = CStr(IIf(IsNull(rstK01.Fields("Latitude").Value), "", rstK01.Fields("Latitude").Value))
    mstrCountryName = CStr(IIf(IsNull(rstK01.Fields("CountryName").Value), "", rstK01.Fields("CountryName").Value))
    mstrState = CStr(IIf(IsNull(rstK01.Fields("State").Value), "", rstK01.Fields("State").Value))
    mstrCompanyCode = CStr(IIf(IsNull(rstK01.Fields("CompanyCode").Value), "", rstK01.Fields("CompanyCode").Value))
    mstrLogCode = CStr(IIf(IsNull(rstK01.Fields("LogCode").Value), "", rstK01.Fields("LogCode").Value))
    mstrKB = CStr(IIf(IsNull(rstK01.Fields("KB").Value), "", Trim(rstK01.Fields("KB").Value)))
    mstrGL = CStr(IIf(IsNull(rstK01.Fields("GL").Value), "", Trim(rstK01.Fields("GL").Value)))
    mstrDF = CStr(IIf(IsNull(rstK01.Fields("DF").Value), "", Trim(rstK01.Fields("DF").Value)))
    mstrPermanentDatum = CStr(IIf(IsNull(rstK01.Fields("PermanentDatum").Value), "", Trim(rstK01.Fields("PermanentDatum").Value)))
    mstrLogMeasuredFrom = CStr(IIf(IsNull(rstK01.Fields("LogMeasuredFrom").Value), "", Trim(rstK01.Fields("LogMeasuredFrom").Value)))
    mstrDrillingMeasuredFrom = CStr(IIf(IsNull(rstK01.Fields("DrillingMeasuredFrom").Value), "", Trim(rstK01.Fields("DrillingMeasuredFrom").Value)))
    mstrElev = CStr(IIf(IsNull(rstK01.Fields("Elev").Value), "", Trim(rstK01.Fields("Elev").Value)))
    mstrMaxWellDeviation = CStr(IIf(IsNull(rstK01.Fields("MaxWellDeviation").Value), "", Trim(rstK01.Fields("MaxWellDeviation").Value)))
    mstrLoggingDate = CStr(IIf(IsNull(rstK01.Fields("LoggingDate").Value), "", rstK01.Fields("LoggingDate").Value))
    mstrLoggingTime = CStr(IIf(IsNull(rstK01.Fields("LoggingTime").Value), "", rstK01.Fields("LoggingTime").Value))
    mstrRunNo = CStr(IIf(IsNull(rstK01.Fields("RunNo").Value), "", rstK01.Fields("RunNo").Value))
    mstrDepthDriller = CStr(IIf(IsNull(rstK01.Fields("DepthDriller").Value), "", rstK01.Fields("DepthDriller").Value))
    mstrDepthLogger = CStr(IIf(IsNull(rstK01.Fields("DepthLogger").Value), "", rstK01.Fields("DepthLogger").Value))
    mstrFromPoint = CStr(IIf(IsNull(rstK01.Fields("FromPoint").Value), "", rstK01.Fields("FromPoint").Value))
    mstrToPoint = CStr(IIf(IsNull(rstK01.Fields("ToPoint").Value), "", rstK01.Fields("ToPoint").Value))
    mstrCasingDrillerSize = CStr(IIf(IsNull(rstK01.Fields("CasingDrillerSize").Value), "", rstK01.Fields("CasingDrillerSize").Value))
    mstrCasingDrillerSizeCode = CStr(IIf(IsNull(rstK01.Fields("CasingCode").Value), "", rstK01.Fields("CasingCode").Value))
    mstrCasingShoeDrillingDepth = CStr(IIf(IsNull(rstK01.Fields("CasingShoeDrillingDepth").Value), "", rstK01.Fields("CasingShoeDrillingDepth").Value))
    mstrCasingLoggerDepth = CStr(IIf(IsNull(rstK01.Fields("CasingLoggerDepth").Value), "", rstK01.Fields("CasingLoggerDepth").Value))
    mstrMudTypeCode = CStr(IIf(IsNull(rstK01.Fields("MudCode").Value), "", rstK01.Fields("MudCode").Value))
    mstrDensity = CStr(IIf(IsNull(rstK01.Fields("Density").Value), "", rstK01.Fields("Density").Value))
    mstrViscosity = CStr(IIf(IsNull(rstK01.Fields("Viscosity").Value), "", Trim(rstK01.Fields("Viscosity").Value)))
    mstrFluidLoss = CStr(IIf(IsNull(rstK01.Fields("FluidLoss").Value), "", Trim(rstK01.Fields("FluidLoss").Value)))
    mstrAlkalinityPH = CStr(IIf(IsNull(rstK01.Fields("AlkalinityPH").Value), "", Trim(rstK01.Fields("AlkalinityPH").Value)))
    mstrSourceOfSample = CStr(IIf(IsNull(rstK01.Fields("SourceOfSample").Value), "", Trim(rstK01.Fields("SourceOfSample").Value)))
    mstrRM = CStr(IIf(IsNull(rstK01.Fields("RM").Value), "", Trim(rstK01.Fields("RM").Value)))
    mstrRMF = CStr(IIf(IsNull(rstK01.Fields("RMF").Value), "", Trim(rstK01.Fields("RMF").Value)))
    mstrRMC = CStr(IIf(IsNull(rstK01.Fields("RMC").Value), "", Trim(rstK01.Fields("RMC").Value)))
    mstrTRM = CStr(IIf(IsNull(rstK01.Fields("TRM").Value), "", Trim(rstK01.Fields("TRM").Value)))
    mstrTRMF = CStr(IIf(IsNull(rstK01.Fields("TRMF").Value), "", Trim(rstK01.Fields("TRMF").Value)))
    mstrTRMC = CStr(IIf(IsNull(rstK01.Fields("TRMC").Value), "", Trim(rstK01.Fields("TRMC").Value)))
    mstrSourceRMF = CStr(IIf(IsNull(rstK01.Fields("SourceRMF").Value), "", Trim(rstK01.Fields("SourceRMF").Value)))
    mstrSourceRMC = CStr(IIf(IsNull(rstK01.Fields("SourceRMC").Value), "", Trim(rstK01.Fields("SourceRMC").Value)))
    mstrRMAtMRT = CStr(IIf(IsNull(rstK01.Fields("RMAtMRT").Value), "", Trim(rstK01.Fields("RMAtMRT").Value)))
    mstrRMFAtMRT = CStr(IIf(IsNull(rstK01.Fields("RMFAtMRT").Value), "", Trim(rstK01.Fields("RMFAtMRT").Value)))
    mstrMaxRecordedTemp = CStr(IIf(IsNull(rstK01.Fields("MaxRecordedTemp").Value), "", Trim(rstK01.Fields("MaxRecordedTemp").Value)))
    mstrCirculationStoppedDate = CStr(IIf(IsNull(rstK01.Fields("CirculationStoppedDate").Value), "", rstK01.Fields("CirculationStoppedDate").Value))
    mstrCirculationStoppedTime = CStr(IIf(IsNull(rstK01.Fields("CirculationStoppedTime").Value), "", rstK01.Fields("CirculationStoppedTime").Value))
    mstrLoggerOnButtomDate = CStr(IIf(IsNull(rstK01.Fields("LoggerOnButtomDate").Value), "", rstK01.Fields("LoggerOnButtomDate").Value))
    mstrLoggerOnButtomTime = CStr(IIf(IsNull(rstK01.Fields("LoggerOnButtomTime").Value), "", rstK01.Fields("LoggerOnButtomTime").Value))
    mstrUnitNo = CStr(IIf(IsNull(rstK01.Fields("UnitNo").Value), "", rstK01.Fields("UnitNo").Value))
    mstrContractorLocation = CStr(IIf(IsNull(rstK01.Fields("ContractorLocation").Value), "", Trim(rstK01.Fields("ContractorLocation").Value)))
    mstrRecoredBy = CStr(IIf(IsNull(rstK01.Fields("RecoredBy").Value), "", Trim(rstK01.Fields("RecoredBy").Value)))
    mstrWithnessedBy = CStr(IIf(IsNull(rstK01.Fields("WithnessedBy").Value), "", Trim(rstK01.Fields("WithnessedBy").Value)))
    mstrOtherServices1 = CStr(IIf(IsNull(rstK01.Fields("OtherServices1").Value), "", Trim(rstK01.Fields("OtherServices1").Value)))
    mstrOtherServices2 = CStr(IIf(IsNull(rstK01.Fields("OtherServices2").Value), "", Trim(rstK01.Fields("OtherServices2").Value)))
    mstrOtherServices3 = CStr(IIf(IsNull(rstK01.Fields("OtherServices3").Value), "", Trim(rstK01.Fields("OtherServices3").Value)))
    mstrOtherServices4 = CStr(IIf(IsNull(rstK01.Fields("OtherServices4").Value), "", Trim(rstK01.Fields("OtherServices4").Value)))
    mstrOtherServices5 = CStr(IIf(IsNull(rstK01.Fields("OtherServices5").Value), "", Trim(rstK01.Fields("OtherServices5").Value)))
    mstrOtherServices6 = CStr(IIf(IsNull(rstK01.Fields("OtherServices6").Value), "", Trim(rstK01.Fields("OtherServices6").Value)))
    mstrOtherServices7 = CStr(IIf(IsNull(rstK01.Fields("OtherServices7").Value), "", Trim(rstK01.Fields("OtherServices7").Value)))
    mstrSalinity = CStr(IIf(IsNull(rstK01.Fields("Salinity").Value), "", Trim(rstK01.Fields("Salinity").Value)))
    mstrCalcium = CStr(IIf(IsNull(rstK01.Fields("Calcium").Value), "", Trim(rstK01.Fields("Calcium").Value)))
    mstrOilWater = CStr(IIf(IsNull(rstK01.Fields("OilWater").Value), "", Trim(rstK01.Fields("OilWater").Value)))
    mstrSolid = CStr(IIf(IsNull(rstK01.Fields("Solid").Value), "", Trim(rstK01.Fields("Solid").Value)))
    mstrBarite = CStr(IIf(IsNull(rstK01.Fields("Barite").Value), "", Trim(rstK01.Fields("Barite").Value)))
    mstrExistPrint = CStr(IIf(IsNull(rstK01.Fields("ExistPrint").Value), "", rstK01.Fields("ExistPrint").Value))
    mstrExistFilm = CStr(IIf(IsNull(rstK01.Fields("ExistFilm").Value), "", rstK01.Fields("ExistFilm").Value))
    mstrFilmNo = CStr(IIf(IsNull(rstK01.Fields("FilmNo").Value), "", rstK01.Fields("FilmNo").Value))
    mstrExistTape = CStr(IIf(IsNull(rstK01.Fields("ExistTape").Value), "", rstK01.Fields("ExistTape").Value))
    mstrTapeTypeCode = CStr(IIf(IsNull(rstK01.Fields("TapeTypeCode").Value), "", rstK01.Fields("TapeTypeCode").Value))
    mstrTapeNo = CStr(IIf(IsNull(rstK01.Fields("TapeNo").Value), "", rstK01.Fields("TapeNo").Value))
    mstrExistCD = CStr(IIf(IsNull(rstK01.Fields("ExistCD").Value), "", rstK01.Fields("ExistCD").Value))
    mstrCDNo = CStr(IIf(IsNull(rstK01.Fields("CDNo").Value), "", rstK01.Fields("CDNo").Value))
    mstrOpenOrCaseHoleCode = CStr(IIf(IsNull(rstK01.Fields("DrillTestCode").Value), "", rstK01.Fields("DrillTestCode").Value))
    mstrToolsSerialNo1 = CStr(IIf(IsNull(rstK01.Fields("ToolsSerialNo1").Value), "", Trim(rstK01.Fields("ToolsSerialNo1").Value)))
    mstrToolsSerialNo2 = CStr(IIf(IsNull(rstK01.Fields("ToolsSerialNo2").Value), "", Trim(rstK01.Fields("ToolsSerialNo2").Value)))
    mstrToolsSerialNo3 = CStr(IIf(IsNull(rstK01.Fields("ToolsSerialNo3").Value), "", Trim(rstK01.Fields("ToolsSerialNo3").Value)))
    mstrToolsSerialNo4 = CStr(IIf(IsNull(rstK01.Fields("ToolsSerialNo4").Value), "", Trim(rstK01.Fields("ToolsSerialNo4").Value)))
    mstrToolsSerialNo5 = CStr(IIf(IsNull(rstK01.Fields("ToolsSerialNo5").Value), "", Trim(rstK01.Fields("ToolsSerialNo5").Value)))
    mstrToolsSerialNo6 = CStr(IIf(IsNull(rstK01.Fields("ToolsSerialNo6").Value), "", Trim(rstK01.Fields("ToolsSerialNo6").Value)))
    mstrToolsTypeCode = CStr(IIf(IsNull(rstK01.Fields("ToolsTypeCode").Value), "", rstK01.Fields("ToolsTypeCode").Value))
    mstrToolScatch = CStr(IIf(IsNull(rstK01.Fields("ToolScatch").Value), "", rstK01.Fields("ToolScatch").Value))
    mstrRemarks = CStr(IIf(IsNull(rstK01.Fields("Remarks").Value), "", Trim(rstK01.Fields("Remarks").Value)))
    End If
    Exit Sub
    errhandle:
    RaiseEvent ClassError("UpdateData", Err)
    End Sub

    Public Function Insert() As Boolean
    On Error GoTo errhandle
    Dim PrmWellCode As ADODB.Parameter
    Dim PrmSerialNo As ADODB.Parameter
    Dim PrmRefrenceNo As ADODB.Parameter
    Dim PrmFieldName As ADODB.Parameter
    Dim PrmLongitude As ADODB.Parameter
    Dim PrmLatitude As ADODB.Parameter
    Dim PrmCountryName As ADODB.Parameter
    Dim PrmState As ADODB.Parameter
    Dim PrmCompanyCode As ADODB.Parameter
    Dim PrmLogCode As ADODB.Parameter
    Dim PrmKB As ADODB.Parameter
    Dim PrmGL As ADODB.Parameter
    Dim PrmDF As ADODB.Parameter
    Dim PrmPermanentDatum As ADODB.Parameter
    Dim PrmLogMeasuredFrom As ADODB.Parameter
    Dim PrmDrillingMeasuredFrom As ADODB.Parameter
    Dim PrmElev As ADODB.Parameter
    Dim PrmMaxWellDeviation As ADODB.Parameter
    Dim PrmLoggingDate As ADODB.Parameter
    Dim PrmLoggingTime As ADODB.Parameter
    Dim PrmRunNo As ADODB.Parameter
    Dim PrmDepthDriller As ADODB.Parameter
    Dim PrmDepthLogger As ADODB.Parameter
    Dim PrmFromPoint As ADODB.Parameter
    Dim PrmToPoint As ADODB.Parameter
    Dim PrmCasingDrillerSize As ADODB.Parameter
    Dim PrmCasingDrillerSizeCode As ADODB.Parameter
    Dim PrmCasingShoeDrillingDepth As ADODB.Parameter
    Dim PrmCasingLoggerDepth As ADODB.Parameter
    Dim PrmMudTypeCode As ADODB.Parameter
    Dim PrmDensity As ADODB.Parameter
    Dim PrmViscosity As ADODB.Parameter
    Dim PrmFluidLoss As ADODB.Parameter
    Dim PrmAlkalinityPH As ADODB.Parameter
    Dim PrmSourceOfSample As ADODB.Parameter
    Dim PrmRM As ADODB.Parameter
    Dim PrmRMF As ADODB.Parameter
    Dim PrmRMC As ADODB.Parameter
    Dim PrmTRM As ADODB.Parameter
    Dim PrmTRMF As ADODB.Parameter
    Dim PrmTRMC As ADODB.Parameter
    Dim PrmSourceRMF As ADODB.Parameter
    Dim PrmSourceRMC As ADODB.Parameter
    Dim PrmRMAtMRT As ADODB.Parameter
    Dim PrmRMFAtMRT As ADODB.Parameter
    Dim PrmMaxRecordedTemp As ADODB.Parameter
    Dim PrmCirculationStoppedDate As ADODB.Parameter
    Dim PrmCirculationStoppedTime As ADODB.Parameter
    Dim PrmLoggerOnButtomDate As ADODB.Parameter
    Dim PrmLoggerOnButtomTime As ADODB.Parameter
    Dim PrmUnitNo As ADODB.Parameter
    Dim PrmContractorLocation As ADODB.Parameter
    Dim PrmRecoredBy As ADODB.Parameter
    Dim PrmWithnessedBy As ADODB.Parameter
    Dim PrmOtherServices1 As ADODB.Parameter
    Dim PrmOtherServices2 As ADODB.Parameter
    Dim PrmOtherServices3 As ADODB.Parameter
    Dim PrmOtherServices4 As ADODB.Parameter
    Dim PrmOtherServices5 As ADODB.Parameter
    Dim PrmOtherServices6 As ADODB.Parameter
    Dim PrmOtherServices7 As ADODB.Parameter
    Dim PrmSalinity As ADODB.Parameter
    Dim PrmCalcium As ADODB.Parameter
    Dim PrmOilWater As ADODB.Parameter
    Dim PrmSolid As ADODB.Parameter
    Dim PrmBarite As ADODB.Parameter
    Dim PrmExistPrint As ADODB.Parameter
    Dim PrmExistFilm As ADODB.Parameter
    Dim PrmFilmNo As ADODB.Parameter
    Dim PrmExistTape As ADODB.Parameter
    Dim PrmTapeTypeCode As ADODB.Parameter
    Dim PrmTapeNo As ADODB.Parameter
    Dim PrmExistCD As ADODB.Parameter
    Dim PrmCDNo As ADODB.Parameter
    Dim PrmOpenOrCaseHoleCode As ADODB.Parameter
    Dim PrmToolsSerialNo1 As ADODB.Parameter
    Dim PrmToolsSerialNo2 As ADODB.Parameter
    Dim PrmToolsSerialNo3 As ADODB.Parameter
    Dim PrmToolsSerialNo4 As ADODB.Parameter
    Dim PrmToolsSerialNo5 As ADODB.Parameter
    Dim PrmToolsSerialNo6 As ADODB.Parameter
    Dim PrmToolsTypeCode As ADODB.Parameter
    Dim PrmToolScatch As ADODB.Parameter
    Dim PrmRemarks As ADODB.Parameter
    Dim cmdrstK01 As ADODB.Command
    Insert = False
    ' Open command object with one parameter.
    Set cmdrstK01 = New ADODB.Command
    'Procedure name for inserting
    cmdrstK01.CommandText = "Insert_K01"
    cmdrstK01.CommandType = adCmdStoredProc
    mclsDatabase.OpenDB
    Set cmdrstK01.ActiveConnection = mclsDatabase.GetDatabase()

    If mstrWellCode <> "" And mstrSerialNo <> "" And mstrLogCode <> "" And mstrLoggingDate <> "" And mstrLoggingTime <> "" And mstrFromPoint <> "" And mstrToPoint <> "" And mstrExistCD <> "" And mstrExistFilm <> "" And mstrExistPrint <> "" And mstrExistTape <> "" Then
    With cmdrstK01
    Set PrmWellCode = .CreateParameter("@WellCode_1", adWChar, adParamInput, 50, Trim(mstrWellCode))
    .Parameters.Append PrmWellCode

    Set PrmSerialNo = .CreateParameter("@SerialNo_2", adInteger, adParamInput, 2, Trim(mstrSerialNo))
    .Parameters.Append PrmSerialNo

    Set PrmRefrenceNo = .CreateParameter("@RefrenceNo_3", adWChar, adParamInput, 50, Trim(mstrRefrenceNo))
    .Parameters.Append PrmRefrenceNo

    Set PrmFieldName = .CreateParameter("@FieldName_4", adWChar, adParamInput, 255, Trim(mstrFieldName))
    .Parameters.Append PrmFieldName

    Set PrmLongitude = .CreateParameter("@Longitude_5", adWChar, adParamInput, 50, Trim(mstrLongitude))
    .Parameters.Append PrmLongitude

    Set PrmLatitude = .CreateParameter("@Latitude_6", adWChar, adParamInput, 50, Trim(mstrLatitude))
    .Parameters.Append PrmLatitude

    Set PrmCountryName = .CreateParameter("@CountryName_7", adWChar, adParamInput, 255, Trim(mstrCountryName))
    .Parameters.Append PrmCountryName

    Set PrmState = .CreateParameter("@State_8", adWChar, adParamInput, 255, Trim(mstrState))
    .Parameters.Append PrmState


    Set PrmCompanyCode = .CreateParameter("@CompanyCode_9", adChar, adParamInput, 3, Trim(mstrCompanyCode))
    .Parameters.Append PrmCompanyCode

    Set PrmLogCode = .CreateParameter("@LogCode_10", adChar, adParamInput, 5, Trim(mstrLogCode))
    .Parameters.Append PrmLogCode

    Set PrmKB = .CreateParameter("@KB_11", adWChar, adParamInput, 50, Trim(mstrKB))
    .Parameters.Append PrmKB

    Set PrmGL = .CreateParameter("@GL_12", adWChar, adParamInput, 50, Trim(mstrGL))
    .Parameters.Append PrmGL

    Set PrmDF = .CreateParameter("@DF_13", adWChar, adParamInput, 50, Trim(mstrDF))
    .Parameters.Append PrmDF

    Set PrmPermanentDatum = .CreateParameter("@PermanentDatum_14", adChar, adParamInput, 50, Trim(mstrPermanentDatum))
    .Parameters.Append PrmPermanentDatum

    Set PrmLogMeasuredFrom = .CreateParameter("@LogMeasuredFrom_15", adChar, adParamInput, 50, Trim(mstrLogMeasuredFrom))
    .Parameters.Append PrmLogMeasuredFrom

    Set PrmDrillingMeasuredFrom = .CreateParameter("@DrillingMeasuredFrom_16", adChar, adParamInput, 50, Trim(mstrDrillingMeasuredFrom))
    .Parameters.Append PrmDrillingMeasuredFrom

    Set PrmElev = .CreateParameter("@Elev_17", adWChar, adParamInput, 50, Trim(mstrElev))
    .Parameters.Append PrmElev

    Set PrmMaxWellDeviation = .CreateParameter("@MaxWellDeviation_18", adWChar, adParamInput, 50, Trim(mstrMaxWellDeviation))
    .Parameters.Append PrmMaxWellDeviation

    Set PrmLoggingDate = .CreateParameter("@LoggingDate_19", adChar, adParamInput, 10, Trim(mstrLoggingDate))
    .Parameters.Append PrmLoggingDate

    Set PrmLoggingTime = .CreateParameter("@LoggingTime_20", adChar, adParamInput, 5, Trim(mstrLoggingTime))
    .Parameters.Append PrmLoggingTime

    Set PrmRunNo = .CreateParameter("@RunNo_21", adWChar, adParamInput, 50, Trim(mstrRunNo))
    .Parameters.Append PrmRunNo

    Set PrmDepthDriller = .CreateParameter("@DepthDriller_22", adWChar, adParamInput, 50, Trim(mstrDepthDriller))
    .Parameters.Append PrmDepthDriller

    Set PrmDepthLogger = .CreateParameter("@DepthLogger_23", adWChar, adParamInput, 50, Trim(mstrDepthLogger))
    .Parameters.Append PrmDepthLogger

    Set PrmFromPoint = .CreateParameter("@FromPoint_24", adWChar, adParamInput, 50, Trim(mstrFromPoint))
    .Parameters.Append PrmFromPoint

    Set PrmToPoint = .CreateParameter("@ToPoint_25", adWChar, adParamInput, 50, Trim(mstrToPoint))
    .Parameters.Append PrmToPoint

    Set PrmCasingDrillerSize = .CreateParameter("@CasingDrillerSize_26", adWChar, adParamInput, 50, Trim(mstrCasingDrillerSize))
    .Parameters.Append PrmCasingDrillerSize

    Set PrmCasingDrillerSizeCode = .CreateParameter("@CasingDrillerSizeCode_27", adChar, adParamInput, 3, Trim(mstrCasingDrillerSizeCode))
    .Parameters.Append PrmCasingDrillerSizeCode

    Set PrmCasingShoeDrillingDepth = .CreateParameter("@CasingShoeDrillingDepth_28", adWChar, adParamInput, 50, Trim(mstrCasingShoeDrillingDepth))
    .Parameters.Append PrmCasingShoeDrillingDepth

    Set PrmCasingLoggerDepth = .CreateParameter("@CasingLoggerDepth_29", adWChar, adParamInput, 50, Trim(mstrCasingLoggerDepth))
    .Parameters.Append PrmCasingLoggerDepth

    Set PrmMudTypeCode = .CreateParameter("@MudTypeCode_30", adChar, adParamInput, 3, Trim(mstrMudTypeCode))
    .Parameters.Append PrmMudTypeCode

    Set PrmDensity = .CreateParameter("@Density_31", adWChar, adParamInput, 50, Trim(mstrDensity))
    .Parameters.Append PrmDensity

    Set PrmViscosity = .CreateParameter("@Viscosity_32", adWChar, adParamInput, 50, Trim(mstrViscosity))
    .Parameters.Append PrmViscosity

    Set PrmFluidLoss = .CreateParameter("@FluidLoss_33", adWChar, adParamInput, 50, Trim(mstrFluidLoss))
    .Parameters.Append PrmFluidLoss

    Set PrmAlkalinityPH = .CreateParameter("@AlkalinityPH_34", adWChar, adParamInput, 50, Trim(mstrAlkalinityPH))
    .Parameters.Append PrmAlkalinityPH

    Set PrmSourceOfSample = .CreateParameter("@SourceOfSample_35", adWChar, adParamInput, 50, Trim(mstrSourceOfSample))
    .Parameters.Append PrmSourceOfSample

    Set PrmRM = .CreateParameter("@RM_36", adWChar, adParamInput, 50, Trim(mstrRM))
    .Parameters.Append PrmRM

    Set PrmRMF = .CreateParameter("@RMF_37", adWChar, adParamInput, 50, Trim(mstrRMF))
    .Parameters.Append PrmRMF

    Set PrmRMC = .CreateParameter("@RMC_38", adWChar, adParamInput, 50, Trim(mstrRMC))
    .Parameters.Append PrmRMC

    Set PrmTRM = .CreateParameter("@TRM_39", adWChar, adParamInput, 50, Trim(mstrTRM))
    .Parameters.Append PrmTRM

    Set PrmTRMF = .CreateParameter("@TRMF_40", adWChar, adParamInput, 50, Trim(mstrTRMF))
    .Parameters.Append PrmTRMF

    Set PrmTRMC = .CreateParameter("@TRMC_41", adWChar, adParamInput, 50, Trim(mstrTRMC))
    .Parameters.Append PrmTRMC

    Set PrmSourceRMF = .CreateParameter("@SourceRMF_42", adWChar, adParamInput, 50, Trim(mstrSourceRMF))
    .Parameters.Append PrmSourceRMF

    Set PrmSourceRMC = .CreateParameter("@SourceRMC_43", adWChar, adParamInput, 50, Trim(mstrSourceRMC))
    .Parameters.Append PrmSourceRMC

    Set PrmRMAtMRT = .CreateParameter("@RMAtMRT_44", adChar, adParamInput, 20, Trim(mstrRMAtMRT))
    .Parameters.Append PrmRMAtMRT

    Set PrmRMFAtMRT = .CreateParameter("@RMFAtMRT_45", adChar, adParamInput, 20, Trim(mstrRMFAtMRT))
    .Parameters.Append PrmRMFAtMRT

    Set PrmMaxRecordedTemp = .CreateParameter("@MaxRecordedTemp_46", adWChar, adParamInput, 50, Trim(mstrMaxRecordedTemp))
    .Parameters.Append PrmMaxRecordedTemp

    Set PrmCirculationStoppedDate = .CreateParameter("@CirculationStoppedDate_47", adChar, adParamInput, 10, Trim(mstrCirculationStoppedDate))
    .Parameters.Append PrmCirculationStoppedDate

    Set PrmCirculationStoppedTime = .CreateParameter("@CirculationStoppedTime_48", adChar, adParamInput, 5, Trim(mstrCirculationStoppedTime))
    .Parameters.Append PrmCirculationStoppedTime

    Set PrmLoggerOnButtomDate = .CreateParameter("@LoggerOnButtomDate_49", adChar, adParamInput, 10, Trim(mstrLoggerOnButtomDate))
    .Parameters.Append PrmLoggerOnButtomDate

    Set PrmLoggerOnButtomTime = .CreateParameter("@LoggerOnButtomTime_50", adChar, adParamInput, 5, Trim(mstrLoggerOnButtomTime))
    .Parameters.Append PrmLoggerOnButtomTime

    Set PrmUnitNo = .CreateParameter("@UnitNo_51", adChar, adParamInput, 10, Trim(mstrUnitNo))
    .Parameters.Append PrmUnitNo

    Set PrmContractorLocation = .CreateParameter("@ContractorLocation_52", adWChar, adParamInput, 50, Trim(mstrContractorLocation))
    .Parameters.Append PrmContractorLocation

    Set PrmRecoredBy = .CreateParameter("@RecoredBy_53", adChar, adParamInput, 50, Trim(mstrRecoredBy))
    .Parameters.Append PrmRecoredBy

    Set PrmWithnessedBy = .CreateParameter("@WithnessedBy_54", adChar, adParamInput, 50, Trim(mstrWithnessedBy))
    .Parameters.Append PrmWithnessedBy

    Set PrmOtherServices1 = .CreateParameter("@OtherServices1_55", adChar, adParamInput, 100, Trim(mstrOtherServices1))
    .Parameters.Append PrmOtherServices1

    Set PrmOtherServices2 = .CreateParameter("@OtherServices2_56", adChar, adParamInput, 100, Trim(mstrOtherServices2))
    .Parameters.Append PrmOtherServices2

    Set PrmOtherServices3 = .CreateParameter("@OtherServices3_57", adChar, adParamInput, 100, Trim(mstrOtherServices3))
    .Parameters.Append PrmOtherServices3

    Set PrmOtherServices4 = .CreateParameter("@OtherServices4_58", adChar, adParamInput, 100, Trim(mstrOtherServices4))
    .Parameters.Append PrmOtherServices4

    Set PrmOtherServices5 = .CreateParameter("@OtherServices5_59", adChar, adParamInput, 100, Trim(mstrOtherServices5))
    .Parameters.Append PrmOtherServices5

    Set PrmOtherServices6 = .CreateParameter("@ OtherServices6_60", adChar, adParamInput, 100, Trim(mstrOtherServices6))
    .Parameters.Append PrmOtherServices6

    Set PrmOtherServices7 = .CreateParameter("@OtherServices7_61", adChar, adParamInput, 100, Trim(mstrOtherServices7))
    .Parameters.Append PrmOtherServices7

    Set PrmSalinity = .CreateParameter("@Salinity_62", adWChar, adParamInput, 50, Trim(mstrSalinity))
    .Parameters.Append PrmSalinity

    Set PrmCalcium = .CreateParameter("@Calcium_63", adWChar, adParamInput, 50, Trim(mstrCalcium))
    .Parameters.Append PrmCalcium

    Set PrmOilWater = .CreateParameter("@OilWater_64", adChar, adParamInput, 20, Trim(mstrOilWater))
    .Parameters.Append PrmOilWater

    Set PrmSolid = .CreateParameter("@Solid_65", adWChar, adParamInput, 50, Trim(mstrSolid))
    .Parameters.Append PrmSolid

    Set PrmBarite = .CreateParameter("@Barite_66", adWChar, adParamInput, 50, Trim(mstrBarite))
    .Parameters.Append PrmBarite

    Set PrmExistPrint = .CreateParameter("@ExistPrint_67", adChar, adParamInput, 1, Trim(mstrExistPrint))
    .Parameters.Append PrmExistPrint

    Set PrmExistFilm = .CreateParameter("@ExistFilm_68", adChar, adParamInput, 1, Trim(mstrExistFilm))
    .Parameters.Append PrmExistFilm

    Set PrmFilmNo = .CreateParameter("@FilmNo_69", adChar, adParamInput, 50, Trim(mstrFilmNo))
    .Parameters.Append PrmFilmNo

    Set PrmExistTape = .CreateParameter("@ExistTape_70", adChar, adParamInput, 1, Trim(mstrExistTape))
    .Parameters.Append PrmExistTape

    Set PrmTapeTypeCode = .CreateParameter("@TapeTypeCode_71", adChar, adParamInput, 2, Trim(mstrTapeTypeCode))
    .Parameters.Append PrmTapeTypeCode

    Set PrmTapeNo = .CreateParameter("@TapeNo_72", adChar, adParamInput, 10, Trim(mstrTapeNo))
    .Parameters.Append PrmTapeNo

    Set PrmExistCD = .CreateParameter("@ExistCD_73", adChar, adParamInput, 1, Trim(mstrExistCD))
    .Parameters.Append PrmExistCD

    Set PrmCDNo = .CreateParameter("@CDNo_74", adChar, adParamInput, 10, Trim(mstrCDNo))
    .Parameters.Append PrmCDNo

    Set PrmOpenOrCaseHoleCode = .CreateParameter("@OpenOrCaseHoleCode_75", adChar, adParamInput, 1, Trim(mstrOpenOrCaseHoleCode))
    .Parameters.Append PrmOpenOrCaseHoleCode

    Set PrmToolsSerialNo1 = .CreateParameter("@ToolsSerialNo1_76", adChar, adParamInput, 10, Trim(mstrToolsSerialNo1))
    .Parameters.Append PrmToolsSerialNo1

    Set PrmToolsSerialNo2 = .CreateParameter("@ToolsSerialNo2_77", adChar, adParamInput, 10, Trim(mstrToolsSerialNo2))
    .Parameters.Append PrmToolsSerialNo2

    Set PrmToolsSerialNo3 = .CreateParameter("@ToolsSerialNo3_78", adChar, adParamInput, 10, Trim(mstrToolsSerialNo3))
    .Parameters.Append PrmToolsSerialNo3

    Set PrmToolsSerialNo4 = .CreateParameter("@ToolsSerialNo4_79", adChar, adParamInput, 10, Trim(mstrToolsSerialNo4))
    .Parameters.Append PrmToolsSerialNo4

    Set PrmToolsSerialNo5 = .CreateParameter("@ToolsSerialNo5_80", adChar, adParamInput, 10, Trim(mstrToolsSerialNo5))
    .Parameters.Append PrmToolsSerialNo5

    Set PrmToolsSerialNo6 = .CreateParameter("@ToolsSerialNo6_81", adChar, adParamInput, 10, Trim(mstrToolsSerialNo6))
    .Parameters.Append PrmToolsSerialNo6

    Set PrmToolsTypeCode = .CreateParameter("@ToolsTypeCode_82", adChar, adParamInput, 2, Trim(mstrToolsTypeCode))
    .Parameters.Append PrmToolsTypeCode

    Set PrmToolScatch = .CreateParameter("@ToolScatch_83", adWChar, adParamInput, 100, Trim(mstrToolScatch))
    .Parameters.Append PrmToolScatch

    Set PrmRemarks = .CreateParameter("@Remarks_84", adWChar, adParamInput, 2000, Trim(mstrRemarks))
    .Parameters.Append PrmRemarks

    .Execute Options:=adExecuteNoRecords
    mclsDatabase.CloseDB
    ' cmdrstK01.Execute , Array( _
    ' mstrWellCode, mstrSerialNo, mstrRefrenceNo, _
    ' mstrCompanyCode, mstrLogCode, mstrKB, _
    ' mstrGL, mstrDF, mstrPermanentDatum, _
    ' mstrLogMeasuredFrom, mstrDrillingMeasuredFrom, mstrElev, _
    ' mstrMaxWellDeviation, mstrLoggingDate, mstrLoggingTime, _
    ' mstrRunNo, mstrDepthDriller, mstrDepthLogger, _
    ' mstrFromPoint, mstrToPoint, mstrCasingDrillerSize, _
    ' mstrCasingDrillerSizeCode, mstrCasingShoeDrillingDepth, mstrCasingLoggerDepth, _
    ' mstrMudTypeCode, mstrDensity, mstrViscosity, _
    ' mstrFluidLoss, mstrAlkalinityPH, mstrSourceOfSample, _
    ' mstrRM, mstrRMF, mstrRMC, _
    ' mstrTRM, mstrTRMF, mstrTRMC, mstrSourceRMF, mstrSourceRMC, _
    ' mstrRMAtMRT, mstrRMFAtMRT, mstrMaxRecordedTemp, mstrCirculationStoppedDate, _
    ' mstrCirculationStoppedTime, mstrLoggerOnButtomDate, mstrLoggerOnButtomTime, _
    ' mstrUnitNo, mstrContractorLocation, mstrRecoredBy, mstrWithnessedBy, _
    ' mstrOtherServices1, mstrOtherServices2, mstrOtherServices3, _
    ' mstrOtherServices4, mstrOtherServices5, mstrOtherServices6, _
    ' mstrOtherServices7, mstrSalinity, mstrCalcium, mstrOilWater, _
    ' mstrSolid, mstrBarite, mstrExistPrint, mstrExistFilm, _
    ' mstrFilmNo, mstrExistTape, mstrTapeTypeCode, mstrTapeNo, _
    ' mstrExistCD, mstrCDNo, mstrOpenOrCaseHoleCode, mstrToolsSerialNo1, _
    ' mstrToolsSerialNo2, mstrToolsSerialNo3, mstrToolsSerialNo4, _
    ' mstrToolsSerialNo5, mstrToolsSerialNo6, mstrToolsTypeCode, _
    ' mstrToolScatch, mstrRemarks)
    End With
    Set PrmWellCode = Nothing
    Set PrmSerialNo = Nothing
    Set PrmRefrenceNo = Nothing
    Set PrmFieldName = Nothing
    Set PrmLongitude = Nothing
    Set PrmLatitude = Nothing
    Set PrmCountryName = Nothing
    Set PrmState = Nothing
    Set PrmCompanyCode = Nothing
    Set PrmLogCode = Nothing
    Set PrmKB = Nothing
    Set PrmGL = Nothing
    Set PrmDF = Nothing
    Set PrmPermanentDatum = Nothing
    Set PrmLogMeasuredFrom = Nothing
    Set PrmDrillingMeasuredFrom = Nothing
    Set PrmElev = Nothing
    Set PrmMaxWellDeviation = Nothing
    Set PrmLoggingDate = Nothing
    Set PrmLoggingTime = Nothing
    Set PrmRunNo = Nothing
    Set PrmDepthDriller = Nothing
    Set PrmDepthLogger = Nothing
    Set PrmFromPoint = Nothing
    Set PrmToPoint = Nothing
    Set PrmCasingDrillerSize = Nothing
    Set PrmCasingDrillerSizeCode = Nothing
    Set PrmCasingShoeDrillingDepth = Nothing
    Set PrmCasingLoggerDepth = Nothing
    Set PrmMudTypeCode = Nothing
    Set PrmDensity = Nothing
    Set PrmViscosity = Nothing
    Set PrmFluidLoss = Nothing
    Set PrmAlkalinityPH = Nothing
    Set PrmSourceOfSample = Nothing
    Set PrmRM = Nothing
    Set PrmRMF = Nothing
    Set PrmRMC = Nothing
    Set PrmTRM = Nothing
    Set PrmTRMF = Nothing
    Set PrmTRMC = Nothing
    Set PrmSourceRMF = Nothing
    Set PrmSourceRMC = Nothing
    Set PrmRMAtMRT = Nothing
    Set PrmRMFAtMRT = Nothing
    Set PrmMaxRecordedTemp = Nothing
    Set PrmCirculationStoppedDate = Nothing
    Set PrmCirculationStoppedTime = Nothing
    Set PrmLoggerOnButtomDate = Nothing
    Set PrmLoggerOnButtomTime = Nothing
    Set PrmUnitNo = Nothing
    Set PrmContractorLocation = Nothing
    Set PrmRecoredBy = Nothing
    Set PrmWithnessedBy = Nothing
    Set PrmOtherServices1 = Nothing
    Set PrmOtherServices2 = Nothing
    Set PrmOtherServices3 = Nothing
    Set PrmOtherServices4 = Nothing
    Set PrmOtherServices5 = Nothing
    Set PrmOtherServices6 = Nothing
    Set PrmOtherServices7 = Nothing
    Set PrmSalinity = Nothing
    Set PrmCalcium = Nothing
    Set PrmOilWater = Nothing
    Set PrmSolid = Nothing
    Set PrmBarite = Nothing
    Set PrmExistPrint = Nothing
    Set PrmExistFilm = Nothing
    Set PrmFilmNo = Nothing
    Set PrmExistTape = Nothing
    Set PrmTapeTypeCode = Nothing
    Set PrmTapeNo = Nothing
    Set PrmExistCD = Nothing
    Set PrmCDNo = Nothing
    Set PrmOpenOrCaseHoleCode = Nothing
    Set PrmToolsSerialNo1 = Nothing
    Set PrmToolsSerialNo2 = Nothing
    Set PrmToolsSerialNo3 = Nothing
    Set PrmToolsSerialNo4 = Nothing
    Set PrmToolsSerialNo5 = Nothing
    Set PrmToolsSerialNo6 = Nothing
    Set PrmToolsTypeCode = Nothing
    Set PrmToolScatch = Nothing
    Set PrmRemarks = Nothing
    Call InsertRefresh
    FindRecord _
    "WellCode= '" & mstrWellCode & "' & SerialNo = '" & mstrSerialNo & "' "
    Insert = True
    Set cmdrstK01 = Nothing
    Else
    MsgBox "Null Value is not accepted"
    End If
    Exit Function
    errhandle:
    Insert = False
    Set cmdrstK01 = Nothing
    RaiseEvent ClassError("Insert", Err)
    End Function

    Public Function Delete() As Boolean
    On Error GoTo errhandle
    Dim PrmWellCode As ADODB.Parameter
    Dim PrmSerialNo As ADODB.Parameter
    Dim cmdrstK01 As ADODB.Command
    Delete = False
    ' Open command object with one parameter.
    Set cmdrstK01 = New ADODB.Command
    'Procedure name for Deleting
    cmdrstK01.CommandText = "Delete_K01"
    cmdrstK01.CommandType = adCmdStoredProc
    mclsDatabase.OpenDB
    Set cmdrstK01.ActiveConnection = mclsDatabase.GetDatabase()
    With cmdrstK01
    Set PrmWellCode = .CreateParameter("@WellCode_1", adWChar, adParamInput, 50, Trim(mstrWellCode))
    .Parameters.Append PrmWellCode
    Set PrmSerialNo = .CreateParameter("@SerialNo_2", adInteger, adParamInput, 2, Trim(mstrSerialNo))
    .Parameters.Append PrmSerialNo
    .Execute Options:=adExecuteNoRecords
    End With
    ' cmdrstK01.Execute , Array(mstrWellCode, mstrSerialNo )
    mclsDatabase.CloseDB
    Set PrmWellCode = Nothing
    Set PrmSerialNo = Nothing
    Dim intPos As Integer
    intPos = RowIndex
    If GetCount() > 1 Then
    If IsFirstRecord = True Then
    intPos = 1
    Else
    intPos = intPos - 1
    End If
    End If
    Call Refresh
    If GetCount() > 1 Then
    RowIndex = intPos
    End If
    Delete = True
    Set cmdrstK01 = Nothing
    Exit Function
    errhandle:
    Delete = False
    Set cmdrstK01 = Nothing
    RaiseEvent ClassError("Delete", Err)
    End Function

    Public Function Update() As Boolean
    On Error GoTo errhandle
    Dim PrmWellCode As ADODB.Parameter
    Dim PrmSerialNo As ADODB.Parameter
    Dim PrmRefrenceNo As ADODB.Parameter
    Dim PrmFieldName As ADODB.Parameter
    Dim PrmLongitude As ADODB.Parameter
    Dim PrmLatitude As ADODB.Parameter
    Dim PrmCountryName As ADODB.Parameter
    Dim PrmState As ADODB.Parameter
    Dim PrmCompanyCode As ADODB.Parameter
    Dim PrmLogCode As ADODB.Parameter
    Dim PrmKB As ADODB.Parameter
    Dim PrmGL As ADODB.Parameter
    Dim PrmDF As ADODB.Parameter
    Dim PrmPermanentDatum As ADODB.Parameter
    Dim PrmLogMeasuredFrom As ADODB.Parameter
    Dim PrmDrillingMeasuredFrom As ADODB.Parameter
    Dim PrmElev As ADODB.Parameter
    Dim PrmMaxWellDeviation As ADODB.Parameter
    Dim PrmLoggingDate As ADODB.Parameter
    Dim PrmLoggingTime As ADODB.Parameter
    Dim PrmRunNo As ADODB.Parameter
    Dim PrmDepthDriller As ADODB.Parameter
    Dim PrmDepthLogger As ADODB.Parameter
    Dim PrmFromPoint As ADODB.Parameter
    Dim PrmToPoint As ADODB.Parameter
    Dim PrmCasingDrillerSize As ADODB.Parameter
    Dim PrmCasingDrillerSizeCode As ADODB.Parameter
    Dim PrmCasingShoeDrillingDepth As ADODB.Parameter
    Dim PrmCasingLoggerDepth As ADODB.Parameter
    Dim PrmMudTypeCode As ADODB.Parameter
    Dim PrmDensity As ADODB.Parameter
    Dim PrmViscosity As ADODB.Parameter
    Dim PrmFluidLoss As ADODB.Parameter
    Dim PrmAlkalinityPH As ADODB.Parameter
    Dim PrmSourceOfSample As ADODB.Parameter
    Dim PrmRM As ADODB.Parameter
    Dim PrmRMF As ADODB.Parameter
    Dim PrmRMC As ADODB.Parameter
    Dim PrmTRM As ADODB.Parameter
    Dim PrmTRMF As ADODB.Parameter
    Dim PrmTRMC As ADODB.Parameter
    Dim PrmSourceRMF As ADODB.Parameter
    Dim PrmSourceRMC As ADODB.Parameter
    Dim PrmRMAtMRT As ADODB.Parameter
    Dim PrmRMFAtMRT As ADODB.Parameter
    Dim PrmMaxRecordedTemp As ADODB.Parameter
    Dim PrmCirculationStoppedDate As ADODB.Parameter
    Dim PrmCirculationStoppedTime As ADODB.Parameter
    Dim PrmLoggerOnButtomDate As ADODB.Parameter
    Dim PrmLoggerOnButtomTime As ADODB.Parameter
    Dim PrmUnitNo As ADODB.Parameter
    Dim PrmContractorLocation As ADODB.Parameter
    Dim PrmRecoredBy As ADODB.Parameter
    Dim PrmWithnessedBy As ADODB.Parameter
    Dim PrmOtherServices1 As ADODB.Parameter
    Dim PrmOtherServices2 As ADODB.Parameter
    Dim PrmOtherServices3 As ADODB.Parameter
    Dim PrmOtherServices4 As ADODB.Parameter
    Dim PrmOtherServices5 As ADODB.Parameter
    Dim PrmOtherServices6 As ADODB.Parameter
    Dim PrmOtherServices7 As ADODB.Parameter
    Dim PrmSalinity As ADODB.Parameter
    Dim PrmCalcium As ADODB.Parameter
    Dim PrmOilWater As ADODB.Parameter
    Dim PrmSolid As ADODB.Parameter
    Dim PrmBarite As ADODB.Parameter
    Dim PrmExistPrint As ADODB.Parameter
    Dim PrmExistFilm As ADODB.Parameter
    Dim PrmFilmNo As ADODB.Parameter
    Dim PrmExistTape As ADODB.Parameter
    Dim PrmTapeTypeCode As ADODB.Parameter
    Dim PrmTapeNo As ADODB.Parameter
    Dim PrmExistCD As ADODB.Parameter
    Dim PrmCDNo As ADODB.Parameter
    Dim PrmOpenOrCaseHoleCode As ADODB.Parameter
    Dim PrmToolsSerialNo1 As ADODB.Parameter
    Dim PrmToolsSerialNo2 As ADODB.Parameter
    Dim PrmToolsSerialNo3 As ADODB.Parameter
    Dim PrmToolsSerialNo4 As ADODB.Parameter
    Dim PrmToolsSerialNo5 As ADODB.Parameter
    Dim PrmToolsSerialNo6 As ADODB.Parameter
    Dim PrmToolsTypeCode As ADODB.Parameter
    Dim PrmToolScatch As ADODB.Parameter
    Dim PrmRemarks As ADODB.Parameter
    Dim cmdrstK01 As ADODB.Command
    Update = False

    ' Open command object with one parameter.
    Set cmdrstK01 = New ADODB.Command

    'Procedure name for Updating
    cmdrstK01.CommandText = "Update_k01"
    cmdrstK01.CommandType = adCmdStoredProc
    mclsDatabase.OpenDB
    Set cmdrstK01.ActiveConnection = mclsDatabase.GetDatabase()
    If mstrWellCode <> "" And mstrSerialNo <> "" And mstrLogCode <> "" And mstrLoggingDate <> "" And mstrLoggingTime <> "" And mstrFromPoint <> "" And mstrToPoint <> "" And mstrExistCD <> "" And mstrExistFilm <> "" And mstrExistPrint <> "" And mstrExistTape <> "" Then
    With cmdrstK01
    Set PrmWellCode = .CreateParameter("@WellCode_1", adWChar, adParamInput, 50, Trim(mstrWellCode))
    .Parameters.Append PrmWellCode

    Set PrmSerialNo = .CreateParameter("@SerialNo_2", adInteger, adParamInput, 2, Trim(mstrSerialNo))
    .Parameters.Append PrmSerialNo

    Set PrmRefrenceNo = .CreateParameter("@RefrenceNo_3", adWChar, adParamInput, 50, Trim(mstrRefrenceNo))
    .Parameters.Append PrmRefrenceNo

    Set PrmFieldName = .CreateParameter("@FieldName_4", adWChar, adParamInput, 255, Trim(mstrFieldName))
    .Parameters.Append PrmFieldName

    Set PrmLongitude = .CreateParameter("@Longitude_5", adWChar, adParamInput, 50, Trim(mstrLongitude))
    .Parameters.Append PrmLongitude

    Set PrmLatitude = .CreateParameter("@Latitude_6", adWChar, adParamInput, 50, Trim(mstrLatitude))
    .Parameters.Append PrmLatitude

    Set PrmCountryName = .CreateParameter("@CountryName_7", adWChar, adParamInput, 255, Trim(mstrCountryName))
    .Parameters.Append PrmCountryName

    Set PrmState = .CreateParameter("@State_8", adWChar, adParamInput, 255, Trim(mstrState))
    .Parameters.Append PrmState


    Set PrmCompanyCode = .CreateParameter("@CompanyCode_9", adChar, adParamInput, 3, Trim(mstrCompanyCode))
    .Parameters.Append PrmCompanyCode

    Set PrmLogCode = .CreateParameter("@LogCode_10", adChar, adParamInput, 5, Trim(mstrLogCode))
    .Parameters.Append PrmLogCode

    Set PrmKB = .CreateParameter("@KB_11", adWChar, adParamInput, 50, Trim(mstrKB))
    .Parameters.Append PrmKB

    Set PrmGL = .CreateParameter("@GL_12", adWChar, adParamInput, 50, Trim(mstrGL))
    .Parameters.Append PrmGL

    Set PrmDF = .CreateParameter("@DF_13", adWChar, adParamInput, 50, Trim(mstrDF))
    .Parameters.Append PrmDF

    Set PrmPermanentDatum = .CreateParameter("@PermanentDatum_14", adChar, adParamInput, 50, Trim(mstrPermanentDatum))
    .Parameters.Append PrmPermanentDatum

    Set PrmLogMeasuredFrom = .CreateParameter("@LogMeasuredFrom_15", adChar, adParamInput, 50, Trim(mstrLogMeasuredFrom))
    .Parameters.Append PrmLogMeasuredFrom

    Set PrmDrillingMeasuredFrom = .CreateParameter("@DrillingMeasuredFrom_16", adChar, adParamInput, 50, Trim(mstrDrillingMeasuredFrom))
    .Parameters.Append PrmDrillingMeasuredFrom

    Set PrmElev = .CreateParameter("@Elev_17", adWChar, adParamInput, 50, Trim(mstrElev))
    .Parameters.Append PrmElev

    Set PrmMaxWellDeviation = .CreateParameter("@MaxWellDeviation_18", adWChar, adParamInput, 50, Trim(mstrMaxWellDeviation))
    .Parameters.Append PrmMaxWellDeviation

    Set PrmLoggingDate = .CreateParameter("@LoggingDate_19", adChar, adParamInput, 10, Trim(mstrLoggingDate))
    .Parameters.Append PrmLoggingDate

    Set PrmLoggingTime = .CreateParameter("@LoggingTime_20", adChar, adParamInput, 5, Trim(mstrLoggingTime))
    .Parameters.Append PrmLoggingTime

    Set PrmRunNo = .CreateParameter("@RunNo_21", adWChar, adParamInput, 50, Trim(mstrRunNo))
    .Parameters.Append PrmRunNo

    Set PrmDepthDriller = .CreateParameter("@DepthDriller_22", adWChar, adParamInput, 50, Trim(mstrDepthDriller))
    .Parameters.Append PrmDepthDriller

    Set PrmDepthLogger = .CreateParameter("@DepthLogger_23", adWChar, adParamInput, 50, Trim(mstrDepthLogger))
    .Parameters.Append PrmDepthLogger

    Set PrmFromPoint = .CreateParameter("@FromPoint_24", adWChar, adParamInput, 50, Trim(mstrFromPoint))
    .Parameters.Append PrmFromPoint

    Set PrmToPoint = .CreateParameter("@ToPoint_25", adWChar, adParamInput, 50, Trim(mstrToPoint))
    .Parameters.Append PrmToPoint

    Set PrmCasingDrillerSize = .CreateParameter("@CasingDrillerSize_26", adWChar, adParamInput, 50, Trim(mstrCasingDrillerSize))
    .Parameters.Append PrmCasingDrillerSize

    Set PrmCasingDrillerSizeCode = .CreateParameter("@CasingDrillerSizeCode_27", adChar, adParamInput, 3, Trim(mstrCasingDrillerSizeCode))
    .Parameters.Append PrmCasingDrillerSizeCode

    Set PrmCasingShoeDrillingDepth = .CreateParameter("@CasingShoeDrillingDepth_28", adWChar, adParamInput, 50, Trim(mstrCasingShoeDrillingDepth))
    .Parameters.Append PrmCasingShoeDrillingDepth

    Set PrmCasingLoggerDepth = .CreateParameter("@CasingLoggerDepth_29", adWChar, adParamInput, 50, Trim(mstrCasingLoggerDepth))
    .Parameters.Append PrmCasingLoggerDepth

    Set PrmMudTypeCode = .CreateParameter("@MudTypeCode_30", adChar, adParamInput, 3, Trim(mstrMudTypeCode))
    .Parameters.Append PrmMudTypeCode

    Set PrmDensity = .CreateParameter("@Density_31", adWChar, adParamInput, 50, Trim(mstrDensity))
    .Parameters.Append PrmDensity

    Set PrmViscosity = .CreateParameter("@Viscosity_32", adWChar, adParamInput, 50, Trim(mstrViscosity))
    .Parameters.Append PrmViscosity

    Set PrmFluidLoss = .CreateParameter("@FluidLoss_33", adWChar, adParamInput, 50, Trim(mstrFluidLoss))
    .Parameters.Append PrmFluidLoss

    Set PrmAlkalinityPH = .CreateParameter("@AlkalinityPH_34", adWChar, adParamInput, 50, Trim(mstrAlkalinityPH))
    .Parameters.Append PrmAlkalinityPH

    Set PrmSourceOfSample = .CreateParameter("@SourceOfSample_35", adWChar, adParamInput, 50, Trim(mstrSourceOfSample))
    .Parameters.Append PrmSourceOfSample

    Set PrmRM = .CreateParameter("@RM_36", adWChar, adParamInput, 50, Trim(mstrRM))
    .Parameters.Append PrmRM

    Set PrmRMF = .CreateParameter("@RMF_37", adWChar, adParamInput, 50, Trim(mstrRMF))
    .Parameters.Append PrmRMF

    Set PrmRMC = .CreateParameter("@RMC_38", adWChar, adParamInput, 50, Trim(mstrRMC))
    .Parameters.Append PrmRMC

    Set PrmTRM = .CreateParameter("@TRM_39", adWChar, adParamInput, 50, Trim(mstrTRM))
    .Parameters.Append PrmTRM

    Set PrmTRMF = .CreateParameter("@TRMF_40", adWChar, adParamInput, 50, Trim(mstrTRMF))
    .Parameters.Append PrmTRMF

    Set PrmTRMC = .CreateParameter("@TRMC_41", adWChar, adParamInput, 50, Trim(mstrTRMC))
    .Parameters.Append PrmTRMC

    Set PrmSourceRMF = .CreateParameter("@SourceRMF_42", adWChar, adParamInput, 50, Trim(mstrSourceRMF))
    .Parameters.Append PrmSourceRMF

    Set PrmSourceRMC = .CreateParameter("@SourceRMC_43", adWChar, adParamInput, 50, Trim(mstrSourceRMC))
    .Parameters.Append PrmSourceRMC

    Set PrmRMAtMRT = .CreateParameter("@RMAtMRT_44", adChar, adParamInput, 20, Trim(mstrRMAtMRT))
    .Parameters.Append PrmRMAtMRT

    Set PrmRMFAtMRT = .CreateParameter("@RMFAtMRT_45", adChar, adParamInput, 20, Trim(mstrRMFAtMRT))
    .Parameters.Append PrmRMFAtMRT

    Set PrmMaxRecordedTemp = .CreateParameter("@MaxRecordedTemp_46", adWChar, adParamInput, 50, Trim(mstrMaxRecordedTemp))
    .Parameters.Append PrmMaxRecordedTemp

    Set PrmCirculationStoppedDate = .CreateParameter("@CirculationStoppedDate_47", adChar, adParamInput, 10, Trim(mstrCirculationStoppedDate))
    .Parameters.Append PrmCirculationStoppedDate

    Set PrmCirculationStoppedTime = .CreateParameter("@CirculationStoppedTime_48", adChar, adParamInput, 5, Trim(mstrCirculationStoppedTime))
    .Parameters.Append PrmCirculationStoppedTime

    Set PrmLoggerOnButtomDate = .CreateParameter("@LoggerOnButtomDate_49", adChar, adParamInput, 10, Trim(mstrLoggerOnButtomDate))
    .Parameters.Append PrmLoggerOnButtomDate

    Set PrmLoggerOnButtomTime = .CreateParameter("@LoggerOnButtomTime_50", adChar, adParamInput, 5, Trim(mstrLoggerOnButtomTime))
    .Parameters.Append PrmLoggerOnButtomTime

    Set PrmUnitNo = .CreateParameter("@UnitNo_51", adChar, adParamInput, 10, Trim(mstrUnitNo))
    .Parameters.Append PrmUnitNo

    Set PrmContractorLocation = .CreateParameter("@ContractorLocation_52", adWChar, adParamInput, 50, Trim(mstrContractorLocation))
    .Parameters.Append PrmContractorLocation

    Set PrmRecoredBy = .CreateParameter("@RecoredBy_53", adChar, adParamInput, 50, Trim(mstrRecoredBy))
    .Parameters.Append PrmRecoredBy

    Set PrmWithnessedBy = .CreateParameter("@WithnessedBy_54", adChar, adParamInput, 50, Trim(mstrWithnessedBy))
    .Parameters.Append PrmWithnessedBy

    Set PrmOtherServices1 = .CreateParameter("@OtherServices1_55", adChar, adParamInput, 100, Trim(mstrOtherServices1))
    .Parameters.Append PrmOtherServices1

    Set PrmOtherServices2 = .CreateParameter("@OtherServices2_56", adChar, adParamInput, 100, Trim(mstrOtherServices2))
    .Parameters.Append PrmOtherServices2

    Set PrmOtherServices3 = .CreateParameter("@OtherServices3_57", adChar, adParamInput, 100, Trim(mstrOtherServices3))
    .Parameters.Append PrmOtherServices3

    Set PrmOtherServices4 = .CreateParameter("@OtherServices4_58", adChar, adParamInput, 100, Trim(mstrOtherServices4))
    .Parameters.Append PrmOtherServices4

    Set PrmOtherServices5 = .CreateParameter("@OtherServices5_59", adChar, adParamInput, 100, Trim(mstrOtherServices5))
    .Parameters.Append PrmOtherServices5

    Set PrmOtherServices6 = .CreateParameter("@ OtherServices6_60", adChar, adParamInput, 100, Trim(mstrOtherServices6))
    .Parameters.Append PrmOtherServices6

    Set PrmOtherServices7 = .CreateParameter("@OtherServices7_61", adChar, adParamInput, 100, Trim(mstrOtherServices7))
    .Parameters.Append PrmOtherServices7

    Set PrmSalinity = .CreateParameter("@Salinity_62", adWChar, adParamInput, 50, Trim(mstrSalinity))
    .Parameters.Append PrmSalinity

    Set PrmCalcium = .CreateParameter("@Calcium_63", adWChar, adParamInput, 50, Trim(mstrCalcium))
    .Parameters.Append PrmCalcium

    Set PrmOilWater = .CreateParameter("@OilWater_64", adChar, adParamInput, 20, Trim(mstrOilWater))
    .Parameters.Append PrmOilWater

    Set PrmSolid = .CreateParameter("@Solid_65", adWChar, adParamInput, 50, Trim(mstrSolid))
    .Parameters.Append PrmSolid

    Set PrmBarite = .CreateParameter("@Barite_66", adWChar, adParamInput, 50, Trim(mstrBarite))
    .Parameters.Append PrmBarite

    Set PrmExistPrint = .CreateParameter("@ExistPrint_67", adChar, adParamInput, 1, Trim(mstrExistPrint))
    .Parameters.Append PrmExistPrint

    Set PrmExistFilm = .CreateParameter("@ExistFilm_68", adChar, adParamInput, 1, Trim(mstrExistFilm))
    .Parameters.Append PrmExistFilm

    Set PrmFilmNo = .CreateParameter("@FilmNo_69", adChar, adParamInput, 50, Trim(mstrFilmNo))
    .Parameters.Append PrmFilmNo

    Set PrmExistTape = .CreateParameter("@ExistTape_70", adChar, adParamInput, 1, Trim(mstrExistTape))
    .Parameters.Append PrmExistTape

    Set PrmTapeTypeCode = .CreateParameter("@TapeTypeCode_71", adChar, adParamInput, 2, Trim(mstrTapeTypeCode))
    .Parameters.Append PrmTapeTypeCode

    Set PrmTapeNo = .CreateParameter("@TapeNo_72", adChar, adParamInput, 10, Trim(mstrTapeNo))
    .Parameters.Append PrmTapeNo

    Set PrmExistCD = .CreateParameter("@ExistCD_73", adChar, adParamInput, 1, Trim(mstrExistCD))
    .Parameters.Append PrmExistCD

    Set PrmCDNo = .CreateParameter("@CDNo_74", adChar, adParamInput, 10, Trim(mstrCDNo))
    .Parameters.Append PrmCDNo

    Set PrmOpenOrCaseHoleCode = .CreateParameter("@OpenOrCaseHoleCode_75", adChar, adParamInput, 1, Trim(mstrOpenOrCaseHoleCode))
    .Parameters.Append PrmOpenOrCaseHoleCode

    Set PrmToolsSerialNo1 = .CreateParameter("@ToolsSerialNo1_76", adChar, adParamInput, 10, Trim(mstrToolsSerialNo1))
    .Parameters.Append PrmToolsSerialNo1

    Set PrmToolsSerialNo2 = .CreateParameter("@ToolsSerialNo2_77", adChar, adParamInput, 10, Trim(mstrToolsSerialNo2))
    .Parameters.Append PrmToolsSerialNo2

    Set PrmToolsSerialNo3 = .CreateParameter("@ToolsSerialNo3_78", adChar, adParamInput, 10, Trim(mstrToolsSerialNo3))
    .Parameters.Append PrmToolsSerialNo3

    Set PrmToolsSerialNo4 = .CreateParameter("@ToolsSerialNo4_79", adChar, adParamInput, 10, Trim(mstrToolsSerialNo4))
    .Parameters.Append PrmToolsSerialNo4

    Set PrmToolsSerialNo5 = .CreateParameter("@ToolsSerialNo5_80", adChar, adParamInput, 10, Trim(mstrToolsSerialNo5))
    .Parameters.Append PrmToolsSerialNo5

    Set PrmToolsSerialNo6 = .CreateParameter("@ToolsSerialNo6_81", adChar, adParamInput, 10, Trim(mstrToolsSerialNo6))
    .Parameters.Append PrmToolsSerialNo6

    Set PrmToolsTypeCode = .CreateParameter("@ToolsTypeCode_82", adChar, adParamInput, 2, Trim(mstrToolsTypeCode))
    .Parameters.Append PrmToolsTypeCode

    Set PrmToolScatch = .CreateParameter("@ToolScatch_83", adWChar, adParamInput, 100, Trim(mstrToolScatch))
    .Parameters.Append PrmToolScatch

    Set PrmRemarks = .CreateParameter("@Remarks_84", adWChar, adParamInput, 2000, Trim(mstrRemarks))
    .Parameters.Append PrmRemarks

    .Execute Options:=adExecuteNoRecords
    End With
    mclsDatabase.CloseDB
    ' cmdrstK01.Execute , Array( _
    ' mstrWellCode, mstrSerialNo, mstrRefrenceNo, _
    ' mstrCompanyCode, mstrLogCode, mstrKB, _
    ' mstrGL, mstrDF, mstrPermanentDatum, _
    ' mstrLogMeasuredFrom, mstrDrillingMeasuredFrom, mstrElev, _
    ' mstrMaxWellDeviation, mstrLoggingDate, mstrLoggingTime, _
    ' mstrRunNo, mstrDepthDriller, mstrDepthLogger, _
    ' mstrFromPoint, mstrToPoint, mstrCasingDrillerSize, _
    ' mstrCasingDrillerSizeCode, mstrCasingShoeDrillingDepth, mstrCasingLoggerDepth, _
    ' mstrMudTypeCode, mstrDensity, mstrViscosity, _
    ' mstrFluidLoss, mstrAlkalinityPH, mstrSourceOfSample, _
    ' mstrRM, mstrRMF, mstrRMC, _
    ' mstrTRM, mstrTRMF, mstrTRMC, mstrSourceRMF, mstrSourceRMC, _
    ' mstrRMAtMRT, mstrRMFAtMRT, mstrMaxRecordedTemp, mstrCirculationStoppedDate, _
    ' mstrCirculationStoppedTime, mstrLoggerOnButtomDate, mstrLoggerOnButtomTime, _
    ' mstrUnitNo, mstrContractorLocation, mstrRecoredBy, mstrWithnessedBy, _
    ' mstrOtherServices1, mstrOtherServices2, mstrOtherServices3, _
    ' mstrOtherServices4, mstrOtherServices5, mstrOtherServices6, _
    ' mstrOtherServices7, mstrSalinity, mstrCalcium, mstrOilWater, _
    ' mstrSolid, mstrBarite, mstrExistPrint, mstrExistFilm, _
    ' mstrFilmNo, mstrExistTape, mstrTapeTypeCode, mstrTapeNo, _
    ' mstrExistCD, mstrCDNo, mstrOpenOrCaseHoleCode, mstrToolsSerialNo1, _
    ' mstrToolsSerialNo2, mstrToolsSerialNo3, mstrToolsSerialNo4, _
    ' mstrToolsSerialNo5, mstrToolsSerialNo6, mstrToolsTypeCode, _
    ' mstrToolScatch, mstrRemarks)
    Set PrmWellCode = Nothing
    Set PrmSerialNo = Nothing
    Set PrmRefrenceNo = Nothing
    Set PrmFieldName = Nothing
    Set PrmLongitude = Nothing
    Set PrmLatitude = Nothing
    Set PrmCountryName = Nothing
    Set PrmState = Nothing
    Set PrmCompanyCode = Nothing
    Set PrmLogCode = Nothing
    Set PrmKB = Nothing
    Set PrmGL = Nothing
    Set PrmDF = Nothing
    Set PrmPermanentDatum = Nothing
    Set PrmLogMeasuredFrom = Nothing
    Set PrmDrillingMeasuredFrom = Nothing
    Set PrmElev = Nothing
    Set PrmMaxWellDeviation = Nothing
    Set PrmLoggingDate = Nothing
    Set PrmLoggingTime = Nothing
    Set PrmRunNo = Nothing
    Set PrmDepthDriller = Nothing
    Set PrmDepthLogger = Nothing
    Set PrmFromPoint = Nothing
    Set PrmToPoint = Nothing
    Set PrmCasingDrillerSize = Nothing
    Set PrmCasingDrillerSizeCode = Nothing
    Set PrmCasingShoeDrillingDepth = Nothing
    Set PrmCasingLoggerDepth = Nothing
    Set PrmMudTypeCode = Nothing
    Set PrmDensity = Nothing
    Set PrmViscosity = Nothing
    Set PrmFluidLoss = Nothing
    Set PrmAlkalinityPH = Nothing
    Set PrmSourceOfSample = Nothing
    Set PrmRM = Nothing
    Set PrmRMF = Nothing
    Set PrmRMC = Nothing
    Set PrmTRM = Nothing
    Set PrmTRMF = Nothing
    Set PrmTRMC = Nothing
    Set PrmSourceRMF = Nothing
    Set PrmSourceRMC = Nothing
    Set PrmRMAtMRT = Nothing
    Set PrmRMFAtMRT = Nothing
    Set PrmMaxRecordedTemp = Nothing
    Set PrmCirculationStoppedDate = Nothing
    Set PrmCirculationStoppedTime = Nothing
    Set PrmLoggerOnButtomDate = Nothing
    Set PrmLoggerOnButtomTime = Nothing
    Set PrmUnitNo = Nothing
    Set PrmContractorLocation = Nothing
    Set PrmRecoredBy = Nothing
    Set PrmWithnessedBy = Nothing
    Set PrmOtherServices1 = Nothing
    Set PrmOtherServices2 = Nothing
    Set PrmOtherServices3 = Nothing
    Set PrmOtherServices4 = Nothing
    Set PrmOtherServices5 = Nothing
    Set PrmOtherServices6 = Nothing
    Set PrmOtherServices7 = Nothing
    Set PrmSalinity = Nothing
    Set PrmCalcium = Nothing
    Set PrmOilWater = Nothing
    Set PrmSolid = Nothing
    Set PrmBarite = Nothing
    Set PrmExistPrint = Nothing
    Set PrmExistFilm = Nothing
    Set PrmFilmNo = Nothing
    Set PrmExistTape = Nothing
    Set PrmTapeTypeCode = Nothing
    Set PrmTapeNo = Nothing
    Set PrmExistCD = Nothing
    Set PrmCDNo = Nothing
    Set PrmOpenOrCaseHoleCode = Nothing
    Set PrmToolsSerialNo1 = Nothing
    Set PrmToolsSerialNo2 = Nothing
    Set PrmToolsSerialNo3 = Nothing
    Set PrmToolsSerialNo4 = Nothing
    Set PrmToolsSerialNo5 = Nothing
    Set PrmToolsSerialNo6 = Nothing
    Set PrmToolsTypeCode = Nothing
    Set PrmToolScatch = Nothing
    Set PrmRemarks = Nothing
    Call Refresh
    ' FindRecord _
    ' "WellCode= '" & strWellCode & "' & SerialNo = '" & strSerialNo & "' "
    Update = True
    Set cmdrstK01 = Nothing
    Else
    MsgBox "Null Value is not accepted"
    End If
    Exit Function
    errhandle:
    Update = False
    Set cmdrstK01 = Nothing
    RaiseEvent ClassError("Update", Err)
    End Function

    Public Sub OpenRecordSet(Optional strSql As String = "", Optional strWellCode As String = "")
    On Error GoTo errhandle:
    Set rstK01 = New ADODB.Recordset
    If strSql = "" Then
    If strWellCode <> "" Then
    rstK01.Open "select * from vwK01 where WellCode=" + "'" + strWellCode + "'", strConnection, adOpenKeyset, , adCmdText
    Else
    rstK01.Open "vwK01", strConnection, adOpenKeyset, , adCmdTable
    End If
    Else
    rstK01.Open strSql, strConnection, adOpenKeyset, , adCmdText
    End If
    Call UpdateData
    mblnIsOpen = True
    Exit Sub
    errhandle:
    mblnIsOpen = False
    RaiseEvent ClassError("OpenRecordSet", Err)
    End Sub

    Private Sub Class_Initialize()
    On Error GoTo errhandle:
    ' Call OpenRecordSet
    ' Call UpdateData
    Exit Sub
    errhandle:
    RaiseEvent ClassError("Class_Initialize", Err)
    End Sub

    Private Sub Class_Terminate()
    On Error GoTo errhandle:
    Set rstK01 = Nothing
    Exit Sub
    errhandle:
    RaiseEvent ClassError("Class_Terminate", Err)
    End Sub

    Public Sub MoveNext()
    On Error GoTo errhandle:
    If (rstK01.RecordCount > 0) And (Not rstK01.EOF) Then
    rstK01.MoveNext
    Call UpdateData
    End If
    Exit Sub
    errhandle:
    RaiseEvent ClassError("MoveNext", Err)
    End Sub

    Public Sub MoveFirst()
    On Error GoTo errhandle:
    If rstK01.RecordCount > 0 Then
    rstK01.MoveFirst
    Call UpdateData
    End If
    Exit Sub
    errhandle:
    RaiseEvent ClassError("MoveFirst", Err)
    End Sub

    Public Sub MovePrevious()
    On Error GoTo errhandle:
    If (rstK01.RecordCount > 0) And (Not rstK01.BOF) Then
    rstK01.MovePrevious
    Call UpdateData
    End If
    Exit Sub
    errhandle:
    RaiseEvent ClassError("MovePrevious", Err)
    End Sub

    Public Sub MoveLast()
    On Error GoTo errhandle:
    If rstK01.RecordCount > 0 Then
    rstK01.MoveLast
    Call UpdateData
    End If
    Exit Sub
    errhandle:
    RaiseEvent ClassError("MoveLast", Err)
    End Sub

    Public Sub Refresh()
    On Error GoTo errhandle:
    SetBookmark
    rstK01.Requery
    GotoBookmark
    Call UpdateData
    Exit Sub
    errhandle:
    RaiseEvent ClassError("Refresh", Err)
    End Sub

    Public Sub SetBookmark()
    On Error GoTo errhandle:
    vBookMark = rstK01.Bookmark
    Exit Sub
    errhandle:
    RaiseEvent ClassError("SetBookmark", Err)
    End Sub

    Public Sub GotoBookmark()
    On Error GoTo errhandle:
    If (vBookMark >= rstK01.RecordCount) Then
    rstK01.MoveLast
    Else
    rstK01.Bookmark = vBookMark
    End If
    Exit Sub
    errhandle:
    RaiseEvent ClassError("GotoBookmark", Err)
    End Sub

    Public Function ValidateData() As String
    On Error GoTo errhandle:
    ValidateData = vbNullString
    Exit Function
    errhandle:
    RaiseEvent ClassError("ValidateData", Err)
    End Function

    Public Property Get IsFirstRecord() As Boolean
    On Error GoTo errhandle:
    If GetCount <= 0 Then
    IsFirstRecord = True
    Else
    If RowIndex <= 1 Then
    IsFirstRecord = True
    Else
    IsFirstRecord = False
    End If
    End If
    Exit Property
    errhandle:
    RaiseEvent ClassError("IsFirstRecord", Err)
    End Property

    Public Property Get IsLastRecord() As Boolean
    On Error GoTo errhandle:
    If GetCount <= 0 Then
    IsLastRecord = True
    Else
    If RowIndex >= GetCount Then
    IsLastRecord = True
    Else
    IsLastRecord = False
    End If
    End If
    Exit Property
    errhandle:
    RaiseEvent ClassError("IsLastRecord", Err)
    End Property

    Public Property Get GetCount() As Long
    On Error GoTo errhandle:
    GetCount = rstK01.RecordCount
    Exit Property
    errhandle:
    RaiseEvent ClassError("GetCount", Err)
    End Property

    Public Function FindRecord(strCriteria As String, ParamArray otherCriteria()) As Boolean
    On Error GoTo errhandle:
    If mblnIsOpen = False Then
    FindRecord = False
    Exit Function
    End If
    Dim criteria
    Recordset.Sort = Mid(strCriteria, 1, InStr(1, strCriteria, "=") - 1)
    For Each criteria In otherCriteria
    Recordset.Sort = Recordset.Sort & "," & Mid(criteria, 1, InStr(1, criteria, "=") - 1)
    Next
    If rstK01.RecordCount > 0 Then
    rstK01.Find strCriteria, , adSearchForward, 1
    For Each criteria In otherCriteria
    rstK01.Find criteria
    Next
    Call UpdateData
    Else
    FindRecord = False
    End If
    FindRecord = True
    Exit Function
    errhandle:
    RaiseEvent ClassError("FindRecord", Err)
    End Function

    Public Sub rstK01_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
    On Error GoTo errhandle:
    Call UpdateData
    RaiseEvent MoveComplete(adReason, pError, adStatus, pRecordset)
    Exit Sub
    errhandle:
    RaiseEvent ClassError("MoveComplete", Err)
    End Sub

    Private Sub InsertRefresh()
    On Error GoTo errhandle
    Dim strSql As String
    rstK01.Requery
    rstK01.MoveLast
    UpdateData
    Exit Sub
    errhandle:
    RaiseEvent ClassError("InsertRefresh", Err)
    End Sub

Leave a Comment

(required) 
(optional)
(required) 

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS