Fråga : I en databas using en ColdFusion applikation, jag behöver att tilldela dokument till dokumentämnen.

Databas: Server 2005 för ms SQL
ColdFusion version 8

Hälsningar. Jag har varit funktionsduglig på denna uppgift för ett tag och har nett en peka som jag behöver att fråga på för hjälp.

Uppgift i sammandrag: I en databas jag behöver att tilldela dokument till dokumentämnen.

Historia:
Den sist månaden gdemaria hjälpte mig -- mycket tålmodigt -- till tankeskapelsen en applikation som låter en användare upload och klara av dokument i en databas. Applikationen fungerar perfekt, och lärt I en tonstundgdemaria vägledde mig i byggnad det. Applikationen låter en användare skapa ett dokument; uploaden sparar (DOC, PDF, avbildar), den bundsförvant med det dokument och rättametadata som gäller till dokumentet.

Nu jag behöver att tilldela uploaded dokument till dokumentämnen.

Uppgiften specificerar in:

I stort jag behöver att tillfoga till min applikation kapaciteten att uppdatera en bordlägga: tbl_Document_Has_Topic.

Min tre som arbetet bordlägger, är:

tbl_CEP_Documents (detta bordlägger hållmetadata om CEPdokument), PK: DocumentID
tbl_CEP_Document_Topic (detta bordlägger håll för ett CEPdokument för lista allra ämnen), PK: DocumentTopicID
tbl_Document_Has_Topic (detta bordlägger förbinder tbl_CEP_Documents till tbl_CEP_Document_Topic),

tbl_Document_Has_Topic behov endast två kolonner:
DocumentID
DocumentTopicID

* DocumentID är PKEN i tbl_CEP_Documents.
* DocumentTopicID är PKEN i tbl_CEP_Document_Topic.

....., Om jag tilldelar en DocumentTopicID till en DocumentID, då det dokument ska tilldelas till de korrekta dokumentämnena.

Det är fungera av tbl_Document_Has_Topic: att att tilldela DocumentTopicID till en DocumentID.

Min uppgift är att inkludera, i mitt dokument redigerar har kontakt, en vald meny som låter en användare välja dokumentämnen för att tilldela till ett dokument.

Jag tillfogade den valda menyn. Behaga ser ett exempel här:

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

….,Märka den valda menyn ”för att tilldela detta dokument till CEPämnen”. Den valda menyn kretsar enkelt till och med de 24 ämnena för möjlighetCEPdokumentet. Således:

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

 
VÄLJ DocumentTopicID, DocumentTopic
FRÅN tbl_CEP_Document_Topic
BESTÄLLA VID DocumentTopic
  
 
    

Tilldela detta dokument till CEPämnen
Välj åtminstone ett ämne. Rym Ctrlen nyckel- och valda ämnen med musmarkören att välja mer än ett ämne.



Den valda meny fungerar väl. Märka det i den valda menyn som varje DocumentTopic paras med dess korrekta DocumentTopicID.

Så jag behöver att bygga en ny query, som uppdateringar bordlägger tbl_Document_Has_Topic, using valen från den valda menyn.

Var att förlägga denna query och vad bildar queryen att ta?

Ett nytt dokument ska behov att tilldelas till dokumentämnen; och existerande dokument ska behov att ändra ämnen nu och därefter.

I applikationen jag har redan queries, som sätter in ett nytt dokument, och uppdaterar ett existerande dokument. Jag behöver att ändra de existerande queries, så att de ska queriesna uppdaterar tbl_Document_Has_Topic med anslår DocumentID, och DocumentTopicID värderar? Skulle det verkar lik långt för att göra den. Och jag skulle behov att skapa ett inre sammanfogar (I-funderare) för att uppdatera bordlägga som var tbl_Document_Has_Topic.

Förmiddag mig som är tänkande härom korrekt?

Förmiddag som I mycket är tacksam för någon rådgivning.

Jag fästar mitt arbete kodifierar.

Tacka dig som alltid.

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:


 





 


 



 
 
  
 
   
 


 


        









  
    
	
			  
	
    
    
			  
	


 
 
 
  VÄLJ ”ingenting” FRÅN tbl_CEP_Documents
  VAR DocumentTitle =  
  OCH DocumentID  <> 
  
   
 
  
   
   
	
		   
	
    
      
   
    
    
    
    
				
    
  			  
				  UPPDATERINGtbl_CEP_Documents
				  FASTSTÄLLDA   DocumentTitle = ,
					DocumentType = ,
					DocumentAuthor = ,
				    DocumentAbstract = ,
				    DocumentPublicationDate = ,
				    DateRecordModified =  
				  VAR DocumentID =  
			



    
				 
    
    
	
				
					
				 MELLANLÄGG IN I tbl_CEP_Documents
     					(
			            DocumentTitle,
            		    DocumentType,
                		DocumentAuthor,
		                DocumentAbstract,
        		        DocumentPublicationDate,
                		SSMA_TimeStamp
		                )
			     VÄRDERAR (
						  ,
						  ,
						  ,
						  ,
						  ,
		     			  
				         )         
					

		 





    
          välj max (DocumentID) som LEGITIMATION
           FRÅN tbl_CEP_Documents
      


        






           
					      
    
    
    

    

    
          
				         
  
		    	
      			
			           
     			       
   			      

			
				    
			
            

			
			
			 MELLANLÄGG IN I tbl_CEP_Files
     			(
                DocumentID,
                FileName,
				FileExtension,
				FileType,
				FileSize,
                isDeleted
                )
		     VÄRDERAR (
        		  
				  ,
				  ,
				  ,
				  ,
                  , 0
		           )         
				  
  
		     
  
           
              
               
           
         
					   
		         
    	   
       			UPPDATERINGtbl_CEP_Files
           		FASTSTÄLLDA IsDeleted = 1
        		VAR FileID i ()
      		




		    
					
                    
  
		
				     
                         
                    
    
    


    
    
        


			   
					   
					                
					        
					       	
					         BORTTAGNINGS FRÅN tbl_CEP_Documents
					         VAR DocumentID =  
					        
              
 					        
						 

	    
        
        
            
    		

  





       

     
     
  

  
  
  
		    
			




 
  
    
			  
			  
				    välj * från tbl_CEP_Documents var DocumentID = #val (form.DocumentID) nr.
			  

  			
			       
			  
    
	




 
			 
			 
#variables.error#

#FormTitle#

VÄLJ DocumentTopicID, DocumentTopic FRÅN tbl_CEP_Document_Topic BESTÄLLA VID DocumentTopic

DokumentLEGITIMATION: #URL.DocumentID#

Dokumenttitel

Dokumenttyp

Dokumentförfattare

Tilldela detta dokument till CEPämnen
Välj åtminstone ett ämne. Rym Ctrlen nyckel- och valda ämnen med musmarkören att välja mer än ett ämne.

Dokumentera abstrakt begrepp

Publikationen daterar (bruk bildar MM/DD/YYYY),

Behaga ser att sparar för närvarande tillhörande med dokumentLEGITIMATIONEN #URL.DocumentID#, nedanfört. Om det finns inget sparar tillhörande med dokumentet, då inget sparar ska verkar nedanfört. Du har alternativet som upload en spara (PDF, DOC, avbildar sparar), som ska bundsförvanten spara med dokumentLEGITIMATIONEN #URL.DocumentID#.

välj * från tbl_CEP_files var DocumentID = #val (form.DocumentID) nr. och isDeleted = 0
Spara - namnge Borttagnings
#getFiles.FileName#

Inget sparar fästas till detta dokument.


Knäppas, det nedanfört, borttagnings detta dokument, dess databasrekord och all tillhörande sparar. Bruk försiktigt.

Svar : I en databas using en ColdFusion applikation, jag behöver att tilldela dokument till dokumentämnen.

>
> välj max (DocumentID) som LEGITIMATION
>           FRÅN tbl_CEP_Documents
>


Om du använder den query för att hämta LEGITIMATIONEN av ett nyligen insatt dokument…, gör inte; -) I en miljö med samtidiga användare för en radda det är rimligt att gå felIDet tillbaka  

Det bäst långt som får värdera av en auto öka kolonn, är att använda attribut för CF8'S-cfquery”resultat”.  Strukturera med den nya rekord- LEGITIMATIONEN, efter ett MELLANLÄGG, CF har befolkat resultatet. Det nyckel- känt varierar beroende av din db-typ

Exempel: För en databas för ms SQL det nyckel- känt är IDENTITYCOL

result= " newDocument " >
   MELLANLÄGG IN I tbl_CEP_Documents (… kolonner….,). VÄRDERAR (......)



     Den nya documentIDen är #newDocument.IDENTITYCOL#
cfoutput>


> Jag har redan queries, som sätter in ett nytt dokument, och uppdaterar ett existerande dokument…,
> Gör jag behöver att ändra de existerande queries

Endast MELLANLÄGGSqueryen, så du kan hämta den nyligen insatta DocumentIDen.  Använd precis ”det resultat” attribut enligt ovan.  Med en UPPDATERING du har redan LEGITIMATIONEN (ie #form.DocumentID#)

Bordlägga, dig skulle bruk en separat cfquery, sedan du ändrar ett separat.  Gör först MELLANLÄGGET in i tbl_CEP_Documents för nya dokument.  När du har den nya documentIDen, du kan använda den för att sätta in de utvalda ämnena in i ditt understöder bordlägger.

Sedan ämneIDen kommer från ditt tbl_CEP_Document_Topic, du kan använda ett VALT till hastigt grepp tillfogar alla av utvalda ämnen från det bordlägger och sätter in värderar in i tbl_Document_Has_Topic i ett grymt nedslag.  

Var säker till sjalen de två queriesna i en transaktion för de båda mellanläggen och uppdateringarna.  Så endera båda queries lyckas, eller båda missar… tillsammans.

(Igen, I-förmiddagen som antar ms SQL, är databasen.),

       
       

    MELLANLÄGG IN I tbl_CEP_Documents (… kolonner….,). VÄRDERAR (......)


           
                   MELLANLÄGG IN I tbl_Document_Has_Topic (DocumentID, DocumentTopicID)
                  VALT
                   >
                  , DocumentTopicID
                  FRÅN tbl_CEP_Document_Topic
                 VAR DocumentTopicID IN (
                      " riktig " list= >
                  )
               

       


Uppdateringar är ett lite olikt. Mer om det i ett minimalt.
 
Andra lösningar  

 
programming4us programming4us