Cuestión : En una base de datos, usar un uso de ColdFusion, necesito asignar documentos a los asuntos del documento.

Base de datos: Servidor 2005 del ms SQL
Versión 8 de ColdFusion

Hola. He estado trabajando en esta tarea durante algún tiempo y he alcanzado un punto en el cual necesito pedir ayuda.

Tarea en resumen: En una base de datos, necesito asignar documentos a los asuntos del documento.

Historia:
El mes pasado, el gdemaria me ayudó -- muy paciente -- para construir un uso que permite que un usuario cargue y maneje documentos en una base de datos. El uso trabaja perfectamente y aprendí una tonelada mientras que el gdemaria me dirigió en la construcción de ella. El uso permite que un usuario cree un documento; cargar los archivos (doc., pdf, imágenes) ese asociado con ese documento, y manejar los meta datos que pertenezca al documento.

Ahora, necesito asignar documentos cargados a los asuntos del documento.

Tarea detalladamente:

Necesito básicamente agregar a mi uso la capacidad de poner al día una tabla: tbl_Document_Has_Topic.

Mis tres tablas de funcionamiento son:

tbl_CEP_Documents (esta tabla lleva a cabo meta datos sobre documentos del CEP) PK: DocumentID
(esta tabla lleva a cabo una lista de todos los asuntos del documento del CEP) PK tbl_CEP_Document_Topic: DocumentTopicID
tbl_Document_Has_Topic (esta tabla se relaciona tbl_CEP_Documents con tbl_CEP_Document_Topic)

necesidades tbl_Document_Has_Topic solamente dos columnas:
DocumentID
DocumentTopicID

* DocumentID es PK en tbl_CEP_Documents.
* DocumentTopicID es PK en tbl_CEP_Document_Topic.

..... Si asigno un DocumentTopicID a un DocumentID, después ese documento será asignado a los asuntos correctos del documento.

Ésa es la función de tbl_Document_Has_Topic: para asignar DocumentTopicID a un DocumentID.

Mi tarea es incluir, en mi documento corrige el interfaz, un menú selecto que permita que un usuario elija asuntos del documento para asignar a un documento.

Agregué el menú selecto. Ver por favor un ejemplo aquí:

http://ebwebwork.com/cep/admin/insert_update.cfm?DocumentID=27

….Notar el menú selecto “para asignar este documento a los asuntos del CEP”. El menú selecto coloca simplemente con los 24 asuntos posibles del documento del CEP. Así:

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:

 
SELECCIONAR DocumentTopicID, DocumentTopic
De tbl_CEP_Document_Topic
ORDEN de DocumentTopic
  
 
    

Asignar este documento a los asuntos del CEP
Elegir por lo menos un asunto. Para seleccionar más de un asunto, llevar a cabo la llave del Ctrl y seleccionar los asuntos con el cursor del ratón.



Ese menú selecto trabaja bien. Notar que eso en el menú selecto cada DocumentTopic está apareado con su DocumentTopicID correcto.

Así pues, necesito construir una nueva pregunta que las actualizaciones tabulan tbl_Document_Has_Topic, usar las selecciones del menú selecto.

¿Dónde poner esta pregunta, y qué forma la pregunta tomar?

Un nuevo documento necesitará ser asignado a los asuntos del documento; y, los documentos existentes necesitarán ahora y después cambiar asuntos.

En el uso tengo ya preguntas que inserten un nuevo documento, y pongo al día un documento existente. ¿Necesito modificar esas preguntas existentes, de modo que las preguntas pongan al día tbl_Document_Has_Topic con los valores apropiados de DocumentID y de DocumentTopicID? Eso parecería como la manera de hacerla. Y, necesitaría crear un interno ensamblo (pienso) para poner al día la tabla, tbl_Document_Has_Topic.

¿Estoy pensamiento sobre esto correctamente?

Soy muy agradecido para cualquier consejo.

Añado mi código de trabajo.

Gracias como siempre.

Eric B
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:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366:
367:
368:
369:
370:
371:
372:
373:
374:
375:
376:
377:
378:
379:
380:
381:
382:
383:
384:
385:
386:
387:
388:
389:
390:
391:
392:
393:
394:
395:
396:
397:
398:
399:
400:
401:
402:
403:
404:
405:
406:
407:
408:
409:
410:
411:
412:
413:
414:
415:
416:
417:
418:
419:
420:
421:
422:
423:
424:
425:
426:
427:
428:
429:
430:
431:
432:
433:
434:
435:
436:
437:
438:
439:
440:
441:
442:
443:
444:
445:
446:
447:
448:
449:
450:
451:
452:
453:
454:
455:
456:
457:
458:
459:
460:
461:
462:
463:
464:
465:
466:
467:
468:
469:


 





 


 



 
 
  
 
   
 


 


        









  
    
	
			  
	
    
    
			  
	


 
 
 
  NO SELECCIONAR “nada” de tbl_CEP_Documents
  DONDE DocumentTitle =  
  Y DocumentID  <> 
  
   
 
  
   
   
	
		   
	
    
      
   
    
    
    
    
				
    
  			  
				  tbl_CEP_Documents de la ACTUALIZACIÓN
				  FIJAR   DocumentTitle = ,
					DocumentType = ,
					DocumentAuthor = ,
				    DocumentAbstract = ,
				    DocumentPublicationDate = ,
				    DateRecordModified =  
				  DONDE DocumentID =  
			



    
				 
    
    
	
				
					
				 PARTE MOVIBLE EN tbl_CEP_Documents
     					(
			            DocumentTitle,
            		    DocumentType,
                		DocumentAuthor,
		                DocumentAbstract,
        		        DocumentPublicationDate,
                		SSMA_TimeStamp
		                )
			     VALORES (
						  ,
						  ,
						  ,
						  ,
						  ,
		     			  
				         )         
					

		 





    
          seleccionar max (DocumentID) como identificación
           De tbl_CEP_Documents
      


        






           
					      
    
    
    

    

    
          
				         
  
		    	
      			
			           
     			       
   			      

			
				    
			
            

			
			
			 PARTE MOVIBLE EN tbl_CEP_Files
     			(
                DocumentID,
                Nombre de fichero,
				FileExtension,
				Tipo de archivo,
				FileSize,
                isDeleted
                )
		     VALORES (
        		  
				  ,
				  ,
				  ,
				  ,
                  , 0
		           )         
				  
  
		     
  
           
              
               
           
         
					   
		         
    	   
       			tbl_CEP_Files de la ACTUALIZACIÓN
           		FIJAR IsDeleted = 1
        		En DONDE FileID ()
      		




		    
					
                    
  
		
				     
                         
                    
    
    


    
    
        


			   
					   
					                
					        
					       	
					         CANCELACIÓN de tbl_CEP_Documents
					         DONDE DocumentID =  
					        
              
 					        
						 

	    
        
        
            
    		

  





       

     
     
  

  
  
  
		    
			




 
  
    
			  
			  
				    seleccionar * de los tbl_CEP_Documents donde DocumentID = #val (form.DocumentID) #
			  

  			
			       
			  
    
	




 
			 
			 
#variables.error#

#FormTitle#

SELECCIONAR DocumentTopicID, DocumentTopic De tbl_CEP_Document_Topic ORDEN de DocumentTopic

Documento identificación: #URL.DocumentID#

Título del documento

Tipo de documento

Autor del documento

Asignar este documento a los asuntos del CEP
Elegir por lo menos un asunto. Para seleccionar más de un asunto, llevar a cabo la llave del Ctrl y seleccionar los asuntos con el cursor del ratón.

Documentar el extracto

Fecha de publicación (forma MM/DD/YYYY del uso)

Debajo, ver por favor los archivos asociados actual al documento identificación #URL.DocumentID#. Si no hay archivos asociados al documento, después ningunos archivos aparecerán abajo. Usted tiene la opción para cargar un archivo (pdf, doc., archivo de imagen), que asociará el archivo al documento identificación #URL.DocumentID#.

seleccionar * de los tbl_CEP_files donde DocumentID = #val (form.DocumentID) # y = 0 isDeleted
Nombre de fichero Cancelación
#getFiles.FileName#

No se ata ningunos archivos a este documento.


El botón, abajo, suprime este documento, su expediente de base de datos, y todos los archivos asociados. Uso cuidadosamente.

Respuesta : En una base de datos, usar un uso de ColdFusion, necesito asignar documentos a los asuntos del documento.

>
> seleccionar max (DocumentID) como identificación
>           De tbl_CEP_Documents
>


Si usted está utilizando esa pregunta para recuperar la identificación de un documento nuevamente insertado… no hacer; -) En un ambiente con muchos usuarios concurrentes es probable volver la identificación incorrecta  

La mejor manera de conseguir el valor de una columna de incremento auto es utilizar cualidad del “resultado” del cfquery de CF8.  Después de que un PARTE MOVIBLE, CF pueble la estructura del resultado con la identificación del nuevo récord. El nombre dominante varía dependiendo de su tipo del DB

Ejemplo: Para una base de datos del ms SQL el nombre dominante es IDENTITYCOL

result= " newDocument " >
   PARTE MOVIBLE EN tbl_CEP_Documents (… columnas….). VALORES (......)



     El nuevo documentID es #newDocument.IDENTITYCOL#
cfoutput>


> Tengo ya preguntas que inserten un nuevo documento, y pongo al día un documento existente…
> Hago necesito modificar esas preguntas existentes

Solamente la pregunta del PARTE MOVIBLE, así que usted pueden recuperar el DocumentID nuevamente insertado.  Apenas utilizar la cualidad del “resultado” como se describe anteriormente.  Con una ACTUALIZACIÓN, usted tiene ya la identificación (IE #form.DocumentID#)

Puesto que usted está modificando una tabla separada, usted utilizaría un cfquery separado.  Para los nuevos documentos, primero hacer el PARTE MOVIBLE en tbl_CEP_Documents.  Una vez que usted tiene el nuevo documentID, usted puede utilizarlo para insertar los asuntos seleccionados en su segunda tabla.

Puesto que las identificaciones del asunto vienen de su tbl_CEP_Document_Topic, usted puede utilizar un SELECTO para asir agrega todos los asuntos seleccionados de esa tabla, e inserta los valores en tbl_Document_Has_Topic de una sola vez.  

Para los ambos los partes movibles y actualizaciones, estar seguro de envolver las dos preguntas en una transacción.  O ambas preguntas tienen éxito tan o ambas fallan… juntas.

(Una vez más estoy asumiendo que el ms SQL es la base de datos.)

       
       

    PARTE MOVIBLE EN tbl_CEP_Documents (… columnas….). VALORES (......)


           
                   PARTE MOVIBLE EN tbl_Document_Has_Topic (DocumentID, DocumentTopicID)
                  SELECTO
                   >
                  , DocumentTopicID
                  De tbl_CEP_Document_Topic
                 DONDE DocumentTopicID ADENTRO (
                      list= " verdad " >
                  )
               

       


Las actualizaciones son un poco diferentes. Más sobre eso en un minuto.
 
Otras soluciones  

 
programming4us programming4us