Hej, Skulle behöva tips & ideér hur man optimera den Do-loop till så lite kod som möjligt och så snabb så möjligt...
Ska köra 38 000 ggr... är det problem ? har testat med 50 st än så länge...
Tankar o tips ang. detta mottages med glädje.
Do Until RS.EOF
I_counter = i_counter + 1
If IsNull(RS("notification")) then
str_noti = Cstr("-")
Else
str_noti = Cstr(RS("Notification"))
End If
If IsNull(RS("Title")) then
str_Title = Cstr("-")
Else
str_Title = Cstr(RS("Title"))
End If
If IsNull(RS("Phone2")) then
str_phone2 = Cstr("-")
Else
str_phone2 = Cstr(RS("Phone2"))
End If
Set objContact = adsDomain.Create("contact", "cn=" & Cstr(RS("Name")))
objContact.put "DisplayName", Cstr(RS("Name"))
objContact.SetInfo
objContact.put "mail", Cstr(RS("Mail"))
objContact.put "mailNickname", Cstr(RS("Memoid"))
objContact.SetInfo
objContact.put "proxyAddresses", "SMTP:"& Cstr(RS("Mail")) &""
objContact.put "targetAddress", "SMTP:"& Cstr(RS("Mail")) &""
objContact.SetInfo
objContact.put "telephoneNumber", Cstr(RS("Phone1"))
objContact.put "Homephone", str_phone2
objContact.put "Department", Cstr(RS("Department"))
objContact.put "Title", str_title
objContact.put "Info", str_noti
objContact.SetInfo
Response.Write("Contact created!("& i_counter &")<BR>")
RS.MoveNext
Loop
@ndersMedlem sedan juni 200032 969 inlägg Eftersom jag inte har en aning om vad adsDomain.Create() håller på med, så är det lite svårt att svara på frågan.
Vad avgör var du har placerat objContact.SetInfo i koden?
Så... fick lite felmeddelanden innan när jag körde utan o bryta av med den ibland..
Men tog bort alla utom än o det fungerade ändå.. :)
Hämtar från access DB och sedan lägger objektet in information i Active Directory
Ny kod:
Do Until RS.EOF
I_counter = i_counter + 1
If IsNull(RS("notification")) then
str_noti = Cstr("-")
Else
str_noti = Cstr(RS("Notification"))
End If
If IsNull(RS("Title")) then
str_Title = Cstr("-")
Else
str_Title = Cstr(RS("Title"))
End If
If IsNull(RS("Phone2")) then
str_phone2 = Cstr("-")
Else
str_phone2 = Cstr(RS("Phone2"))
End If
Set objContact = adsDomain.Create("contact", "cn=" & Cstr(RS("Name")))
objContact.put "DisplayName", Cstr(RS("Name"))
objContact.put "mail", Cstr(RS("Mail"))
objContact.put "mailNickname", Cstr(RS("Memoid"))
objContact.put "proxyAddresses", "SMTP:"& Cstr(RS("Mail")) &""
objContact.put "targetAddress", "SMTP:"& Cstr(RS("Mail")) &""
objContact.put "telephoneNumber", Cstr(RS("Phone1"))
objContact.put "Homephone", str_phone2
objContact.put "Department", Cstr(RS("Department"))
objContact.put "Title", str_title
objContact.put "Info", str_noti
objContact.SetInfo
Response.Write("Contact created!("& i_counter &")<BR>")
RS.MoveNext
Loop
OveRRidEMedlem sedan feb. 200112 078 inlägg Använd while istället för Do Until. Det skall visst vara mer prestandasnålt.
while not rs.eof
'baluba
rs.movenext
wend
Set adsDomain = GetObject("LDAP://OU=MEMODir, dc=****,dc=****")
Ok.. litar på dig override.. tack ! Fler tips ?
While not RS.eof
I_counter = i_counter + 1
If IsNull(RS("notification")) then
str_noti = Cstr("-")
Else
str_noti = Cstr(RS("Notification"))
End If
If IsNull(RS("Title")) then
str_Title = Cstr("-")
Else
str_Title = Cstr(RS("Title"))
End If
If IsNull(RS("Phone2")) then
str_phone2 = Cstr("-")
Else
str_phone2 = Cstr(RS("Phone2"))
End If
Set objContact = adsDomain.Create("contact", "cn=" & Cstr(RS("Name")))
objContact.put "DisplayName", Cstr(RS("Name"))
objContact.put "mail", Cstr(RS("Mail"))
objContact.put "mailNickname", Cstr(RS("Memoid"))
objContact.put "proxyAddresses", "SMTP:"& Cstr(RS("Mail")) &""
objContact.put "targetAddress", "SMTP:"& Cstr(RS("Mail")) &""
objContact.put "telephoneNumber", Cstr(RS("Phone1"))
objContact.put "Homephone", str_phone2
objContact.put "Department", Cstr(RS("Department"))
objContact.put "Title", str_title
objContact.put "Info", str_noti
objContact.SetInfo
Response.Write("Contact created!("& i_counter &")<BR>")
RS.movenext
Wend
Den behöver inte sätta "-" .. kan fortfarande vara Null...
Ville slippa felmeddelande från Cstr
Men det måste vara en str när man sätter in den i AD't
If IsNull(RS("Phone2")) then
str_phone2 = Cstr("-")
Else
str_phone2 = Cstr(RS("Phone2"))
End If
@ndersMedlem sedan juni 200032 969 inlägg Hur ofta ska du köra den här koden?
Om det är en engångsföreteelse så tycker jag du ska brassa på ordentligt i Server.ScriptTimeout, och sedan köra så det ryker. (och hålla tummarna... ;) )
@ndersMedlem sedan juni 200032 969 inlägg
martinpartin skrev:
Den behöver inte sätta "-" .. kan fortfarande vara Null...
Ville slippa felmeddelande från Cstr
Men det måste vara en str när man sätter in den i AD't
Ok. Då räcker det här:
Do Until RS.EOF
I_counter = i_counter + 1
Set objContact = adsDomain.Create("contact", "cn=" & Cstr(RS("Name")))
objContact.put "DisplayName", Cstr(RS("Name"))
objContact.put "mail", Cstr(RS("Mail"))
objContact.put "mailNickname", Cstr(RS("Memoid"))
objContact.put "proxyAddresses", "SMTP:"& Cstr(RS("Mail")) &""
objContact.put "targetAddress", "SMTP:"& Cstr(RS("Mail")) &""
objContact.put "telephoneNumber", Cstr(RS("Phone1"))
objContact.put "Homephone", "" & RS("Phone2")
objContact.put "Department", Cstr(RS("Department"))
objContact.put "Title", "" & RS("Title")
objContact.put "Info", "" & RS("notification")
objContact.SetInfo
Response.Write("Contact created!("& i_counter &")<BR>")
RS.MoveNext
Loop
Du kan lägga "" & framför alla värden du hämtar direkt ur recordsetet, så undviker du null.
mvh
en gång i veckan ca :) ska försöka lösa det inkrementellt på nått sätt sen.. Server.Scriptout.. Har inte ens tänkt så långt.. Ska kolla på den. Behövs nog.. hmm. :)
ahhh tack för det sista anders
Indentera koden i loopen så den blir tydligare...
Istället för alla IsNull prylar:
str_noti = RS("Notification") & ""
str_Title = RS("Title") & ""
str_phone2 = RS("Phone2") & ""
Fungerade inte med... & ""
Fick ett meddelande som inte ens microsoft visste..
Körde med detta och det funka
objContact.put "Info", RS("Notification") & " "
Så detta alltså.. känns faktiskt som det går snabbare !! :)
While not RS.eof
I_counter = i_counter + 1
Set objContact = adsDomain.Create("contact", "cn=" & Cstr(RS("Name")))
objContact.put "DisplayName", Cstr(RS("Name"))
objContact.put "mail", Cstr(RS("Mail"))
objContact.put "mailNickname", Cstr(RS("Memoid"))
objContact.put "proxyAddresses", "SMTP:"& Cstr(RS("Mail")) &""
objContact.put "targetAddress", "SMTP:"& Cstr(RS("Mail")) &""
objContact.put "telephoneNumber", Cstr(RS("Phone1"))
objContact.put "Homephone", RS("Phone2") & " "
objContact.put "Department", Cstr(RS("Department"))
objContact.put "Title", "" & RS("Title") & " "
objContact.put "Info", RS("Notification") & " "
objContact.SetInfo
Response.Write("Contact created!("& i_counter &")<BR>")
RS.movenext
Wend