Заполните список флажков из базы данных, и если ранее проверено, то автоматическая проверка при загрузке - PullRequest
1 голос
/ 29 июля 2011

У меня есть пользовательская форма, которая будет заполнять определенные категории на основе полей, хранящихся в базе данных, это работает хорошо и хорошо, используя:

<%
DSN = "DSN=LocalSQLServer"
set panDB = server.createobject("ADODB.recordset")
panDB.open "select attribute_name,attribute_id,attribute_question_value from   attributes where attribute_type=6 and attribute_id>217 and attribute_id<250",DSN
Do while Not panDB.eof 
    response.write "<input type=checkbox value='" & panDB("attribute_question_value") & "' name='country_" & panDB("attribute_question_value") & "'>" & panDB("attribute_name")
    response.write "<BR>"
    panDB.MoveNext
loop%>

Атрибуты таблицы - это просто список различных атрибутов_имя, ихсоответствующий attribute_type и attribute_id.Когда один из этих флажков установлен и форма сохранена, вторая таблица обновляется для записи form_attribute_id, form_id и attribute_id.Моя проблема заключается в проверке полей, которые были ранее выбраны при повторном открытии формы.Любые идеи?

Это то, что я получил до сих пор для получения информации о том, было ли проверено поле или нет, в основном перечисляя все поля в категории, так что флажки все еще будут заполнены, а затем идеянеобходимо установить флажок, если поле attribute_id не равно нулю.Я получаю ошибку требуемого объекта, хотя "if panDB (" attribute_id ") не равно нулю"

DSN = "DSN=LocalSQLServer"
set panDB = server.createobject("ADODB.recordset")
panDB.open "select a.attribute_question_value, s.test as 'attribute_id', a.attribute_name from attributes a left outer join (select attribute_id as 'test' from survey_attributes where survey_id=2091) s on a.attribute_id=s.test where a.attribute_type=6 and a.attribute_question_value < 4",DSN
Do while Not panDB.eof 
    if panDB("attribute_id") is not null then
        response.write "<input type='checkbox' checked value='" & panDB("attribute_question_value") & "' name='country_" & panDB("attribute_question_value") & "'>" & panDB("attribute_name")
    else
        response.write "<input type='checkbox' value='" & panDB("attribute_question_value") & "' name='country_" & panDB("attribute_question_value") & "'>" & panDB("attribute_name")
    end if 
        response.write "<BR>"
    panDB.MoveNext
loop
set panDB = Nothing

Ответы [ 2 ]

1 голос
/ 29 июля 2011

Просто добавьте атрибут checked и установите его в true или false в зависимости от значения вашей базы данных

"<input type='checkbox' " & (if (DB_Expression) then "checked='checked'" else "") & "value='" & panDB("attribute_question_value") & "' name='country_" & panDB("attribute_question_value") & "'>"

Не забывайте цитаты вокруг checkbox

0 голосов
/ 01 августа 2011

Мне удалось разработать запрос, который произвел искомый вывод, чтобы заполнить списки и проверить их в зависимости от сохраненных данных. Я понимаю, что оператор if может быть очищен, но я положил его туда во время тестирования.

DSN = "DSN=LocalSQLServer"
set panDB = server.createobject("ADODB.recordset")
panDB.open "select a.attribute_question_value, s.test, a.attribute_name from attributes a left outer join (select attribute_id as 'test' from survey_attributes where survey_id=" & survey_id & ") s on a.attribute_id=s.test where a.attribute_type=6 and a.attribute_question_value < 4",DSN
Do while Not panDB.eof 
    if panDB("test") > 0 then
        response.write "<input type='checkbox' checked value='" & panDB("attribute_question_value") & "' name='country_" & panDB("attribute_question_value") & "'>" & panDB("attribute_name")
    else
        response.write "<input type='checkbox' value='" & panDB("attribute_question_value") & "' name='country_" & panDB("attribute_question_value") & "'>" & panDB("attribute_name")
    end if 
        response.write "<BR>"
    panDB.MoveNext
loop
set panDB = Nothing
...