Questione : Accesso 2007 lento al collegamento alla base di dati di Oracle

Oh wisdomed il guru di accesso sul livello, il
I hanno certo codice che rinfresca i relativi collegamenti delle tabelle ad una base di dati di oracolo.  Per qualche motivo richiede tempo molto molto (3 - 5 minuti) completare l'uno o due collegamento e sto domandandomi se chiunque potesse dare un'occhiata al mio codice per suggerire un cambiamento o un ritocco? class= " lineNumbers " >
1 del >

Ted
del

Many: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: fncRelink >Public codeBody di funzione " del prettyprint " " del class= del id= " codeSnippet766792 del >
 0)
     Tabella rieffettuante il collegamento di Debug.Print “: „ & il TD. Nome
     il TD. Collegar = fine cricca fine
     td.RefreshLink
  Concluder se
Dopo

Debug.Print “rieffettuano il collegamento completato.„

Quit_Handler:
Uscire la funzione

Err_Handler:
    MsgBox Err.Description, vbInformation, “rieffettua il collegamento„
    Err.Number = 0
    Riassunto Quit_Handler
Funzione di conclusione
class= > " libero " di 
class= del

Risposta : Accesso 2007 lento al collegamento alla base di dati di Oracle

lo scritto funziona attraverso l'ANNUNCIO, ottiene tutti i gruppi di distribuzione e per ciascuno genera il manuale separato dentro eccelle ed elenca i loro membri.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
Opzione esplicita

adoCommand fioco, adoConnection, strBase, strFilter, strAttributes
objRootDSE fioco, strDNSDomain, strQuery, adoRecordset, strName, groupType, groupName, iRow
objExcel fioco, arrMembers, strMember

'Oggetti di DIFFICOLTÀ di messa a punto.
Regolare il adoCommand = CreateObject (“ADODB.Command„)
Regolare il adoConnection = CreateObject (“ADODB.Connection„)
adoConnection.Provider = “ADsDSOObject„
adoConnection.Open “fornitore attivo dell'indice„
adoCommand.ActiveConnection = adoConnection

'Intero dominio attivo dell'indice di ricerca.
Regolare il objRootDSE = GetObject (“LDAP: //RootDSE„)
strDNSDomain = objRootDSE.Get (“defaultNamingContext„)
strBase = ""

'Filtro sui gruppi di distribuzione.
strFilter = “(objectCategory=group)„

'Lista delimitata virgola dei valori di attributo da richiamare.
strAttributes = “distinguishedName, membro, groupType, nome„

'Costruire la domanda di sintassi di LDAP.
strQuery = strBase & “; „ & strFilter & “; „ & strAttributes & “; sotto-albero„
adoCommand.CommandText = strQuery
adoCommand.Properties (“formato di pagina„) = 100
adoCommand.Properties (“prespegnimento„) = 30
adoCommand.Properties (“il nascondiglio risulta„) = falso

'Fare funzionare la domanda.
Regolare il adoRecordset = adoCommand.Execute

Regolare il objExcel = CreateObject (“Excel.Application„)
Con objExcel
.SheetsInNewWorkbook = 1
. Workbooks.Add
. Visibile = allineare

'Enumerare il recordset risultante.
Fare fino a adoRecordset.EOF
'Richiamare i valori e l'esposizione.
strName = adoRecordset.Fields (“distinguishedName„). Valore
groupType  = adoRecordset.Fields (“groupType„). Valore
il groupName  = sostituisce (adoRecordset.Fields (“nome„). Valore, “CN=„, "")

'ottenere soltanto i gruppi di distribuzione
se groupType=2 o groupType=4 o groupType=8 allora
	irow=1
	.ActiveWorkbook.Worksheets.Add
	groupName di .ActiveSheet.Name=
	arrMembers = adoRecordset.Fields (“membro„). Valore

	Gruppo di distribuzione di Wscript.Echo “: „ & strName
	Se IsNull (arrMembers) allora
		Wscript.Echo “--  „
	Altrimenti
		Per ogni strMember in arrMembers
			Wscript.Echo “-- „ & strMember
			Regolare il objRootDSE = GetObject (“LDAP: /“&strMember)
			. Cellule (iRow, 1) = sostituisce (objRootDSE.Name, “CN=„, "")
			irow=irow + 1
		Dopo
	Concluder se
Concluder se
'Muover verso l'annotazione seguente nel recordset.
adoRecordset.MoveNext
Ciclo
. Colonne (1).entirecolumn.autofit
Estremità con

'Pulire.
adoRecordset.Close
adoConnection.Close
Regolare il objExcel = niente
Altre soluzioni  
 
programming4us programming4us