Avatar billede mortency Nybegynder
21. juni 2004 - 12:28 Der er 1 løsning

Sjekk av data ved import

Hei jeg skal sjekke data som skal importeres inn til en MS SQL Database. Problemet er at i databasen så kan en bil være registrert flere ganger på samme regnr men den må da være kun aktiv en gang dvs at bilen kan være registrert flere ganger men slettet, hvis den er slettet så kan man registrere en bil med samme regnr igjen. Hvordan kan jeg løse så jeg finner ut hvilken BIL man skal sjekke. Altså korrekt bil?

Txt filen kan se slik ut:
22;AD34567;2;18;1;2003;1.6; ;1;1;181;15.10.2003;43;15.10.2003;JA
22;CF24726;2;18;1;2003;1.6; ;1;1;181;15.10.2003;43;15.10.2003;JA
22;CF24727;2;18;1;2003;1.6; ;1;1;181;15.10.2003;43;15.10.2003;JA

Koden for å sjekke dataene ser slik ut.
    If UBound(FilArr) = 13 Then
               
        'Henter data fra txtfil
        strEier = Trim(filArr(0))
        strRegnr = UCASE(Trim(filArr(1)))
        strFabrikat = Trim(filArr(2))
        strModell = Trim(filArr(3))
        strType = Trim(filArr(4))
        strArsmodell = Trim(filArr(5))
        strMotor = Trim(Replace(filArr(6),".","," ))'Fjerner punktum og setter inn et komma.
        strListePris = Trim(filArr(7))
        strPremie = Trim(filArr(8))'Denne hentes automatisk ut fra systemet, det er kun en premie.
        strAvdeling = Trim(filArr(9))
        strRegAv = Trim(filArr(10))'Denne kan godt settes til fast siden den ikke skal tukles med
        strGjelderFra = Trim(Replace(filArr(11),".","/" ))
        strAktiv = UCASE(Trim(filArr(12)))
        strSiOppForsikringFra = Trim(Replace(filArr(13),".","/" ))
                   
        '----------------------------------------------------------------------------------------------------------------------------------------
        'SJEKKER DATA - START
        '----------------------------------------------------------------------------------------------------------------------------------------
        strFeilLinje = " - Feilen var på linje <b>" & i & "</b> der regnr var <b>" & strRegnr & "</b>!<br>"
                   
        'HER SJEKKES DET AT FORMATET PÅ DATENE ER KORREKTE DETTE FUNGERER
        'DET ER KODEN UNDER HER SOM IKKE FUNGERER SKIKKELIG.
       
        '----------------------------------------------------------------------------------------------------------------------------------------
        'SJEKKER HVOR MANGE GANGER BILEN MED REGNR ER I DATABASEN
        '----------------------------------------------------------------------------------------------------------------------------------------
        strSQL = ""
        strSQL = "SELECT COUNT(RegNr) AS Antall FROM tbl" & strKundeNavn & "Biler WHERE REGNR='" & strRegnr & "' GROUP BY Regnr"
        set adoRs = adoCn.Execute(strSQL)
       
        '----------------------------------------------------------------------------------------------------------------------------------------
        'HVIS BILEN ER I DATABASEN MER EN EN GANG SJEKKER VI HVA DEN ER OG HVOR MANGE GANGER
        '----------------------------------------------------------------------------------------------------------------------------------------
        intAntallAktivJA = 0
        intAntallAktivUkjent = 0
        If adoRs("Antall") <> 0 Then
            strSQL = ""
            strSQL = "SELECT BID,Aktiv FROM tbl" & strKundeNavn & "Biler WHERE REGNR='" & strRegnr & "'
            set adoRs = adoCn.Execute(strSQL)
           
            Do While Not adoRs.EOF
                strBID = adoRs("BID")
                strDBAktiv = adoRs("Aktiv")
           
                If strDBAktiv  = "JA" Then
                    intAntallAktivJA = intAntallAktivJA + 1
                Else
                    intAntallAktivUkjent = intAntallAktivUkjent + 1
                End if
            adoRs.MoveNext
            Loop
        End if
       
        If intAntallAktivJA > 1 Then
            error = error & "- Bilen er registrert i databasen AKTIV <b>" & intAntallAktivJA & "</b> ganger. " & strFeilLinje
        End if
       
        If intAntallAktivUkjent > 1 Then
            error = error & "- Bilen er registrert i databasen hverken AKTIV eller INAKTIV <b>" & intAntallAktivUkjent & "</b> ganger. " & strFeilLinje
        End if
       
        If strAktiv = "JA" AND strDBAktiv = "JA" Then
            error = error & "- Bilen kan ikke legges inn AKTIV hvis den er AKTIV fra før. " & strFeilLinje
        End if       
       
        '----------------------------------------------------------------------------------------------------------------------------------------
        'SJEKKER OM REGNR ER I DATABASEN FRA FØR! OG OM DEN ER AKTIV HVIS AKTIV SÅ FEIL
        '----------------------------------------------------------------------------------------------------------------------------------------   
        strSQL = ""   
        strSQL = "SELECT BID,RegNr FROM tbl" & strKundeNavn & "Biler WHERE Regnr=" & "'" & strRegnr &"' AND Aktiv='JA'"
        set adoRs = adoCn.Execute(strSQL)
       
        InserOK = False
        if not adoRs.EOF then
            if CInt(strBID) = CInt(adoRs("BID")) Then 
            'Regnr finnes men det er samme bruker.
            InserOK = True
          end if
        else
          InserOK = True 'Nytt Regnr finnes ikke.
        end if
       
        If inserOK = False Then
            error = error & "- Regnr. er benyttet eller er bilen AKTIV i databasen. " & strFeilLinje
        End if           
       
        '----------------------------------------------------------------------------------------------------------------------------------------
        'SJEKKER OM DET ER NOEN ENDRINGER PÅ BILEN
        '----------------------------------------------------------------------------------------------------------------------------------------           
        strSQL = ""
        strSQL = "Select DISTINCT FKEier,RegNr,FKFabrikat,FKModell,FKType,ArsModell,MotorStorrelse,ListePris,FKBRAvdeling,GjelderFra,Aktiv FROM  tbl" & strKundeNavn & "Biler WHERE Regnr='" & strRegnr & "'
        set adoRs = adoCn.Execute(strSQL)
       
        If not adoRs.EOF then
            strOLDEID = adoRs("FKEier")
            strOLDRegNr = adoRs("RegNr")
            strOLDFKFabrikat = adoRs("FKFabrikat")
            strOLDFKModell = adoRs("FKModell")
            strOLDFKType = adoRs("FKType")
            strOLDArsModell = adoRs("ArsModell")
            strOLDMotorstorrelse = adoRs("MotorStorrelse")
            strOLDListePris = adoRs("Listepris")
            strOLDAID = adoRs("FKBRAvdeling")
            strOLDGjelderFra = adoRs("GjelderFra")
            strOLDAktiv = adoRs("Aktiv")
        End If
       
        If Cint(strEier)=Cint(strOLDEID) AND strRegnr=strOLDRegNr AND Cint(strFabrikat)=Cint(strOLDFKFabrikat) AND Cint(strModell)=Cint(strOLDFKModell) AND Cint(strType)=Cint(strOLDFKType) AND Cint(strArsModell)=Cint(strOLDArsModell) AND strMotor=strOLDMotorstorrelse AND Cint(strListePris)=Cint(strOLDListePris) AND Cint(strAvdeling)=Cint(strOLDAID) AND Trim(strGjelderFra)=Trim(strOLDGjelderFra) AND UCASE(strOLDAktiv)=UCASE(strAktiv) Then
            error = error & "- Det er ikke gjort noen endringer på bilen. " & strFeilLinje
        End if           
           
        adoRs.Close
        Set adoRs = Nothing                                                                   
        '----------------------------------------------------------------------------------------------------------------------------------------
        'SJEKKER DATA - SLUTT
        '----------------------------------------------------------------------------------------------------------------------------------------
    Else
        error = error & "- Det er feil i linje <b>" & j & "</b> (Sjekk at filen ikke har en tom/blank linje og at det er 14 poster separert med semikolon!)<br>"
    End if
Avatar billede mortency Nybegynder
01. juli 2004 - 12:43 #1
Lukker spm.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester