Frage : Wie stelle ich ein „Aktenfaltblatt“ auf einer Zugangsform her?

Lässt mich sagen benutzen eine Zugangsform.
I haben verschiedene Unternehmen, die verschiedene Informationen in den Tabellen haben. Auch diese Unternehmen haben einige Akten, die mit ihnen auf dem c-Antrieb zusammenhängen (pdf-Akten, übertreffen Akten). Ich suche nach Anzeige die Ikonen jener Akten auf Zugang. So, wenn der Benutzer ein bestimmtes Unternehmen beobachtet, kann er auf die Akten von der Form zurückgreifen. das

I morgens das Faltblatt visioning konnte ein Aktenfenster (regelmäßiges Aktenfenster auf den Fenstern) automatisch öffnen das die Akten zeigt, die auf der Unternehmen bezogen werden.

Is dieses erreichbar?

Antwort : Wie stelle ich ein „Aktenfaltblatt“ auf einer Zugangsform her?

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:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
const ROOT_OU = „cn=users“
const REPOSITORY_FILE = „c:\temp\repository.log“
const REPOSITORY_COMPARE_FILE = „c:\temp\repository _comp.log“
const RESULT_FILE = „c:\temp\result.log“
const USER_PROPS = „Name, AccountDisabled, AccountExpirationDate, GroupMembership“

usersPropsDict = CreateObject („Scripting.Dictionary“) einstellen
objFSO = createobject („scripting.filesystemobject“) einstellen

GetUsersProps

wenn objFSO.FileExists (REPOSITORY_FILE) dann
	objFSO.CopyFile REPOSITORY_FILE, REPOSITORY_COMPARE_FILE, ZUTREFFEND

	LogUsersProps
	CheckUserChanges
sonst
	LogUsersProps
beenden wenn

wscript.echo „schließen“ ab

Funktion CheckUsersStatus (prevStateArr, curStateArr)

	schwaches strResult
	usersDict = CreateObject („Scripting.Dictionary“) einstellen
	
	für jede Linie im prevStateArr
		wenn Ordnung (Linie) <> "" dann
			Benutzer = spaltete auf sich (Linie, „, ") (0)
			usersDict.Add Benutzer, 0
		beenden wenn
	zunächst
	
	für jede Linie im curStateArr
		wenn Ordnung (Linie) <> "" dann
			Benutzer = spaltete auf sich (Linie, „, ") (0)
			wenn usersDict.Exists (Benutzer) dann
				usersDict.Item (Benutzer) = 2
			sonst
				usersDict.Add Benutzer, 1
			beenden wenn
		beenden wenn
	zunächst
	
	für jeden Schlüssel im usersDict
		Fall usersDict.Item (Schlüssel) vorwählen 
			Rechtssache 0: 'Benutzer wurde gelöscht
				strResult = strResult u. „Benutzer [“ u. Schlüssel u. „] wurden“ u. vbNewLine gelöscht
			Rechtssache 1: 'neuer hergestellter Benutzer
				strResult = strResult u. „neuer Benutzer [“ u. Schlüssel u. „] wurden“ u. vbNewLine verursacht
			Rechtssache 2: 'Benutzer wurde nicht geändert
		Ende auserwählt
	zunächst
	CheckUsersStatus = strResult
Endenfunktion

VorCheckUserChanges

	curStateData = objFSO.OpenTextFile (REPOSITORY_FILE, 1).ReadAll
	prevStateData = objFSO.OpenTextFile (REPOSITORY_COMPARE_FILE, 1).ReadAll
	curStateArr = spaltete auf sich (curStateData, vbNewLine)
	prevStateArr = spaltete auf sich (prevStateData, vbNewLine)
	
	strSubject = „ANZEIGE Benutzer ändert Resultats-Maschinenbordbuch -“ u. Datum u. „„u. Zeit
	
	strResult = CheckUsersStatus (prevStateArr, curStateArr)
	für i=1 zu UBound (curStateArr)
		Linie = curStateArr (i)
		wenn InStr (prevStateData, trimmen (Linie) u. vbNewLine), = 0 dann
			matchLine = FindUserChangeDelta (Linie, prevStateArr)
			wenn matchLine <> "" dann				
				changeResult = LogUserPropertiesChange (matchLine, Linie)
				wenn changeResult <> "" dann
					strResult = strResult u. changeResult
				beenden wenn
			beenden wenn
		beenden wenn
	zunächst
	
	wenn objFSO.FileExists (RESULT_FILE) dann
		gesetztes objResFile = objFSO.OpenTextFile (RESULT_FILE, 8)
	sonst
		gesetztes objResFile = objFSO.CreateTextFile (RESULT_FILE, 2)
	beenden wenn
	
	objResFile.WriteLine strSubject
	
	wenn strResult <> "" dann
		objResFile.WriteLine strResult
		NotifyByEmail strSubject, strResult
	sonst
		objResFile.WriteLine „keine Änderungen wurden überwacht.“
	beenden wenn
	objResFile.Close
	
Unterseeboot beenden

sub NotifyByEmail (strSubject, strResult)
	ToAddress verdunkeln
	MessageSubject verdunkeln
	MessageBody verdunkeln
	MessageAttachment verdunkeln

	Ol, ns, newMail verdunkeln

	ToAddress = „[email protected]“
	MessageSubject = strSubject
	MessageBody = strResult

	Ol = WScript.CreateObject („Outlook.Application“) einstellen
	Einstellen ns = ol.getNamespace („MAPI“)
	ns.log auf "", "", zutreffend, falsch
	newMail = ol.CreateItem (olMailItem) einstellen
	newMail.Subject = MessageSubject
	newMail.Body = MessageBody u. vbCrLf

	'die Empfänger, gerade im Fall validieren…
	myRecipient einstellen = ns.CreateRecipient (ToAddress)
	myRecipient.Resolve
	Wenn nicht myRecipient.Resolved dann
	   MsgBox „unbekannte Empfänger“
	Sonst
	   newMail.Recipients.Add (myRecipient)
	   newMail.Send
	Beenden wenn

	Ol einstellen = nichts

Unterseeboot beenden

Funktion LogUserPropertiesChange (matchLine, Linie)

	changeResult = falsch
	arr1 = spaltete auf sich (matchLine, „, ")
	arr2 = spaltete auf sich (Linie, „, ")
	
	userPropsArr = spaltete auf sich (USER_PROPS, „, ")
	strResult = „[“ u. arr1 (0) u. „]“ u. vbNewLine
	
	für i=1 zu UBound (userPropsArr)
		'spezielle Behandlung für GroupMembership
		wenn userPropsArr (i) = „GroupMembership“ dann
			wenn UBound (arr1) < i="" then="" strResult="strResult">= i und UBound (arr2) >= I dann
				wenn arr1 (i) <> arr2 (i) dann
					strLine = userPropsArr (i) u. „: “ u. vbNewLine
					strLine = strLine u. „vor =“ u. arr1 (i) u. vbNewLine
					strLine = strLine u. „nach =“ u. arr2 (i) u. vbNewLine
					
					strResult = strResult u. strLine u. vbNewLine
					changeResult = richten aus
				beenden wenn
			sonst
				wenn UBound (arr1) >= I und UBound (arr2) < i="" then="" strLine="userPropsArr(i)">= i dann
						strLine = userPropsArr (i) u. „: “ u. vbNewLine
						strLine = strLine u. „vor = kein Eigentum“ u. vbNewLine
						strLine = strLine u. „nach =“ u. arr2 (i) u. vbNewLine
						
						strResult = strResult u. strLine u. vbNewLine
						changeResult = richten aus
					beenden wenn
				beenden wenn
			beenden wenn
		beenden wenn
	zunächst 
	wenn changeResult = dann ausrichten
		LogUserPropertiesChange = strResult u. vbNewLine
	sonst
		LogUserPropertiesChange = ""
	beenden wenn
	
Funktion beenden

Funktion FindUserChangeDelta (Linie, prevStateArr)

	schwacher Benutzer, matchLine
	Benutzer = spaltete auf sich (Linie, „, ") (0)
	
	für jedes prevLine im prevStateArr
		wenn Ordnung (prevLine) <> "" dann
			wenn Spalte (prevLine, „, ") (0) = Benutzer dann
				matchLine = prevLine
				für herausnehmen
			beenden wenn
		beenden wenn
	zunächst

	FindUserChangeDelta = matchLine
Endenfunktion

VorLogUsersProps
	auf Störungszusammenfassung zunächst
	schwaches userProp
	objLog = objFSO.CreateTextFile (REPOSITORY_FILE, 2) einstellen
	
	objLog.WriteLine USER_PROPS
	
	für jedes objKey im usersPropsDict
		userProp = objKey
		für jedes objInnerKey im usersPropsDict (objKey)
			userProp = userProp u. „,“ u. usersPropsDict (objKey) (objInnerKey)
		zunächst
		
		objLog.WriteLine userProp
	zunächst
	
	objLog.Close
Endenunterseeboot

VorGetUsersProps
	schwacher Benutzer
	Const ADS_SCOPE_SUBTREE = 2

	objConnection = CreateObject („ADODB.Connection“) einstellen
	objCommand = CreateObject   („ADODB.Command“) einstellen
	objConnection.Provider = „ADsDSOObject“
	objConnection.Open „aktiver Verzeichnis-Versorger“
	Einstellen objCommand.ActiveConnection = objConnection

	objCommand.Properties („Seiten-Größe“) = 1000
	objCommand.Properties („Searchscope“) = ADS_SCOPE_SUBTREE
	
	objRootDSE = GetObject einstellen („LDAP: //RootDSE“)
	strDNSDomain = objRootDSE.Get („defaultNamingContext“)

	wenn ROOT_OU <> "" dann
		ldaproot = „LDAP: /“ u. ROOT_OU u. „,“ u. strDNSDomain
	sonst
		ldaproot = „LDAP: /“ u. strDNSDomain
	beenden wenn
		
	objCommand.CommandText = „AUSERWÄHLTES distinguishedName, sAMAccountName VON „“ u. ldaproot u. „“ WO objectCategory='user'"
	
	objRecordSet = objCommand.Execute einstellen

	Während nicht objRecordSet.EOF
		Benutzer = objRecordSet.Fields („sAMAccountName“). Wert
		
		wenn usersPropsDict.Exists (Benutzer) = falsch dann
			auf Störungszusammenfassung zunächst
			propsDict = CreateObject („Scripting.Dictionary“) einstellen
			usersPropsDict.Add Benutzer, propsDict
			ObjUser = GetObject einstellen („LDAP: /“ u. objRecordSet.Fields („distinguishedName“). Wert)
			propsDict.Add „AccountDisabled“, ObjUser.AccountDisabled
			propsDict.Add „AccountExpirationDate“, ObjUser.AccountExpirationDate
		beenden wenn
		
		objRecordSet.MoveNext
	WEnd 
	
	getUsersGroups
Endenunterseeboot

VorgetUsersGroups

	schwache Gruppe
	Const ADS_SCOPE_SUBTREE = 2

	objConnection = CreateObject („ADODB.Connection“) einstellen
	objCommand = CreateObject   („ADODB.Command“) einstellen
	objConnection.Provider = „ADsDSOObject“
	objConnection.Open „aktiver Verzeichnis-Versorger“
	Einstellen objCommand.ActiveConnection = objConnection

	objCommand.Properties („Seiten-Größe“) = 1000
	objCommand.Properties („Searchscope“) = ADS_SCOPE_SUBTREE
	
	objRootDSE = GetObject einstellen („LDAP: //RootDSE“)
	strDNSDomain = objRootDSE.Get („defaultNamingContext“)

	wenn ROOT_OU <> "" dann
		ldaproot = „LDAP: /“ u. ROOT_OU u. „,“ u. strDNSDomain
	sonst
		ldaproot = „LDAP: /“ u. strDNSDomain
	beenden wenn

	objCommand.CommandText = „AUSERWÄHLTES distinguishedName, sAMAccountName VON „“ u. ldaproot u. „“ WO objectCategory='group'"
	
	objRecordSet = objCommand.Execute einstellen
	
	Während nicht objRecordSet.EOF
		Gruppe = objRecordSet.Fields („distinguishedName“). Wert
		
		ObjGroup = GetObject einstellen („LDAP: /“ u. Gruppe)
		für jedes objMember in objGroup.Members
			wenn usersPropsDict.Exists (objmember.samaccountname) dann
				wenn usersPropsDict.Item (objmember.samaccountname). Existiert („groupMembership“) dann
					groupMembership = usersPropsDict.Item (objmember.samaccountname). Einzelteil („groupMembership“)
					groupMembership = groupMembership u. „; “ u. objGroup.samaccountname
					usersPropsDict.Item (objmember.samaccountname). Einzelteil („groupMembership“) = groupMembership
				sonst
					usersPropsDict.Item (objmember.samaccountname). „groupMembership“ addieren, objGroup.samaccountname
				beenden wenn
				
			beenden wenn			
		zunächst
		objRecordSet.MoveNext
	WEnd 
Unterseeboot beenden
Weitere Lösungen  
 
programming4us programming4us