Каков Ваш предпочтительный формат документа для документирования [закрытых] баз данных

Как прокомментировал и опубликовал @Minty, ваши даты являются проблемой.

  • При выполнении запросов в графическом интерфейсе MS Access, например, в Query Designer, вы получаете доступ к диалекту Access SQL.
  • При подключении через ODBC-драйвер к внешней базе данных вы получаете доступ к диалекту SQL подключаемой базы данных, в данном случае Quickbooks.

Нет двух одинаковых диалектов SQL, но большинство пытаются соответствовать стандартам ANSI. Следовательно, одни и те же запросы могут завершаться ошибкой между Query Designer и VBA.

MS Access

Даты MS Access, если они отправлены буквально, должны быть заключены в хэштеги, #:

INSERT INTO Invoice (CustomerRefListID, ARAccountRefListID, TxnDate, RefNumber,
                     BillAddressAddr1, BillAddressAddr2, BillAddressCity, BillAddressState, 
                     BillAddressPostalCode, BillAddressCountry, IsPending, TermsRefListID, 
                     DueDate, ShipDate, ItemSalesTaxRefListID, [Memo], IsToBePrinted, 
                     CustomerSalesTaxCodeRefListID) 
VALUES ('800001F6-1482536280', '8000001E-1478562986', #9/23/2020#, '1', 'Brad Lamb', 
        '1921 Appleseed Lane', 'Bayshore', 'CA', '94326', 'USA', 0, '80000002-1478562832', 
         #10/31/2020#, #10/01/2020#, '8000295C-1541711590', 
         'Memo Test', 0, '80000001-1478562826')

В качестве альтернативы используйте CDate() для преобразования строки в дату: 1119]

INSERT INTO Invoice (CustomerRefListID, ARAccountRefListID, TxnDate, RefNumber,
                     BillAddressAddr1, BillAddressAddr2, BillAddressCity, BillAddressState, 
                     BillAddressPostalCode, BillAddressCountry, IsPending, TermsRefListID, 
                     DueDate, ShipDate, ItemSalesTaxRefListID, [Memo], IsToBePrinted, 
                     CustomerSalesTaxCodeRefListID) 
VALUES ('800001F6-1482536280', '8000001E-1478562986', CDate('9/23/2020'), '1', 'Brad Lamb', 
        '1921 Appleseed Lane', 'Bayshore', 'CA', '94326', 'USA', 0, '80000002-1478562832', 
        CDate('10/31/2020'), CDate('10/01/2020'), '8000295C-1541711590', 
        'Memo Test', 0, '80000001-1478562826')

Quickbooks ODBC

В Quickbooks вы должны придерживаться требования даты {d 'YYYY-MM-DD'} или функциональной формы fncqbDate(). Однако документация по этим методам редко встречается и может варьироваться в зависимости от версии драйвера ODBC.

sql = "INSERT INTO Invoice (CustomerRefListID, ARAccountRefListID, TxnDate, RefNumber, " _
       & "                  BillAddressAddr1, BillAddressAddr2, BillAddressCity,  " _
       & "                  BillAddressState, BillAddressPostalCode, BillAddressCountry,  " _
       & "                  IsPending, TermsRefListID, DueDate, ShipDate,  " _
       & "                  ItemSalesTaxRefListID, [Memo], IsToBePrinted,  " _
       & "                  CustomerSalesTaxCodeRefListID)  " _
       & " VALUES ('800001F6-1482536280', '8000001E-1478562986', {d '2020-09-23'}, '1',  " _
       & "         'Brad Lamb', '1921 Appleseed Lane', 'Bayshore', 'CA', '94326', 'USA', 0,  " _ 
       & "         '80000002-1478562832', {d '2020-10-31'}, {d '2020-10-01'},  " _
       & "         '8000295C-1541711590', 'Memo Test', 0, '80000001-1478562826')"

Параметризация

С учетом сказанного, даже если вышеприведенное не работает, это еще одна веская причина для параметризации, отраслевого стандарта программирования для любого прикладного уровня, например VBA, для запуска SQL. Параметризация облегчает сопоставление типов данных между клиентом и сервером без необходимости заключать в кавычки или другие символические замыкания. ADO поддерживает параметры с помощью метода CreateParameter внутри объекта ADO Command (не для набора записей ADO).

' PREPARED STATEMENT WITH PLACEHOLDERS (NO LITERAL DATA)
sql = "INSERT INTO Invoice (CustomerRefListID, ARAccountRefListID, TxnDate, RefNumber, " _
       & "                  BillAddressAddr1, BillAddressAddr2, BillAddressCity,  " _
       & "                  BillAddressState, BillAddressPostalCode, BillAddressCountry,  " _
       & "                  IsPending, TermsRefListID, DueDate, ShipDate,  " _
       & "                  ItemSalesTaxRefListID, [Memo], IsToBePrinted,  " _
       & "                  CustomerSalesTaxCodeRefListID)  " _
       & " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?," _ 
       & "         ?, ?, ?, ?, ?, ?, ?, ?, ?)"

' OPEN CONNECTION
Set oConnection = CreateObject("ADODB.Connection")   
oConnection.Open sConnectString

' INITIALIZE AND RUN COMMAND
Set oCmd = CreateObject("ADODB.Command")              ' NEW ADO OBJECT
With oCmd
   .ActiveConnection = oConnection
   .CommandText = sql
   .CommandType = adCmdText

   ' BIND PARAMETERS
   .Parameters.Append .CreateParameter("pm1", adVarChar, adParamInput, ,"800001F6-1482536280")
   .Parameters.Append .CreateParameter("pm2", adVarChar, adParamInput, ,"8000001E-1478562986") 
   .Parameters.Append .CreateParameter("pm3", adDate, adParamInput, , CDate("9/23/2020"), 
   .Parameters.Append .CreateParameter("pm4", adVarChar, adParamInput, ,"1") 
   .Parameters.Append .CreateParameter("pm5", adVarChar, adParamInput, ,"Brad Lamb")
   .Parameters.Append .CreateParameter("pm6", adVarChar, adParamInput, ,"1921 Appleseed Lane")
   .Parameters.Append .CreateParameter("pm7", adVarChar, adParamInput, ,"Bayshore")
   .Parameters.Append .CreateParameter("pm8", adVarChar, adParamInput, ,"CA")
   .Parameters.Append .CreateParameter("pm9", adVarChar, adParamInput, ,"94326")
   .Parameters.Append .CreateParameter("pm10", adVarChar, adParamInput, ,"USA")
   .Parameters.Append .CreateParameter("pm11", adInteger, adParamInput, , 0)
   .Parameters.Append .CreateParameter("pm12", adVarChar, adParamInput, ,"80000002-1478562832")
   .Parameters.Append .CreateParameter("pm13", adDate, adParamInput, , CDate("10/31/2020"))
   .Parameters.Append .CreateParameter("pm14", adDate, adParamInput, , CDate("10/01/2020")) 
   .Parameters.Append .CreateParameter("pm15", adVarChar, adParamInput, ,"8000295C-1541711590")
   .Parameters.Append .CreateParameter("pm16", adVarChar, adParamInput, ,"Memo Test")
   .Parameters.Append .CreateParameter("pm17", adInteger, adParamInput, ,0)
   .Parameters.Append .CreateParameter("pm18", adVarChar, adParamInput, ,"80000001-1478562826")

   ' RUN PARAMETERIZED QUERY
   .Execute
End With

oConnection.Close
Set oCmd = Nothing: Set oConnection = Nothing

8
задан devio 17 February 2010 в 06:06
поделиться

2 ответа

Это кажется, что Вы уже выбрали формат документа, который является HTML на основе разметки MediaWiki.

Также необходимо генерировать Диаграммы сущностей и связей, которые являются полезными дополнениями к документации базы данных (хотя ERD's не рассказывает целую историю ни один).

Вы имеете в виду организацию документа, т.е. какие заголовки и содержание должны быть включены в каждую страницу?

Вот некоторые предложения:

  1. Структура таблицы

    • Имена столбцов, типы данных, ограничения
    • Значение и использование каждого столбца
    • Дополнительные логические ограничения в триггерах и коде приложения
    • Индексы определяются
  2. Отношения к другим таблицам

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

    • Использование в хранимых процедурах
    • Использование в коде приложения
    • Использование в представлениях
    • У кого есть доступ для чтения и/или доступ для записи; полномочия SQL каждого пользователя или роли

Существуют другие вопросы в StackOverflow, которые являются очень близко к этому.

7
ответ дан 5 December 2019 в 21:23
поделиться

Вы могли бы хотеть взглянуть на то, что коммерческие поставщики делают относительно этого. Как Bill сказал, Вам, конечно, нужна схема ER. Коммерческие продукты для взгляда на могли включать ER/Studio Причала, Красный Логический элемент SQL Doc, Разработчик Питания и другие.

0
ответ дан 5 December 2019 в 21:23
поделиться
Другие вопросы по тегам:

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