В настоящее время я создаю базу данных и столкнулся с проблемами с моими таблицами.
У меня есть tblCustomer
который включает CustomerID
который является autonumber
с форматом Customer-001
, однако у меня есть tblOrder
для заказа клиента, и между ними существует одно-много отношений.
У меня есть orderID
поле с autonumber
с форматом Order-001
. Проблема tblCustomer
с tblCustomer
customerID
в этой таблице, его тип данных - это number
но я использовал поиск, чтобы получить CustomerID
от tblCustomer
, чтобы добавить в таблицу Order
. Из-за формата Customer-001
нем есть буквы, и из-за этого возникает ошибка из-за типов данных.
Если вы хотите, чтобы номер клиента выглядел следующим образом: "Customer- 001", вы все равно можете использовать числовое поле в базе данных и просто форматировать число, подобное этому для отображения.
В окне Access Immediate (открыть с помощью Ctrl-G):
?Format$(1, """Customer-""000")
дает выход
Customer- 001
В поле " Format
"Customer-"000
поля Access вы заполните "Customer-"000
.
Никогда не храните Customer-001
в БД и никогда не используйте Customer-001
для соединения или запроса. В столбцах Accessononumber Access есть тип Number/Long Integer
.
Если вы хотите Customer-001
, вы бы Customer-001
SELECT * FROM tblCustomer WHERE CustomerID = 1
А также
Dim id as Long
id = DLookup("CustomerID", "tblCustomer", "CustomerName='Miller'")
Допускается 1
(или другое Long
значение) для id
, независимо от того, как было задано свойство Format
для этого столбца.
Т.е. формат (в отличие от типа столбца) не имеет значения, где клаузулы выполняются.
Вы должны вставить клиента в таблицу заказов, как это
INSERT INTO tblOrder (CustomerID, othercolumns)
VALUES (1, othervalues)
NOT VALUES ('1', othervalues)
или VALUES ('Customer-001', othervalues)
Я сделал тест. Моя таблица выглядит так (Access 2002):
Вот как он выглядит в моем доступе 2002 перед тем, как ввести что-то:
При вводе CustomerID
:
После ввода CustomerID
в поле даты:
?Format$(1, """Customer-""000")
и нажмите клавишуEnter
.? ...
является синонимом дляDebug.Print( ... )