Pergunta : Em uma base de dados, using uma aplicação de ColdFusion, eu preciso de atribuir originais aos tópicos do original.

Base de dados: Usuário 2005 do MS SQL
Versão 8 de ColdFusion

Olá!. Eu tenho trabalhado nesta tarefa por um quando e alcanguei um ponto em que eu preciso de pedir a ajuda.

Tarefa no sumário: Em uma base de dados, eu preciso de atribuir originais aos tópicos do original.

História:
No mês passado, o gdemaria ajudou-me -- muito pacientemente -- para construir uma aplicação que permita que um usuário transfira arquivos pela rede e controle originais em uma base de dados. A aplicação trabalha perfeitamente e eu aprendi uma tonelada quando o gdemaria me guiou em a construir. A aplicação permite que um usuário crie um original; transferir arquivos pela rede as limas (DOC, pdf, imagens) esse associado com esse original, e controlar metadata que pertence ao original.

Agora, eu preciso de atribuir originais transferidos arquivos pela rede aos tópicos do original.

Tarefa em detalhe:

Basicamente eu preciso de adicionar a minha aplicação a habilidade de atualizar uma tabela: tbl_Document_Has_Topic.

Minhas três tabelas de funcionamento são:

tbl_CEP_Documents (esta tabela prende metadata sobre originais do CEP) PK: DocumentID
(esta tabela prende uma lista de todos os tópicos do original do CEP) PK tbl_CEP_Document_Topic: DocumentTopicID
tbl_Document_Has_Topic (esta tabela relaciona tbl_CEP_Documents a tbl_CEP_Document_Topic)

necessidades tbl_Document_Has_Topic somente duas colunas:
DocumentID
DocumentTopicID

* DocumentID é o PK nos tbl_CEP_Documents.
* DocumentTopicID é o PK em tbl_CEP_Document_Topic.

..... Se eu atribuo um DocumentTopicID a um DocumentID, a seguir esse original estará atribuído aos tópicos corretos do original.

Aquela é a função de tbl_Document_Has_Topic: para atribuir DocumentTopicID a um DocumentID.

Minha tarefa é incluir, em meu original edita a relação, um menu seleto que permita que um usuário escolha tópicos do original atribuir a um original.

Eu adicionei o menu seleto. Ver por favor um exemplo aqui:

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

….Observar o menu seleto “para atribuir este original aos tópicos do CEP”. O menu seleto dá laços simplesmente com os 24 tópicos possíveis do original do CEP. Assim:

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

 
SELECIONAR DocumentTopicID, DocumentTopic
De tbl_CEP_Document_Topic
ORDEM por DocumentTopic
  
 
    

Atribuir este original aos tópicos do CEP
Escolher pelo menos um tópico. Para selecionar mais de um tópico, prender a chave do CTRL e selecionar tópicos com o cursor do rato.



Esse menu seleto trabalha bem. Observar que isso no menu seleto cada DocumentTopic está emparelhado com seu DocumentTopicID correto.

Assim, eu preciso de construir uma pergunta nova que as atualizações tabelam tbl_Document_Has_Topic, using as seleções do menu seleto.

Onde coloc esta pergunta, e que formulário deve a pergunta tomar?

Um novo documento deverá ser atribuído aos tópicos do original; e, os originais existentes precisarão de mudar agora e então tópicos.

Na aplicação eu já tenho as perguntas que introduzem um novo documento, e atualizo um original existente. Eu preciso de modificar aquelas perguntas existentes, de modo que as perguntas atualizem tbl_Document_Has_Topic com valores apropriados de DocumentID e de DocumentTopicID? Isso pareceria como a maneira de fazê-la. E, eu precisaria de criar um interno junto-me (eu penso) para atualizar a tabela, tbl_Document_Has_Topic.

Sou eu pensar sobre este corretamente?

Eu sou muito grato para todo o conselho.

Eu adiciono meu código de trabalho.

Obrigado como 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:


 





 


 



 
 
  
 
   
 


 


        









  
    
	
			  
	
    
    
			  
	


 
 
 
  NÃO SELECIONAR “nada” dos tbl_CEP_Documents
  ONDE DocumentTitle =  
  E DocumentID  <> 
  
   
 
  
   
   
	
		   
	
    
      
   
    
    
    
    
				
    
  			  
				  tbl_CEP_Documents da ATUALIZAÇÃO
				  AJUSTAR   DocumentTitle = ,
					DocumentType = ,
					DocumentAuthor = ,
				    DocumentAbstract = ,
				    DocumentPublicationDate = ,
				    DateRecordModified =  
				  ONDE DocumentID =  
			



    
				 
    
    
	
				
					
				 INSERÇÃO em tbl_CEP_Documents
     					(
			            DocumentTitle,
            		    DocumentType,
                		DocumentAuthor,
		                DocumentAbstract,
        		        DocumentPublicationDate,
                		SSMA_TimeStamp
		                )
			     VALORES (
						  ,
						  ,
						  ,
						  ,
						  ,
		     			  
				         )         
					

		 





    
          selecionar max (DocumentID) como a identificação
           Dos tbl_CEP_Documents
      


        






           
					      
    
    
    

    

    
          
				         
  
		    	
      			
			           
     			       
   			      

			
				    
			
            

			
			
			 INSERÇÃO em tbl_CEP_Files
     			(
                DocumentID,
                Nome de arquivo,
				FileExtension,
				FileType,
				FileSize,
                isDeleted
                )
		     VALORES (
        		  
				  ,
				  ,
				  ,
				  ,
                  , 0
		           )         
				  
  
		     
  
           
              
               
           
         
					   
		         
    	   
       			tbl_CEP_Files da ATUALIZAÇÃO
           		AJUSTAR IsDeleted = 1
        		Em ONDE FileID ()
      		




		    
					
                    
  
		
				     
                         
                    
    
    


    
    
        


			   
					   
					                
					        
					       	
					         SUPRESSÃO dos tbl_CEP_Documents
					         ONDE DocumentID =  
					        
              
 					        
						 

	    
        
        
            
    		

  





       

     
     
  

  
  
  
		    
			




 
  
    
			  
			  
				    selecionar * dos tbl_CEP_Documents onde DocumentID = #val (form.DocumentID) #
			  

  			
			       
			  
    
	




 
			 
			 
#variables.error#

#FormTitle#

SELECIONAR DocumentTopicID, DocumentTopic De tbl_CEP_Document_Topic ORDEM por DocumentTopic

Original identificação: #URL.DocumentID#

Título do original

Tipo de documento

Autor do original

Atribuir este original aos tópicos do CEP
Escolher pelo menos um tópico. Para selecionar mais de um tópico, prender a chave do CTRL e selecionar tópicos com o cursor do rato.

Documentar o sumário

Data de publicação (formulário MM/DD/YYYY do uso)

Abaixo, ver por favor as limas associadas atualmente com o original identificação #URL.DocumentID#. Se não há nenhuma lima associada com o original, a seguir nenhuma lima aparecerá abaixo. Você tem a opção para transferir arquivos pela rede uma lima (pdf, DOC, lima de imagem), que associe a lima com o original identificação #URL.DocumentID#.

selecionar * dos tbl_CEP_files onde DocumentID = #val (form.DocumentID) # e = 0 isDeleted
Nome de arquivo Supressão
#getFiles.FileName#

Nenhuma lima é unida a este original.


A tecla, abaixo, suprime deste original, de seu registro de base de dados, e de todas as limas associadas. Uso com cuidado.

Resposta : Em uma base de dados, using uma aplicação de ColdFusion, eu preciso de atribuir originais aos tópicos do original.

>
> selecionar max (DocumentID) como a identificação
>           Dos tbl_CEP_Documents
>


Se você está usando essa pergunta para recuperar a identificação de um original recentemente introduzido… não fazer; -) Em um ambiente com muitos usuários simultâneos é provável retornar a identificação errada  

A melhor maneira de começ o valor de uma auto coluna de incremento é usar o atributo do “resultado” do cfquery de CF8.  Depois que uma INSERÇÃO, CF povoa a estrutura do resultado com a identificação do novo recorda. O nome chave varia dependendo de seu tipo do DB

Exemplo: Para uma base de dados do MS SQL o nome chave é IDENTITYCOL

result= " newDocument " >
   INSERÇÃO em tbl_CEP_Documents (… colunas….). VALORES (......)



     O documentID novo é #newDocument.IDENTITYCOL#
cfoutput>


> Eu já tenho as perguntas que introduzem um novo documento, e atualizo um original existente…
> Faço eu preciso de modificar aquelas perguntas existentes

Somente a pergunta da INSERÇÃO, assim que você podem recuperar o DocumentID recentemente introduzido.  Apenas usar o atributo do “resultado” como descrito acima.  Com uma ATUALIZAÇÃO, você já tem a identificação (IE #form.DocumentID#)

Desde que você está modificando uma tabela separada, você usaria um cfquery separado.  Para novos documentos, fazer primeiramente a INSERÇÃO em tbl_CEP_Documents.  Uma vez que você tem o documentID novo, você pode usá-lo para introduzir os tópicos selecionados em sua segunda tabela.

Desde que as identificações do tópico vêm do seu tbl_CEP_Document_Topic, você pode usar um SELETO para agarrar adiciona todos os tópicos selecionados dessa tabela, e introduz os valores em tbl_Document_Has_Topic em um caiu rusga.  

Para ambas as inserções e atualizações, ser certo envolver as duas perguntas em uma transação.  Assim ou ambas as perguntas sucedem ou ambas falham… junto.

(Outra vez, eu estou supor que o MS SQL é a base de dados.)

       
       

    INSERÇÃO em tbl_CEP_Documents (… colunas….). VALORES (......)


           
                   INSERÇÃO em tbl_Document_Has_Topic (DocumentID, DocumentTopicID)
                  SELETO
                   >
                  , DocumentTopicID
                  De tbl_CEP_Document_Topic
                 ONDE DocumentTopicID DENTRO (
                      list= " verdadeiro " >
                  )
               

       


As atualizações são um pouco de diferentes. Mais sobre isso em um minuto.
 
Outras soluções  

 
programming4us programming4us