Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как 
:(
    Опции темы
Sinchik
Дата 17.11.2007, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 17.11.2007

Репутация: нет
Всего: нет



Ситуация!!!!

Расчет остатков на конец даты, как сделать чтобы остаток дня, переносился автоматом на новую строку нового дня.

Например:
Дата       Остаток на начло дня    Приход    Расход     Остаток на конец дня
17,11,07                10                          40           20                 30
18,11,07                 (30) и т.д
PM MAIL   Вверх
Akina
Дата 18.11.2007, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Это называется "переопределенные данные" и противоречит принципу нормализации базы данных.

Не тащите в Аксесс привычки из Экселя.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Sinchik
Дата 18.11.2007, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 17.11.2007

Репутация: нет
Всего: нет



а как быть
как можно решить эту проблему?
PM MAIL   Вверх
check
Дата 18.11.2007, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 610
Регистрация: 3.4.2006

Репутация: нет
Всего: 23



А нужно ли поле "Остаток на начало дня"?   Ведь остаток на конец сегодняшнего дня - это остаток на начало завтрашнего.
Зачем хранить одну и ту же информацию в двух разных полях?

Добавлено через 11 минут и 34 секунды
Ну,  в принципе,  я сказал то же, что и Akina.
PM MAIL   Вверх
Akina
Дата 18.11.2007, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(check @  19.11.2007,  00:00 Найти цитируемый пост)
А нужно ли поле "Остаток на начало дня"?

И я о том - не нужно. Да и поле остатка на начало дня ТОЖЕ не нужно. Просто первая запись предполагает, что ранее остатков не было, потому если надо чтобы он был - скажем, предыдущие данные снесены в архив - вводится фиктивная запись, не имеющая расхода и имеющая приход, равный остатку на начало периода учета. А если они, остатки, вдруг понадобятся (для отчета или аналитики) - запрос их посчитает и вернет.

Более того, и поля расход и приход не должны существовать. Это одна сущность, делить ее на два поля - глупость. Таблица теоретически должна содержать поля:
ID
Дата-время операции
Тип операции (приход или расход)
Количество
Дополнительные поля (вид материала, описание и пр.)


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
kapbepucm
Дата 20.11.2007, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Хотелось бы практический пример увидеть. Допустим простая таблица(Table1):
Код
Data         Dvizhenije
-----------------------
01.01.2007.      50
02.01.2007.     -20
02.01.2007.     100
02.01.2007.      20
05.01.2007.      -5
05.01.2007.     -30
Можно ли построить запрос, реализующий нечто:
Код
Data         Ostatok_Na4alo  Prihod   Rashod   Ostatok_konec
------------------------------------------------------------
01.01.2007.        0           50        0          50
02.01.2007.       50          120       20         150
05.01.2007.      150            0       35         115



--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
Akina
Дата 20.11.2007, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(kapbepucm @  20.11.2007,  11:30 Найти цитируемый пост)
Можно ли построить запрос, реализующий нечто:

Да, можно. Причем настолько это несложно, что даже не буду давать текст запроса.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
kapbepucm
Дата 20.11.2007, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Цитата(Akina @  20.11.2007,  10:43 Найти цитируемый пост)
это несложно, что даже не буду давать текст запроса
smile
Раньше подобный запрос делал (и до определённого момента) на VBA результатом была новая таблица. Вот, увидел очень похожую тему, принадлежащую Sinchik, решил спросить. Извините за может быть очевидное, но как сделать накопительные суммы Ostatok_Na4alo и Ostatok_konec я не вижу. Если это несложно, то может быть укажите, каким образом их в этом запросе показать:
Код
SELECT [Table1].[Data], Sum(IIf([Table1].[Dvizhenije]>0,[Table1].[Dvizhenije],0)) AS Prihod, Sum(IIf([Table1].[Dvizhenije]<0,[Table1].[Dvizhenije],0)) AS Rashod, Sum([Table1].[Dvizhenije]) AS Dvizhenije FROM Table1 GROUP BY [Table1].[Data] ORDER BY [Table1].[Data];



--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
Akina
Дата 20.11.2007, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(kapbepucm @  20.11.2007,  14:42 Найти цитируемый пост)
сделать накопительные суммы Ostatok_Na4alo и Ostatok_konec я не вижу

перемножить таблицу на себя и сделать отбор записей, где дата в 1-й копии больше чем дата во 2-й копии... собсно


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
kapbepucm
Дата 20.11.2007, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Близко к тому делал (пусть предыдущий запрос зовётся "Query1"):
Код
SELECT Q1.Data, Q1.Prihod, Q1.Rashod, Q1.Dvizhenije FROM Query1 AS Q1, Query1 AS Q2 WHERE (Q1.Data)>=(Q2.Data);
Только как сделать "накопительные суммы"? Получается увидеть только суммы из группы. А может неправильно сделал?

Это сообщение отредактировал(а) kapbepucm - 20.11.2007, 14:22


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
Akina
Дата 22.11.2007, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(kapbepucm @  20.11.2007,  15:14 Найти цитируемый пост)
как сделать "накопительные суммы"? 

Сделай второй запрос на основе первого, посчитай суммы... потом свяжи первый и второй, получи все вместе


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
kapbepucm
Дата 23.11.2007, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Цитата(Akina @  22.11.2007,  18:26 Найти цитируемый пост)
посчитай суммы
Здесь я стою smile
Cитуация сложилась "критическая". Проект должен работать уже сегодня. Не на калькуляторе же считать smile
Вышел из положения следующим образом. Таблица:
Код
================
    Table1
================
LineID   Field1
----------------
   1        20
   2        30
   3        40
   4       -20
================
Запрос должен быть таким:
Код
============================
         Query1
============================
LineID     Field1     Field2
----------------------------
   1          20        20
   2          30        50
   3          40        90
   4         -20        70
============================
Сделал функцию
Код
Public Function GetField2(LineID As Long) As Double
  Dim DBS As DAO.Database
  Dim RST As DAO.Recordset
  Set DBS = CurrentDb
  Set RST = DBS.OpenRecordset("SELECT Field1 FROM Table1 WHERE LineID<=" & CStr(LineID))
  Do Until RST.EOF
    GetField2 = Round(GetField2 + RST.Fields("field1"), 6)
    RST.MoveNext
  Loop
  RST.Close
  DBS.Close
End Function
Запрос:
Код
SELECT LineID, Field1, getfield2(LineID) AS Field2 FROM Table1;
Хотелось бы ограничится запросами. Принимаю ваши замечания.

Это сообщение отредактировал(а) kapbepucm - 26.11.2007, 11:23


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.1780 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.