Схема базы данных - Система Заказа/Доступности

Мне нужно было открыть рабочую книгу external_workbook.xlsx до обновления workbook1.xlsm, чтобы можно было обновить данные.

Рабочий код выглядит следующим образом:

import win32com.client as w3c
import random

xlapp = w3c.gencache.EnsureDispatch('Excel.Application')
xlapp.Visible = 0

# ********************************* #
# New line that fixes it #
xlwb_data = xlapp.Workbooks.Open(r'{}\{}'.format(path, 'external_workbook.xlsx'), False, True, None)
# ********************************* #

xlwb = xlapp.Workbooks.Open(r'{}\{}'.format(path, 'workbook1.xlsm'), False, True, None)
books = w3c.Dispatch(xlwb) 

sheet_temp = books.Sheets('temp')
sheet_temp.Cells(1,1).Value = random.random()

xlwb.RefreshAll() # Runs with no errors, but doesn't refresh
time.sleep(5)
xlwb.Save()
xlapp.Quit()
9
задан smashedmercury 11 December 2008 в 10:28
поделиться

1 ответ

Могло бы быть легче работать с единственной таблицей и для доступности и для заказа с гранулярностью 1 дня:

property_date (property_id, date, status);

Статус столбца имел бы (по крайней мере), следующие 2 значения:

  • Доступный
  • Заказанный

Ввод периода доступности, например, с 1-го до 14-го апреля повлек бы за собой (приложение) вставку 14 строк в property_date каждый с состоянием 'Доступных'. (Пользователю это должно походить на единственное действие).

Заказ свойства в течение периода с 3-го до 11-го апреля повлек бы за собой проверку, что 'Доступная' строка существовала в течение каждого дня и изменения состояния к 'Заказанному'.

Эта модель может казаться немного "подробной", но она имеет некоторые преимущества:

  1. Проверение наличия для любой даты легко
  2. Добавление заказа автоматически обновляет доступность, нет отдельной таблицы Availability для хранения в синхронизации.
  3. Проявление доступности в веб-странице было бы очень просто
  4. Легко добавить новые состояния для записи различных типов недоступности - например, закрытый для обслуживания.

NB, Если "доступно" является наиболее распространенным состоянием свойства, может быть лучше инвертировать логику так, чтобы было состояние 'Unavailable', и отсутствие строки для даты означает, что это доступно.

14
ответ дан 4 December 2019 в 14:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: