Cuestión : ¿Cómo creo una “carpeta de archivo” en una forma del acceso?

Deja para decirme están utilizando una forma del acceso. el
I tiene diversas firmas que tengan varia información en las tablas. También estas firmas tendrán algunos archivos que se relacionen con ellos en la impulsión de c (los archivos del pdf, sobresalen archivos). Estoy buscando la exhibición los iconos de esos archivos en el acceso. Tan cuando el usuario está observando cierta firma, puede tener acceso a los archivos de la forma. el

I visioning la carpeta pudo abrir automáticamente una ventana del archivo (ventana regular del archivo en las ventanas) que demuestra los archivos relacionados con ése firma. ¿

Is esto realizable?
class= del

Respuesta : ¿Cómo creo una “carpeta de archivo” en una forma del acceso?

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:
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 = “nombre, AccountDisabled, AccountExpirationDate, GroupMembership”

Fijar el usersPropsDict = CreateObject (“Scripting.Dictionary”)
fijar el objFSO = el createobject (“scripting.filesystemobject”)

GetUsersProps

si objFSO.FileExists (REPOSITORY_FILE) entonces
	objFSO.CopyFile REPOSITORY_FILE, REPOSITORY_COMPARE_FILE, VERDAD

	LogUsersProps
	CheckUserChanges

	LogUsersProps
terminar si

wscript.echo “terminan”

función CheckUsersStatus (prevStateArr, curStateArr)

	strResult dévil
	Fijar el usersDict = CreateObject (“Scripting.Dictionary”)
	
	para cada línea en prevStateArr
		si "" del ajuste (línea <> ) entonces
			el usuario = partió (línea, “, ") (0)
			usuario de usersDict.Add, 0
		terminar si
	después
	
	para cada línea en curStateArr
		si "" del ajuste (línea <> ) entonces
			el usuario = partió (línea, “, ") (0)
			si usersDict.Exists (usuario) entonces
				usersDict.Item (usuario) = 2
			
				usuario de usersDict.Add, 1
			terminar si
		terminar si
	después
	
	para cada llave en usersDict
		seleccionar el caso usersDict.Item (la llave) 
			caso 0: suprimieron al 'usuario
				suprimieron el strResult = el strResult y al “usuario [” y la llave y “]” y vbNewLine
			caso 1: 'nuevo usuario creado
				crearon el strResult = el strResult y al “nuevo usuario [” y la llave y “]” y vbNewLine
			caso 2: no cambiaron al 'usuario
		extremo selecto
	después
	CheckUsersStatus = strResult
función del final

CheckUserChanges secundario

	curStateData = objFSO.OpenTextFile (REPOSITORY_FILE, 1).ReadAll
	prevStateData = objFSO.OpenTextFile (REPOSITORY_COMPARE_FILE, 1).ReadAll
	el curStateArr = partió (curStateData, el vbNewLine)
	el prevStateArr = partió (prevStateData, el vbNewLine)
	
	el strSubject = “usuario del ANUNCIO cambia el registro del resultado -” y fecha y ““y hora
	
	strResult = CheckUsersStatus (prevStateArr, curStateArr)
	para i=1 a UBound (curStateArr)
		línea = curStateArr (i)
		si InStr (el prevStateData, ajusta (línea) y vbNewLine) = 0 entonces
			matchLine = FindUserChangeDelta (línea, prevStateArr)
			si "" <> del matchLine entonces				
				changeResult = LogUserPropertiesChange (matchLine, línea)
				si "" <> del changeResult entonces
					strResult = strResult y changeResult
				terminar si
			terminar si
		terminar si
	después
	
	si objFSO.FileExists (RESULT_FILE) entonces
		objResFile determinado = objFSO.OpenTextFile (RESULT_FILE, 8)
	
		objResFile determinado = objFSO.CreateTextFile (RESULT_FILE, 2)
	terminar si
	
	strSubject de objResFile.WriteLine
	
	si "" <> del strResult entonces
		strResult de objResFile.WriteLine
		strSubject de NotifyByEmail, strResult
	
		objResFile.WriteLine “ningunos cambios fueron supervisados.”
	terminar si
	objResFile.Close
	
terminar el submarino

sub NotifyByEmail (strSubject, el strResult)
	Amortiguar ToAddress
	Amortiguar MessageSubject
	Amortiguar MessageBody
	Amortiguar MessageAttachment

	Amortiguar el ol, ns, newMail

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

	Fijar el ol = WScript.CreateObject (“Outlook.Application”)
	Fijar ns = ol.getNamespace (“MAPI”)
	ns.log en el "", "", verdad, falso
	Fijar el newMail = ol.CreateItem (el olMailItem)
	newMail.Subject = MessageSubject
	newMail.Body = MessageBody y vbCrLf

	'validar a recipiente, apenas en caso…
	Fijar myRecipient = ns.CreateRecipient (ToAddress)
	myRecipient.Resolve
	Si no myRecipient.Resolved entonces
	   MsgBox “recipiente desconocido”
	
	   newMail.Recipients.Add (myRecipient)
	   newMail.Send
	Terminar si

	Fijar el ol = nada

terminar el submarino

función LogUserPropertiesChange (matchLine, línea)

	changeResult = falso
	arr1 = partió (matchLine, “, ")
	arr2 = partió (línea, “, ")
	
	el userPropsArr = partió (USER_PROPS, “, ")
	strResult = “[” y arr1 (0) y “]” y vbNewLine
	
	para i=1 a UBound (userPropsArr)
		'dirección especial para GroupMembership
		si userPropsArr (i) = “GroupMembership” entonces
			si UBound (arr1) < i="" then="" strResult="strResult">= i y >= i de UBound (arr2) entonces
				si arr1 (i) <> arr2 (i) entonces
					strLine = userPropsArr (i) y “: ” y vbNewLine
					strLine = strLine y “antes =” y arr1 (i) y vbNewLine
					strLine = strLine y “después de =” y arr2 (i) y vbNewLine
					
					strResult = strResult y strLine y vbNewLine
					el changeResult = verdad
				terminar si
			
				si >= i de UBound (arr1) y UBound (arr2) < i="" then="" strLine="userPropsArr(i)">= i entonces
						strLine = userPropsArr (i) y “: ” y vbNewLine
						strLine = strLine y “antes = ninguna característica” y vbNewLine
						strLine = strLine y “después de =” y arr2 (i) y vbNewLine
						
						strResult = strResult y strLine y vbNewLine
						el changeResult = verdad
					terminar si
				terminar si
			terminar si
		terminar si
	después 
	si el changeResult = entonces verdad
		LogUserPropertiesChange = strResult y vbNewLine
	
		LogUserPropertiesChange = ""
	terminar si
	
terminar la función

función FindUserChangeDelta (línea, prevStateArr)

	usuario dévil, matchLine
	el usuario = partió (línea, “, ") (0)
	
	para cada prevLine en prevStateArr
		si "" del ajuste (prevLine <> ) entonces
			si fractura (prevLine, “, ") (0) = usuario entonces
				matchLine = prevLine
				salir para
			terminar si
		terminar si
	después

	FindUserChangeDelta = matchLine
función del final

LogUsersProps secundario
	en curriculum vitae del error después
	userProp dévil
	fijar el objLog = objFSO.CreateTextFile (REPOSITORY_FILE, 2)
	
	objLog.WriteLine USER_PROPS
	
	para cada objKey en usersPropsDict
		userProp = objKey
		para cada objInnerKey en el usersPropsDict (objKey)
			userProp = userProp y “,” y usersPropsDict (objKey) (objInnerKey)
		después
		
		userProp de objLog.WriteLine
	después
	
	objLog.Close
submarino del extremo

GetUsersProps secundario
	usuario dévil
	Const ADS_SCOPE_SUBTREE = 2

	Fijar el objConnection = CreateObject (“ADODB.Connection”)
	Fijar el objCommand =   CreateObject (“ADODB.Command”)
	objConnection.Provider = “ADsDSOObject”
	objConnection.Open “abastecedor activo del directorio”
	Fijar objCommand.ActiveConnection = objConnection

	objCommand.Properties (“tamaño de página”) = 1000
	objCommand.Properties (“Searchscope”) = ADS_SCOPE_SUBTREE
	
	Fijar el objRootDSE = GetObject (“LDAP: //RootDSE”)
	strDNSDomain = objRootDSE.Get (“defaultNamingContext”)

	si "" <> de ROOT_OU entonces
		ldaproot = “LDAP: /” y ROOT_OU y “,” y strDNSDomain
	
		ldaproot = “LDAP: /” y strDNSDomain
	terminar si
		
	objCommand.CommandText = “distinguishedName SELECTO, sAMAccountName DE “” y ldaproot y “” DONDE objectCategory='user'"
	
	Fijar el objRecordSet = objCommand.Execute

	Mientras que no objRecordSet.EOF
		usuario = objRecordSet.Fields (“sAMAccountName”). Valor
		
		si usersPropsDict.Exists (usuario) = falso entonces
			en curriculum vitae del error después
			Fijar el propsDict = CreateObject (“Scripting.Dictionary”)
			usuario de usersPropsDict.Add, propsDict
			Fijar ObjUser = GetObject (“LDAP: /” y objRecordSet.Fields (“distinguishedName”). Valor)
			propsDict.Add “AccountDisabled”, ObjUser.AccountDisabled
			propsDict.Add “AccountExpirationDate”, ObjUser.AccountExpirationDate
		terminar si
		
		objRecordSet.MoveNext
	WEnd 
	
	getUsersGroups
submarino del extremo

getUsersGroups secundarios

	grupo dévil
	Const ADS_SCOPE_SUBTREE = 2

	Fijar el objConnection = CreateObject (“ADODB.Connection”)
	Fijar el objCommand =   CreateObject (“ADODB.Command”)
	objConnection.Provider = “ADsDSOObject”
	objConnection.Open “abastecedor activo del directorio”
	Fijar objCommand.ActiveConnection = objConnection

	objCommand.Properties (“tamaño de página”) = 1000
	objCommand.Properties (“Searchscope”) = ADS_SCOPE_SUBTREE
	
	Fijar el objRootDSE = GetObject (“LDAP: //RootDSE”)
	strDNSDomain = objRootDSE.Get (“defaultNamingContext”)

	si "" <> de ROOT_OU entonces
		ldaproot = “LDAP: /” y ROOT_OU y “,” y strDNSDomain
	
		ldaproot = “LDAP: /” y strDNSDomain
	terminar si

	objCommand.CommandText = “distinguishedName SELECTO, sAMAccountName DE “” y ldaproot y “” DONDE objectCategory='group'"
	
	Fijar el objRecordSet = objCommand.Execute
	
	Mientras que no objRecordSet.EOF
		grupo = objRecordSet.Fields (“distinguishedName”). Valor
		
		Fijar ObjGroup = GetObject (“LDAP: /” y grupo)
		para cada objMember en objGroup.Members
			si usersPropsDict.Exists (objmember.samaccountname) entonces
				si usersPropsDict.Item (objmember.samaccountname). Entonces existe (“groupMembership”)
					groupMembership = usersPropsDict.Item (objmember.samaccountname). Artículo (“groupMembership”)
					groupMembership = groupMembership y “; ” y objGroup.samaccountname
					usersPropsDict.Item (objmember.samaccountname). Artículo (“groupMembership”) = groupMembership
				
					usersPropsDict.Item (objmember.samaccountname). Agregar el “groupMembership”, objGroup.samaccountname
				terminar si
				
			terminar si			
		después
		objRecordSet.MoveNext
	WEnd 
terminar el submarino
Otras soluciones  
 
programming4us programming4us