2015-05-27 5 views
0

Я пытаюсь вставить записи в таблицу SQL 2008 R2, где значения вставляются.SQL Вставка нескольких строк из значений нескольких списков

<cftry>  
    <cfquery name="AddListMembers" datasource="HHSCIntra">  
     INSERT INTO tbl_MailMembers (DateEntered, EnteredBy, Method,Member,List)  
     VALUES (
      CURRENT_TIMESTAMP 
      , '#session.UserID#' 
      , 'A' 
      , '#session.RecipientDistinguishedName#' 
      , '#session.DistListDistinguishedName#' 
     ) 
    </cfquery> 
    <cfcatch type="Database"> 
     <cfoutput>#cfcatch.message#</cfoutput> 
    </cfcatch>  
</cftry> 

Значения, которые изменяются в session.RecipientDistinguishedName и session.DistListDistinguishedName, все остальные значения являются постоянными. В основном один раз, когда я мог бы быть

  • Добавление 3 членов в списке 1 распределения, или
  • Добавление 1 член до 4 списков рассылки, или
  • Добавление 3 членов 5 списков рассылки

I «Пробовал несколько комбинаций циклов, но все, что я получаю, это одна запись, записанная в таблицу: первый член в списке и первый список рассылки.

UPDATE:

OK вещи изменились немного, мы только что позволяет пользователям работать в одном списке рассылки в то время. Итак, ниже того, что у меня есть сейчас. (. Пожалуйста, обратите внимание, я ушел из cfqueryparam и некоторые другие детали, так что все будет соответствовать лучше в пост)

<cfloop list="#session.RecipientDistinguishedName#" index="i" delimiters=""> 
    <cfquery name="AddListMembers" datasource="HHSCIntra"> 
     INSERT INTO tbl_MailMembers (DateEntered, EnteredBy, Method, Member, List) 
     VALUES (
     CURRENT_TIMESTAMP 
     , '#session.UserID#' 
     , 'A' 
     , '#i#' 
     , '#session.DistListDistinguishedName#' 
    ) 
    </cfquery> 
</cfloop> 

В коде, где я тянуть сотрудника отличительное имя из AD, я добавил это:

<cfinput type="hidden" name="frmEmpDistinguishedName" 
     value="#EmployeeAdd.distinguishedName#;"> 

Двойной двоеточие добавляется в конец выделенного имени, поэтому я могу использовать его в качестве разделителя при запросе этой таблицы. Итак, что заканчивается в столбце Member, это длинная строка, содержащая все различающееся имя, разделенное точкой с запятой.

Одна вещь, которую я заметил, это первое отличительное имя в колонке, начинающееся как CN=, но все последующие выдающиеся имена начинаются с ,CN=. Я играю с запросом этой таблицы, чтобы увидеть, будет ли это проблемой. Любые предложения по лучшим способам сделать это будут оценены.

ЗАВЕРШЕНИЕ ОБНОВЛЕНИЕ :::

я удалил ; из cfinput тега, и добавил код ниже перед cfloop в запросе вставки. Теперь я получаю длинную строку из нескольких отличительных имен, разделенных точкой с запятой в столбце Member.

<cfset session.RecipientDistinguishedName="#Replace(session.RecipientDistinguishedName,'DC=org,','DC=org;','ALL')#"> 
+4

Во-первых, вам нужно узнать, как использовать '', тогда вам нужно узнать '', а затем обернуть' 'с ним. – Henry

+3

где ваша попытка вставить несколько записей? –

+0

* Я пробовал несколько комбинаций циклов * Пожалуйста, разместите этот код [в своем вопросе] (http://stackoverflow.com/posts/30471574/edit) (а не как «ответ»). – Leigh

ответ

1

С помощью sql-сервера вы можете использовать эту конструкцию.

<cfquery> 
insert into yourTable 
(field1, field2, etc) 
select null, null, etc 
where 1 = 2 
<cfloop> 
union 
select value1, value2, etc 
</cfloop> 
</cfquery> 

Я оставлю детали для вас. Обратите внимание на комментарий Генри о параметрах запроса.

Смежные вопросы