Questione : In una base di dati, using un'applicazione di ColdFusion, devo assegnare i documenti ai soggetti del documento.

Base di dati: Assistente 2005 del ms SQL
Versione 8 di ColdFusion

Ciao. Sto lavorando a questa operazione per un istante ed ho raggiunto un punto a cui devo chiedere aiuto.

Operazione nel riassunto: In una base di dati, devo assegnare i documenti ai soggetti del documento.

Storia:
Il mese scorso, il gdemaria lo ha aiutato -- molto pazientemente -- per per costruire un'applicazione che permette che un utente upload e diriga i documenti in una base di dati. L'applicazione funziona perfettamente ed ho imparato una tonnellata mentre il gdemaria lo ha guidato nello sviluppo esso. L'applicazione permette che un utente generi un documento; upload le lime (documento, pdf, immagini) quel socio con quel documento e dirigere i meta dati che appartiene il documento.

Ora, devo assegnare i documenti uploaded ai soggetti del documento.

Operazione dettagliatamente:

Devo basicamente aggiungere alla mia applicazione la capacità di aggiornare una tabella: tbl_Document_Has_Topic.

Le mie tre tabelle di funzionamento sono:

tbl_CEP_Documents (questa tabella tiene i meta dati circa i documenti del CEP) PK: DocumentID
(questa tabella tiene una lista di tutti i soggetti del documento del CEP) il PK tbl_CEP_Document_Topic: DocumentTopicID
tbl_Document_Has_Topic (questa tabella collega i tbl_CEP_Documents a tbl_CEP_Document_Topic)

bisogni tbl_Document_Has_Topic soltanto due colonne:
DocumentID
DocumentTopicID

* DocumentID è il PK in tbl_CEP_Documents.
* DocumentTopicID è il PK in tbl_CEP_Document_Topic.

..... Se assegno un DocumentTopicID ad un DocumentID, quindi quel documento sarà assegnato ai soggetti corretti del documento.

Quella è la funzione di tbl_Document_Has_Topic: per per assegnare DocumentTopicID ad un DocumentID.

La mia operazione è di includere, nel mio documento pubblica l'interfaccia, un menu prescelto che permette che un utente scelga i soggetti del documento per assegnare ad un documento.

Ho aggiunto il menu prescelto. Vedere prego un esempio qui:

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

….Notare il menu prescelto “per assegnare questo documento ai soggetti del CEP„. Il menu prescelto collega semplicemente con i 24 soggetti possibili del documento del CEP. Così:

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

 
SELEZIONARE DocumentTopicID, DocumentTopic
Da tbl_CEP_Document_Topic
ORDINE da DocumentTopic
  
 
    

Assegnare questo documento ai soggetti del CEP
Scegliere almeno un soggetto. Per selezionare più di un soggetto, tenere la chiave del Ctrl e selezionare i soggetti con il cursore del mouse.



Quel menu prescelto funziona bene. Notare che quello nel menu prescelto ogni DocumentTopic è accoppiato con il relativo DocumentTopicID corretto.

Così, devo sviluppare una nuova domanda che gli aggiornamenti pospongono tbl_Document_Has_Topic, using le selezioni dal menu prescelto.

Dove disporre questa domanda e che forma la domanda prendere?

Un nuovo documento dovrà essere assegnato ai soggetti del documento; e, i documenti attuali dovranno ora ed allora cambiare i soggetti.

Nell'applicazione già ho domande che inseriscono un nuovo documento ed aggiorno un documento attuale. Devo modificare quelle domande esistenti, di modo che le domande aggiorneranno tbl_Document_Has_Topic con i valori adatti di DocumentTopicID e di DocumentID? Quello sembrerebbe come il senso farlo. E, dovrei generare un interno mi unisco (penso) per aggiornare la tabella, tbl_Document_Has_Topic.

Sono correttamente pensare circa questo?

Sono molto riconoscente per tutto il consiglio.

Aggiungo il mio codice di funzionamento.

Grazie come sempre.

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:



 





 


 



 
 
  
 
   
 


 


        









  
    
	
			  
	
    
    
			  
	


 
 
 
  NON SELEZIONARE “niente„ A PARTIRE dai tbl_CEP_Documents
  DOVE DocumentTitle =  
  E DocumentID  <> 
  
   
 
  
   
   
	
		   
	
    
      
   
    
    
    
    
				
    
  			  
				  tbl_CEP_Documents dell'AGGIORNAMENTO
				  REGOLARE   DocumentTitle = ,
					DocumentType = ,
					DocumentAuthor = ,
				    DocumentAbstract = ,
				    DocumentPublicationDate = ,
				    DateRecordModified =  
				  DOVE DocumentID =  
			



    
				 
    
    
	
				
					
				 INSERTO nei tbl_CEP_Documents
     					(
			            DocumentTitle,
            		    DocumentType,
                		DocumentAuthor,
		                DocumentAbstract,
        		        DocumentPublicationDate,
                		SSMA_TimeStamp
		                )
			     VALORI (
						  ,
						  ,
						  ,
						  ,
						  ,
		     			  
				         )         
					

		 





    
          selezionare il max (DocumentID) come identificazione
           Dai tbl_CEP_Documents
      


        






           
					      
    
    
    

    

    
          
				         
  
		    	
      			
			           
     			       
   			      

			
				    
			
            

			
			
			 INSERTO nei tbl_CEP_Files
     			(
                DocumentID,
                Nome di schedario,
				FileExtension,
				FileType,
				FileSize,
                isDeleted
                )
		     VALORI (
        		  
				  ,
				  ,
				  ,
				  ,
                  , 0
		           )         
				  
  
		     
  
           
              
               
           
         
					   
		         
    	   
       			tbl_CEP_Files dell'AGGIORNAMENTO
           		REGOLARE IsDeleted = 1
        		In DOVE FileID ()
      		




		    
					
                    
  
		
				     
                         
                    
    
    


    
    
        


			   
					   
					                
					        
					       	
					         CANCELLAZIONE dai tbl_CEP_Documents
					         DOVE DocumentID =  
					        
              
 					        
						 

	    
        
        
            
    		

  





       

     
     
  

  
  
  
		    
			




 
  
    
			  
			  
				    selezionare * a partire dai tbl_CEP_Documents dove DocumentID = #val (form.DocumentID) #
			  

  			
			       
			  
    
	




 
			 
			 
#variables.error#

#FormTitle#

SELEZIONARE DocumentTopicID, DocumentTopic Da tbl_CEP_Document_Topic ORDINE da DocumentTopic

Documento identificazione: #URL.DocumentID#

Titolo del documento

Tipo di documento

Autore del documento

Assegnare questo documento ai soggetti del CEP
Scegliere almeno un soggetto. Per selezionare più di un soggetto, tenere la chiave del Ctrl e selezionare i soggetti con il cursore del mouse.

Documentare l'estratto

Data di pubblicazione (forma MM/DD/YYYY di uso)

Sotto, vedere prego le lime attualmente connesse con il documento l'identificazione #URL.DocumentID#. Se non ci sono lime connesse con il documento, quindi nessuna lima comparirà sotto. Avete l'opzione per upload una lima (pdf, documento, lima di immagine), che assocerà la lima con il documento identificazione #URL.DocumentID#.

selezionare * a partire dai tbl_CEP_files in cui DocumentID = #val (form.DocumentID) # e = 0 isDeleted
Nome di schedario Cancellazione
#getFiles.FileName#

Nessuna lima è attaccata a questo documento.


Il tasto, sotto, cancella questo documento, la relativa annotazione di base di dati e tutte le lime collegate. Uso con attenzione.

Risposta : In una base di dati, using un'applicazione di ColdFusion, devo assegnare i documenti ai soggetti del documento.

>
> selezionare il max (DocumentID) come identificazione
>           Dai tbl_CEP_Documents
>


Se stiate usando quella domanda per richiamare l'identificazione di un documento recentemente inserito… non fare; -) In un ambiente con molti utenti simultanei è probabile restituire l'identificazione errata  

Il migliore senso ottenere il valore di una colonna incrementante auto è di usare l'attributo “di risultato„ di cfquery di CF8.  Dopo che un INSERTO, CF popola la struttura di risultato con l'identificazione del nuovo record. Il nome chiave varia secondo il vostro tipo di db

Esempio: Per una base di dati del ms SQL il nome chiave è IDENTITYCOL

result= " newDocument " >
   INSERTO nei tbl_CEP_Documents (… colonne….). VALORI (......)



     Il nuovo documentID è #newDocument.IDENTITYCOL#
cfoutput>


> Già ho domande che inseriscono un nuovo documento ed aggiorno un documento attuale…
> Faccio devo modificare quelle domande esistenti

Soltanto la domanda dell'INSERTO, in modo da voi può richiamare il DocumentID recentemente inserito.  Usare appena l'attributo “di risultato„ come precedentemente descritto.  Con un AGGIORNAMENTO, già avete l'identificazione (IE #form.DocumentID#)

Poiché state modificando una tabella separata, usereste un cfquery separato.  Per i nuovi documenti, in primo luogo fare l'INSERTO nei tbl_CEP_Documents.  Una volta che avete il nuovo documentID, potete usarli per inserire i soggetti selezionati nella vostra seconda tabella.

Poiché le identificazioni di soggetto vengono dal vostro tbl_CEP_Document_Topic, potete usare un PRESCELTO per afferrare aggiungete tutti soggetti selezionati da quella tabella ed inserite i valori in tbl_Document_Has_Topic in uno siete caduto picchiata.  

Per gli entrambi inserti ed aggiornamenti, essere sicuro spostare le due domande in una transazione.  Così o entrambe le domande riescono o entrambe vengono a mancare insieme….

(Ancora, sto presupponendo che il ms SQL è la base di dati.)

       
       

    INSERTO nei tbl_CEP_Documents (… colonne….). VALORI (......)


           
                   INSERTO in tbl_Document_Has_Topic (DocumentID, DocumentTopicID)
                  PRESCELTO
                   >
                  , DocumentTopicID
                  Da tbl_CEP_Document_Topic
                 DOVE DocumentTopicID DENTRO (
                      list= " allineare " >
                  )
               

       


Gli aggiornamenti sono un poco differenti. Più a tale proposito in minuto.
 
Altre soluzioni  

 
programming4us programming4us