Frage : Zugang 2007 langsam zur Verbindung zur Oracle-Datenbank

Oh wisdomed des Zugangs-Gurus auf Höhe,
I haben irgendeinen Code, der seine Tabellenverbindungen zu einer Orakeldatenbank erneuert.  Aus irgendeinem Grund dauert es eine sehr lange Zeit (3 bis 5 Minuten) ein oder zwei Anschlüsse abzuschließen und ich wundere, wenn jedermann einen Blick an meinem Code nehmen könnte, um eine Änderung oder einen Tweak vorzuschlagen?

Many thanks

Ted
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:
Public Funktion fncRelink () als lang
'Funktion relink Orakeltabellen zur Datenbank
Auf Störung Goto- Err_Handler
fncRelink = 0
CLink als Schnur verdunkeln
CLink = „ODBC; DSN=ADSN; Password=MyPassword; DBQ=ADSN; DBA=W; APA=T; EXC=F; FEN=T; QTO=T; FRC=10; FDL=10; LOB=T; RST=T; BTD=F; BAM=IfAllSuccessful; NUM=NLS; DPM=F; MTS=T; MDI=F; CSR=F; FWC=F; FBS=64000; TLO=O; “
Schwaches TD als DAO.TableDef
Für jedes TD in CurrentDb.TableDefs
  Wenn (Len (TD. ) > 0 dann anschließen)
     Debug.Print „Relinking Tabelle: “ u. TD. Name
     TD. Anschließen = CLink
     td.RefreshLink
  Beenden wenn
Zunächst

Debug.Print „Relink abgeschlossen.“

Quit_Handler:
Funktion herausnehmen

Err_Handler:
    MsgBox Err.Description, vbInformation, „ReLink“
    Err.Number = 0
    Zusammenfassung Quit_Handler
Enden-Funktion

Antwort : Zugang 2007 langsam zur Verbindung zur Oracle-Datenbank

der Index läuft durch ANZEIGE, erhält alle Verteilungsgruppen und für jedes herstellt unterschiedliches Arbeitsblatt innen übertreffen und verzeichnen ihre Mitglieder re.
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:
6:
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:
Wahl ausdrücklich

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

'Einstellung AUFHEBEN-Gegenstände.
adoCommand = CreateObject („ADODB.Command“) einstellen
adoConnection = CreateObject („ADODB.Connection“) einstellen
adoConnection.Provider = „ADsDSOObject“
adoConnection.Open „aktiver Verzeichnis-Versorger“
adoCommand.ActiveConnection = adoConnection

'Suchgesamtes aktives Verzeichnisgebiet.
objRootDSE = GetObject einstellen („LDAP: //RootDSE“)
strDNSDomain = objRootDSE.Get („defaultNamingContext“)
strBase = ""

'Filter auf Verteilungsgruppen.
strFilter = „(objectCategory=group)“

'Komma abgegrenzte Liste zurückzuholenden der Attributwerte.
strAttributes = „distinguishedName, Mitglied, groupType, Name“

'Die LDAP Syntaxfrage konstruieren.
strQuery = strBase u. „; “ u. strFilter u. „; “ u. strAttributes u. „; Unterbaum“
adoCommand.CommandText = strQuery
adoCommand.Properties („Seiten-Größe“) = 100
adoCommand.Properties („Abschaltung“) = 30
adoCommand.Properties („Pufferspeicher resultiert“), = falsch

'Die Frage laufen lassen.
adoRecordset = adoCommand.Execute einstellen

objExcel = CreateObject („Excel.Application“) einstellen
Mit objExcel
.SheetsInNewWorkbook = 1
. Workbooks.Add
. Sichtbar = ausrichten

'Das resultierende recordset aufzählen.
Bis adoRecordset.EOF tun
'Werte und Anzeige zurückholen.
strName = adoRecordset.Fields („distinguishedName“). Wert
groupType  = adoRecordset.Fields („groupType“). Wert
groupName  = ersetzen (adoRecordset.Fields („Name“). Wert, „CN=“, "")

'nur Verteilungsgruppen erhalten
wenn groupType=2 oder groupType=4 oder groupType=8 dann
	irow=1
	.ActiveWorkbook.Worksheets.Add
	.ActiveSheet.Name= groupName
	arrMembers = adoRecordset.Fields („Mitglied“). Wert

	Wscript.Echo „Verteilungs-Gruppe: “ u. strName
	Wenn IsNull (arrMembers) dann
		Wscript.Echo „--  “
	Sonst
		Für jedes strMember in den arrMembers
			Wscript.Echo „-- “ u. strMember
			objRootDSE = GetObject einstellen („LDAP: /„&strMember)
			. Zellen (iRow, 1) = ersetzen (objRootDSE.Name, „CN=“, "")
			irow=irow + 1
		Zunächst
	Beenden wenn
Beenden wenn
'Auf die folgende Aufzeichnung im recordset bewegen.
adoRecordset.MoveNext
Schleife
. Spalten (1).entirecolumn.autofit
Ende mit

'Aufräumen.
adoRecordset.Close
adoConnection.Close
objExcel einstellen = nichts
Weitere Lösungen  
 
programming4us programming4us