Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: сумма в таблице mdb Добавлено: 05.12.05 15:14  

Автор вопроса:  050 | ICQ: 346913660 
Подскажите плз, как лучше выполнить следующую задачу.
есть на форме ADO контрол, с ним связан датагрид, нужно посчитать сумму значений столбца, сравнивая с определенными критериями. Сумму отобразить на форме и
записать в результирующую таблицу.
Как лучше сделать:
1. Перебирать значения adodc контрола в цикле
считать сумму и потом открывать базу и записывать значение.
2. Или сразу открывать базу, выполнять sql select Sum()
писать в динамический рекордсет, оттуда переменной и делать update базы..
 и если возможность в sql делать что-то вроде:

If Format(Adodc1.Recordset.Fields("datecash0").Value, "mm.dd.yy") >= Don1 And Format(Adodc1.Recordset.Fields("datecash1").Value, "mm.dd.yy") <= don Then
    If Adodc1.Recordset.Fields("type").Value = -1 Then
    SUM = SUM + Adodc1.Recordset.Fields("sumcash").Value
    ac_deb = ac_deb + 1
    Else
    SUM1 = SUM1 + Adodc1.Recordset.Fields("sumcash").Value
    ac_cre = ac_cre + 1
    End If
 End If

..или придется делать две sql инструкции..
sum(sumcash) where datecash0 >= .... and type = - 1
sum(sumcash) where datecash0 >= .... and type = 0
??
спасибо

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #1 Добавлено: 05.12.05 16:58
Вот это код...
Взять дату, перевести в строку и потом сравнивать с датой... Это имея изначально две даты...


SELECT type, SUM(sumcash) FROM Table1 WHERE datecash0 >= #2005-12-01# AND datecash1 <= #2005-12-31# GROUP BY type

Ответить

Номер ответа: 2
Автор ответа:
 050



ICQ: 346913660 

Вопросов: 2
Ответов: 9
 Профиль | | #2 Добавлено: 08.12.05 10:16

SELECT type, SUM(sumcash) FROM Table1 WHERE datecash0 >= #2005-12-01# AND datecash1 <= #2005-12-31# GROUP BY type

Gserg....
спасибо..код подходит..
только как из полченного рекордсета вытянуть нужные значения..
У рекордсета есть метод field, но там можно получить значения только из первой строки..
Есть метод getstring где можно получить все строки, но как выбрать нужные значения и отследить нулевые значения??

Ответить

Номер ответа: 3
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #3 Добавлено: 08.12.05 13:18
там можно получить значения только из первой строки..

050, скажи честно, ты вообще читал хоть какую-то документацию?
Например, документацию по методу .MoveNext.

как выбрать нужные значения и отследить нулевые значения??

Запрос возвращает готовый результат. Не нужно ничего отслеживать.

Ответить

Номер ответа: 4
Автор ответа:
 050



ICQ: 346913660 

Вопросов: 2
Ответов: 9
 Профиль | | #4 Добавлено: 08.12.05 13:49
GSerg...
прошу объяснить..
что я делаю:
формирую новый динамический рекордсет для вычислений:
Set cn = New ADODB.Connection
далее выполняю
sSQL = "SELECT SUM(sumcash) FROM firma WHERE datecash0 >= #" & Format(don1, "dd\/mm\/YY";) & "#" & "and datecash1 <= #" & Format(don, "dd\/mm\/YY";) & "#" & " and id_agent = " & lagent_num.Text & " GROUP BY type"
результатом заполняю рекордсет
Set rs = cn.Execute(s1SQL)
В итоге:
в рекордсете две строки, сгруппированные по type
ХХХХ - соответствующая type = -1
ХХХХ - type = 0
В итоге может быть и одна строка если, например, в таблице firm нет строк, удовлетворяющих директиве where..
а мне нужно полученные суммы записать в переменные чтобы отобразить их на фороме и далее сделать апдейт другой таблицы с результирующими значениями..
Про .movenext это надо в цикле перебирать пока не .EOF?

Ответить

Номер ответа: 5
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #5 Добавлено: 08.12.05 16:22
Да.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам