Как я получаю доступ к SQLite от VBA?

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

Пример:

where to_char(someDate,'YYYYMMDD') between :fromDate and :toDate

вместо

where someDate >= to_date(:fromDate,'YYYYMMDD') and someDate < to_date(:toDate,'YYYYMMDD')+1

И до меньшей степени: Не добавление функциональных индексов к тем значениям, которым нужны они...

2 - Не добавляющие проверочные ограничения для обеспечения законности данных. Ограничения могут использоваться оптимизатором запросов, и они ДЕЙСТВИТЕЛЬНО помогают удостовериться, что можно доверять инвариантам. Нет только никакой причины не использовать их.

3 - Добавляющие ненормализованные столбцы к таблицам из чистой лени или нехватки времени. Вещи обычно не разрабатываются этот путь, но развиваются в это. Конечным результатом, бесперебойно, является тонна работы, пытающейся разгребать бардак, когда Вы укушены потерянной целостностью данных в будущих эволюциях.

Думают об этом, таблица без данных является очень дешевой для перепроектирования. Таблица с несколькими миллионами записей без целостности... не настолько дешевой для перепроектирования. Таким образом выполнение корректного дизайна при создании столбца или таблицы амортизируется чрезвычайно.

4 - не так о базе данных по сути, но действительно раздражающий. Не заботясь о качестве кода SQL. То, что Ваш SQL выражается в тексте, не делает его хорошо для сокрытия логики в "куче" алгоритмов обработки строк. Совершенно возможно записать SQL в тексте способом, который на самом деле читаем Вашим коллегой - программистом.

9
задан user161259 28 August 2009 в 13:30
поделиться

3 ответа

Есть несколько библиотек DLL, которые можно использовать для доступа к базе данных SQLITE из Visual Basic с помощью adodb. Я думаю, что здесь - это та информация, которую вы ищете. Я никогда не пробовал, но ссылка может быть вам полезна.

Удачи.

2
ответ дан 4 December 2019 в 13:48
поделиться

Я использовал dhSQLite Datenhaus, и он работает хорошо.

2
ответ дан 4 December 2019 в 13:48
поделиться

Осталось на тот же вопрос, я сделал легкую библиотеку, чтобы дать прямой доступ к SQLite3 из Excel VBA. Конечный результат представляет собой гораздо более простое решение, не прошедший слой ODBC или OLEDB / ADO, а производительность отражает производительность базы данных SQLite, а не то, что о непрозрачной оболочке. Также приятно, потому что вам не нужна регистрация COM-компонента в реестре, вы просто копируете два .dlls с вашей рабочей книгой и добавьте модуль .bas в свой проект.

Недостатком этого подхода является то, что API не является стандартным интерфейсом DAO или ADO, поэтому вам может потребоваться сделать некоторые обертки или преобразовывать некоторые из ваших кодов, чтобы он работал. Это также означает, что вам нужно немного знакомства с SQLite API для его использования, но документация SQLite очень ясна.

Я поставил раннюю версию проекта на CodePlex: SQLite для Excel обеспечивает высокопроизводительный путь к функциям API-APLite3, сохраняя семантику библиотеки SQLite3 и позволяет доступом к распределенному Sqlite3.dll без перекомпиляции.

Любая обратная связь будет очень ценится.

Обновление: SQLite SQLite для Excel теперь живет на Github .

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

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