Hente data fra tabel 1 eller 2 - virker, men langsomt
HejJeg har en tabel hvor der er læst en del adresser ind. (tabel 1)
Jeg har så en anden tabel som også har en masse adresser, mange af dem er de samme som i tabel 1.
Jeg skal så have læst adresserne ud i en fil.
Den løber så tabel 2 igennem (t_Adr_indsendt2) igennem og den skal så kigge i tabel 1 (t_adr_vask2) om adressen findes der i og om den har fået en kode i feltet "gruppe", men kun hvis der står MA i feltet "korrektionsflag" i t_adr_vask2
Står der så noget i "gruppe" skal den skrive adressen fra t_adr_indsendt2.
Står der MA i "korrektionsflag" og ingenting i "gruppe" skal den skrive adressen fra t_adr_vask.
Står der noget andet i "korrektionsflag" skal den skrive adressen fra "t_adr_indsendt2"
Alt dette her virker, men det kører mega langsomt :(
Så tænkte på om der var en hurtigere måde at gøre det på end jeg gør. Tror problemet ligger i at jeg bruger mange DLookup...
Her kommer den kode jeg bruger:
Open "g:\POSTEN\UDDATA\" & sIdnummer & "_" & sBladnavn1 & "_" & sDato & ".POS" For Output As #1
sLinie = "DS;;" & sIdnummer & ";" & sBladnavn & ";J;" & sDato & ";;1"
Print #1, sLinie
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open "SELECT t_adr_indsendt2.Abonnent_nr, t_adr_indsendt2.Fornavn, t_adr_indsendt2.Efternavn, t_adr_indsendt2.Gadenavn, t_adr_indsendt2.Husnr, t_adr_indsendt2.Husbogstav, t_adr_indsendt2.Etage, t_adr_indsendt2.Placering, t_adr_indsendt2.Stednavn, t_adr_indsendt2.Postnr, t_adr_indsendt2.Postboksnr, t_adr_indsendt2.CO_navn, t_adr_indsendt2.adresseringsnavn, t_adr_indsendt2.Landekode, t_adr_indsendt2.fil_nr, t_adr_indsendt2.BYNAVN FROM t_adr_indsendt2 WHERE t_adr_indsendt2.fil_nr =" & Me.combobladnavn & " ORDER BY t_adr_indsendt2.Abonnent_nr;", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Do Until rs.EOF
'sStednavn = ""
If (DLookup("[Korrektionsflag]", "t_adr_vask2", "[Abonnent_nr] ='" & rs("abonnent_nr") & "'") <> "") Then
' Abonnenten er fundet i den vaskede fil fra PD
sKorrektionsflag = DLookup("[Korrektionsflag]", "t_adr_vask2", "[Abonnent_nr] ='" & rs("abonnent_nr") & "'")
If (sKorrektionsflag = "MA") Then
If (DLookup("[Gruppe]", "t_adr_vask2", "[Abonnent_nr] ='" & rs("abonnent_nr") & "'") <> "") Then
'Abonnenten er kommet retur selvom det var en MA fra PD
'Der vælges adressen der er konverteret og ikke den vaskede
sLinie = "UA;" & rs("abonnent_nr") & ";" & rs("Fornavn") & ";" & rs("efternavn")
sLinie = sLinie & ";;;" & rs("Gadenavn") & ";" & rs("husnr") & ";" & rs("Husbogstav")
sLinie = sLinie & ";" & rs("etage") & ";" & rs("placering") & ";" & rs("stednavn") & ";"
sLinie = sLinie & rs("postnr") & ";" & rs("postboksnr") & ";;" & rs("CO_Navn") & ";" & rs("Adresseringsnavn") & ";"
Else
Dim sAbon_nr As String
Dim sFornavn As String
Dim sEfternavn As String
Dim sGadenavn As String
Dim sHusnr As String
Dim sHusbogstav As String
Dim sEtage As String
Dim sPlacering As String
Dim sPostboks As String
Dim sConavn As String
Dim sAdresseringsnavn As String
Dim sStednavn As String
sAbon_nr = rs("abonnent_nr")
If (DLookup("[Fornavn]", "t_adr_vask2", "[Abonnent_nr] ='" & sAbon_nr & "'") <> "") Then
sFornavn = DLookup("[Fornavn]", "t_adr_vask2", "[Abonnent_nr] ='" & sAbon_nr & "'")
Else
sFornavn = ""
End If
If (DLookup("[Efternavn]", "t_adr_vask2", "[Abonnent_nr] ='" & sAbon_nr & "'") <> "") Then
sEfternavn = DLookup("[Efternavn]", "t_adr_vask2", "[Abonnent_nr] ='" & sAbon_nr & "'")
Else
sEfternavn = ""
End If
If (DLookup("[Gadenavn]", "t_adr_vask2", "[Abonnent_nr] ='" & sAbon_nr & "'") <> "") Then
sGadenavn = DLookup("[Gadenavn]", "t_adr_vask2", "[Abonnent_nr] ='" & sAbon_nr & "'")
Else
sGadenavn = ""
End If
If (DLookup("[Husnr]", "t_adr_vask2", "[Abonnent_nr] ='" & sAbon_nr & "'") <> "") Then
sHusnr = DLookup("[Husnr]", "t_adr_vask2", "[Abonnent_nr] ='" & sAbon_nr & "'")
Else
sHusnr = ""
End If
If (DLookup("[Husbogstav]", "t_adr_vask2", "[Abonnent_nr] ='" & sAbon_nr & "'") <> "") Then
sHusbogstav = DLookup("[Husbogstav]", "t_adr_vask2", "[Abonnent_nr] ='" & sAbon_nr & "'")
Else
sHusbogstav = ""
End If
If (DLookup("[Etage]", "t_adr_vask2", "[Abonnent_nr] ='" & sAbon_nr & "'") <> "") Then
sEtage = DLookup("[Etage]", "t_adr_vask2", "[Abonnent_nr] ='" & sAbon_nr & "'")
Else
sEtage = ""
End If
If (DLookup("[Placering]", "t_adr_vask2", "[Abonnent_nr] ='" & sAbon_nr & "'") <> "") Then
sPlacering = DLookup("[Placering]", "t_adr_vask2", "[Abonnent_nr] ='" & sAbon_nr & "'")
Else
sPlacering = ""
End If
If (DLookup("[Stednavn]", "t_adr_vask2", "[Abonnent_nr] ='" & sAbon_nr & "'") <> "") Then
sStednavn = DLookup("[Stednavn]", "t_adr_vask2", "[Abonnent_nr] ='" & sAbon_nr & "'")
Else
sStednavn = ""
End If
If (DLookup("[Adresseringsnavn]", "t_adr_vask2", "[Abonnent_nr] ='" & sAbon_nr & "'") <> "") Then
sAdresseringsnavn = DLookup("[Adresseringsnavn]", "t_adr_vask2", "[Abonnent_nr] ='" & sAbon_nr & "'")
Else
sAdresseringsnavn = ""
End If
If (DLookup("[Postnr]", "t_adr_vask2", "[Abonnent_nr] ='" & sAbon_nr & "'") <> "") Then
sPostnr = DLookup("[Postnr]", "t_adr_vask2", "[Abonnent_nr] ='" & sAbon_nr & "'")
Else
sPostnr = ""
End If
If (DLookup("[Postboksnr]", "t_adr_vask2", "[Abonnent_nr] ='" & sAbon_nr & "'") <> "") Then
sPostboks = DLookup("[Postboksnr]", "t_adr_vask2", "[Abonnent_nr] ='" & sAbon_nr & "'")
Else
sPostboks = ""
End If
If (DLookup("[Co_navn]", "t_adr_vask2", "[Abonnent_nr] ='" & sAbon_nr & "'") <> "") Then
sConavn = DLookup("[Co_navn]", "t_adr_vask2", "[Abonnent_nr] ='" & sAbon_nr & "'")
Else
sConavn = ""
End If
sLinie = "UA;" & sAbon_nr & ";" & sFornavn & ";" & sEfternavn
sLinie = sLinie & ";;;" & sGadenavn & ";" & sHusnr & ";" & sHusbogstav
sLinie = sLinie & ";" & sEtage & ";" & sPlacering & ";" & sStednavn & ";"
sLinie = sLinie & sPostnr & ";" & sPostboks & ";;" & sConavn & ";" & sAdresseringsnavn & ";"
End If
Else
'Abonnenten er blevet vasket til MA
'Der vælges adressen der er konverteres og ikke den vaskede
sLinie = "UA;" & rs("abonnent_nr") & ";" & rs("Fornavn") & ";" & rs("efternavn")
sLinie = sLinie & ";;;" & rs("Gadenavn") & ";" & rs("husnr") & ";" & rs("Husbogstav")
sLinie = sLinie & ";" & rs("etage") & ";" & rs("placering") & ";" & rs("stednavn") & ";"
sLinie = sLinie & rs("postnr") & ";" & rs("postboksnr") & ";;" & rs("CO_Navn") & ";" & rs("Adresseringsnavn") & ";"
End If
Else
'Abonnenten er ikke fundet i den vaskede fil og må derfor være ny
'Der bruges den tilsendte adresse
sLinie = "UA;" & rs("abonnent_nr") & ";" & rs("Fornavn") & ";" & rs("efternavn")
sLinie = sLinie & ";;;" & rs("Gadenavn") & ";" & rs("husnr") & ";" & rs("Husbogstav")
sLinie = sLinie & ";" & rs("etage") & ";" & rs("placering") & ";" & rs("stednavn") & ";"
sLinie = sLinie & rs("postnr") & ";" & rs("postboksnr") & ";;" & rs("CO_Navn") & ";" & rs("Adresseringsnavn") & ";"
End If
Print #1, sLinie
iAntal = iAntal + 1
rs.MoveNext
Loop
Print #1, "DU;" & iAntal
Close #1
/dsjk
