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
