Рейтинг:
2
OriginalGriff
У вас не может быть "динамических" имен столбцов, если вы не создадите инструкцию SQL, которая включает только нужные столбцы: то, как вы это делаете, генерирует несколько команд, каждая из которых суммирует один столбец.
Вместо этого используйте цикл для построения списка, затем включите его в команду SQL и выполните ее только один раз.
Рейтинг:
2
Maciej Los
Если я вас хорошо понимаю...
Попробовать это:
for x=1 to 13
sql = sql & "s" & x & " + "
Next
sql = Left$(sql, Len(sql)-3) 'remove last " + "
sql = "select " & sql & " AS TOPLAM from students WHERE konu_id = 1;"
Set rs = server.createobject("adodb.recordset")
rs.Open sql, conn, 1, 3
Результат:
select s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10 + s11 + s12 + s13 AS TOPLAM from students WHERE konu_id = 1;
Member 12505620
Привет Мацей Лос;
Во-первых, спасибо за вашу заботу.Ваш код работает правильно только для одной строки, но у меня есть datatable, и я хочу, чтобы он вычислял каждую строку отдельно. Как я могу изменить эту строку
в SQL = SQL и усилителя; amp; "вместо" &амп; х &амп; " + "
для каждого ряда?
Maciej Los
Поэтому не используйте оператор WHERE. Это все.
Member 12505620
Я попытался опустить, где, но тогда он собирает каждую строку снова с строкой выше в каждый раз.
в SQL = SQL и усилителя; amp; "вместо" &амп; х &амп; " + "
Например : результат 1-й строки : 1+0+0+0+0+3+0+0+0+0+0+0
Результат 2-й строки : 1+0+0+0+0+3+0+0+0+0+0+00+0+0+3+0+2+1+0+0+0+0+1
Результат 3-й строки :1+0+0+0+0+3+0+0+0+0+0+00+0+0+3+0+2+1+0+0+0+0+10+0+0+0+0+0+0+0+0+0+0+0
и т.д.
Maciej Los
Вам не нужно петлять по строкам!
Заявление:
select s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10 + s11 + s12 + s13 AS TOPLAM from students
should возвращает результирующий набор (коллекцию строк), где каждая отдельная строка имеет сумму столбцов.
Member 12505620
Когда я попробовал этот код, появилась пустая страница. Я думаю, что as toplam не работает.
(выберите s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10 + s11 + s12 + s13 в качестве топлама от студентов)