Вычисления в Access

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Вычисления в Access

Сообщение alex shestov » 30.05.2005 (Пн) 14:48

Помогите реализовать следующию задумку.
Есть вот такая таблица
Id Номер Эмитент Дата покупки Кол-во
334 52 Автоваз (ОАО) 17-фев-05 13 500,00
335 57 Автоваз (ОАО) 18-фев-05 10 000,00
336 97 Автоваз (ОАО) 19-май-05 20 000,00

Так вот, нужно например продать 15 000 бумаг. Хочеться сделать таким образом чтоб программа сама отняла 13 500 из первой строки и остаток в 1 500 из второй строки.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 30.05.2005 (Пн) 14:55

Ну... Не самое удачно применение для СУБД.
Лучше всего будет пройтись циклом по рекордсету и отнять то, что тебе надо. SQL-запросом это будет непросто сделать.
Lasciate ogni speranza, voi ch'entrate.

alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Сообщение alex shestov » 30.05.2005 (Пн) 14:58

alibek писал(а):Ну... Не самое удачно применение для СУБД.
Лучше всего будет пройтись циклом по рекордсету и отнять то, что тебе надо. SQL-запросом это будет непросто сделать.


Понимаю что не удачное - то то у меня не получается это сделать :wink: . А как будет выглядывать SQL-запрос...если не сложно.. :roll:

alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Сообщение alex shestov » 30.05.2005 (Пн) 16:14

Почему может виснуть данный код?

Dim nToSell As Long
nToSell = [Forms]![SaleTab]![SQ]
Dim db As Database
Set db = CurrentDb
Dim rs As DAO.Recordset
Set rs = db.OpenRecordset("SELECT * FROM SaleTab WHERE Quantity > 0")
While Not rs.EOF And nToSell > 0
rs.Edit
If rs!Quantity < nToSell Then
nToSell = nToSell - rs!Quantity
rs!Quantity = 0
Else
rs!Quantity = rs!Quantity - nToSell
nToSell = 0
End If
rs.Update
Wend
rs.Close

snov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 28.11.2003 (Пт) 10:12
Откуда: Челябинск

Сообщение snov » 31.05.2005 (Вт) 12:46

alex shestov писал(а):Почему может виснуть данный код?

Dim nToSell As Long
nToSell = [Forms]![SaleTab]![SQ]
Dim db As Database
Set db = CurrentDb
Dim rs As DAO.Recordset
Set rs = db.OpenRecordset("SELECT * FROM SaleTab WHERE Quantity > 0")
While Not rs.EOF And nToSell > 0
rs.Edit
If rs!Quantity < nToSell Then
nToSell = nToSell - rs!Quantity
rs!Quantity = 0
Else
rs!Quantity = rs!Quantity - nToSell
nToSell = 0
End If
rs.Update
Wend
rs.Close
У тебя меняется только 1 запись. Двигаем дальше: rs.movenext

alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Сообщение alex shestov » 31.05.2005 (Вт) 12:50

snov писал(а):
alex shestov писал(а):Почему может виснуть данный код?

Dim nToSell As Long
nToSell = [Forms]![SaleTab]![SQ]
Dim db As Database
Set db = CurrentDb
Dim rs As DAO.Recordset
Set rs = db.OpenRecordset("SELECT * FROM SaleTab WHERE Quantity > 0")
While Not rs.EOF And nToSell > 0
rs.Edit
If rs!Quantity < nToSell Then
nToSell = nToSell - rs!Quantity
rs!Quantity = 0
Else
rs!Quantity = rs!Quantity - nToSell
nToSell = 0
End If
rs.Update
Wend
rs.Close
У тебя меняется только 1 запись. Двигаем дальше: rs.movenext


Ага, спасиб. Уже разобрался :)


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

    TopList  
cron