Обновить SQL Server: с помощью html-ввода в цикле While — asp classic

#asp-classic

#asp-classic

Вопрос:

Приношу извинения за язык, я поддерживаю устаревшую систему, которая полностью написана на ASP Classic.

У меня есть HTML-страница, содержимое которой сгенерировано с моего SQL-сервера через ASP

 <form method="POST"> 
<div class="container">
 <table id="table" class="table">
  <thead class="thead-dark">
  <tr>
  <th scope="col" data-field="article">Article</th>
  <th scope="col" data-field="item">QTY/th>
  

Затем я сгенерировал содержимое с помощью цикла while из моей базы данных, который корректно отображает содержимое :

 <%
 While not grs.eof
%>
<tr>
<!--SQL query from ASP-classic-->
<th><%=grs.fields("Article")%></th>
<input type="number" class="form-control" id="Quant" placeholder="<%=grs.fields("QTY")%>" name="qty"></th>

<%
 grs.movenext
wend   
%>
</tr>
</table>
</form>
  

Теперь над моим столом у меня есть кнопка

 <button type="submit" value="Submit" class="btn btn-primary mb-2" name="B1">Confirm</button>
  

Когда мой конечный пользователь нажимает кнопку отправить, я хочу, чтобы все значения были обновлены на моем SQL Server, теперь, когда это происходит в цикле for, я не был уверен, куда пойдет запрос на обновление.. У меня есть это до сих пор

 <%
If request.form("B1")="Submit" Then
If QTY = "" Then
QTY = 0
Else
QTY = request.form("QTY")
'Update SQL'
gsSQL2 = "UPDATE dB SET quant ='" amp; QTY amp; "' WHERE ID = '" amp; request.querystring("ID") amp; "' And Article = '" amp; grs.fields("Article") amp;"'"
gobjConn.Execute(gsSQL2)
  

(пожалуйста, обратите внимание, что мой код имеет правильный отступ в моей IDE)

Теперь, когда я нажимаю отправить в цикле While, я получаю идентификационный номер, разделенный запятой, поэтому я знаю, что он обновляется, но я действительно не уверен, что я делаю не так ..?

любая помощь была бы очень признательна.

если потребуется какая-либо дополнительная информация, дайте мне знать.

Ожидаемый результат — отобразить некоторые коды кодов статей на веб-сайте и получить ответ от пользователя, затем записать этот результат в мою базу данных SQL, где Article = Статья и ID = ИДЕНТИФИКАТОР.

основной запрос к сгенерированному контенту (это не соответствует моим образцам данных, но я опубликую, если ошибка в самом запросе)

 gsSQL = "SELECT ID, Article, [Item Name] as name, [Stock Quantity] as qty, Built, Boxed, Actual from dB where Store ='" amp; request.querystring("store") amp; "' order by [Category], name "
Set grs = gobjConn.Execute(gsSQL)
  

Комментарии:

1. Ваша проблема в том, что у вас много qty полей формы. По какому вашему запросу вы открываете свой набор записей? Я помогу вам сгенерировать уникальное имя поля и как обновлять при отправке формы.

2. я добавлю это в основной пост! спасибо, Дэн

3. @DanB есть ли шанс, что вы могли бы взвесить? Пробовал свои силы в течение последних нескольких часов не очень успешно.

4. Я писал свой ответ, а затем отправил его. И это было хорошо. Это не соревнование!

Ответ №1:

В надежде, что я вас правильно понял, у вас уже есть id, quant и article в базе данных, и вы хотите обновить quant, связанный с идентификатором. В этом случае:

В цикле, который создает форму, дайте каждому вводимому номеру имя с идентификатором в имени (или, если у вас есть только одно поле, просто укажите идентификатор в качестве имени). В вашем случае:

 <input type="number" name="qty<%=rs("ID")%>">
  

Затем на странице действия вы просматриваете все поля и обновляете соответственно, либо заменяете имя, чтобы получить идентификатор, либо, если вы используете идентификатор только как fieldname, он работает без замены:

 For Each Item In Request.Form
            fieldName = Item 'This is the ID (with above field name: qtyID where ID is the ID from the DB.
            fieldValue = Request.Form(Item) 'This is the Quantity of that Article ID
            articleid=replace(fieldName,"qty","")

            sql="update table set qty="   fieldValue   " where id="   articleid
Next
  

Таким образом, вы пройдете через все поля в форме. Я также не уверен, нужны ли вам как идентификатор, так и артикль в предложении where? Может ли один идентификатор содержать много статей или наоборот?

Комментарии:

1. Я скоро протестирую, я думаю, мне нужны article = статья и ID = ИДЕНТИФИКАТОР, поскольку у меня 450 уникальных пользователей, обновляющих элементы, и я хочу, чтобы обновлялся только соответствующий элемент. итак, если у пользователя X есть 5 элементов, мне нужны отдельные количества каждого элемента.

2. дал мне несколько странных ответов для моего варианта использования (хотя, вероятно, это мое отсутствие объяснений), попытаюсь поиграть с моим текущим кодом

3. У меня почти получилось — я не могу найти способ создать ID = ID с помощью описанного выше метода, в лучшем случае я могу выполнить цикл ввода и записать это в SQL, но поскольку это оператор обновления, он просто обновит все записи с помощью последнего заполненного оператора.

4. Этот код не ответил на мой вопрос, но дал мне хорошее направление для получения ответа. моя благодарность вам, не уверен, кто проголосовал против вас!

5. Хорошо, приятно, что вы решили это! 🙂 извините, если я не совсем понял ваш вопрос, но пока он работает сейчас! большой палец