У меня есть целый процесс в Access со множеством запросов, который был написан до поддержки BigInt. Есть таблица, которую мне пришлось импортировать, поскольку она содержала поле BigInt. Теперь, когда я использую O365, я могу работать с BigInt, но не хочу изменять все свои таблицы и запросы для поддержки BigInt. Вместо этого я создам новые запросы, которые смогут сравнивать текстовую версию поля BigInt, которая была импортирована, с фактическим BigInt в таблице теперь, когда я могу ссылаться на нее, чтобы иметь возможность обновлять связанную таблицу с помощью запросов. Поле может содержать до 17 цифр.
Я пробовал Val(textkey), но это дает научную запись. При формировании отображаются только 15 цифр слева и конечная цифра 00.
Cdbl() и Csng() делают то же самое. CLNG() дает мне #Num! ошибки. Cdec() выдает ошибку аргументов).
Это поле первичного ключа? Если это идентификатор, а не количество, почему бы просто не оставить его в текстовом поле?
Все сложно. Это первичный ключ, хранящийся как BigInt на SQL-сервере. Используя Access 2013, я создал собственный набор запросов и макросов для импорта данных, их анализа по сравнению с другими данными и внесения необходимых изменений. Редактирование производится с помощью специального клиента «Утилиты». Теперь, когда у меня есть O365, у меня есть возможность напрямую ссылаться на таблицу, поэтому я пытаюсь изменить свой инструмент, чтобы автоматизировать редактирование, а не делать это вручную с помощью утилиты. У меня так много запросов, переходов и временных таблиц, что я бы предпочел не просматривать и не изменять все это, чтобы использовать большое число для этих полей.


Используйте Decimal или преобразуйте в BigInt:
LongTextNumber = "1234567890123456"
? VBA.CDbl(LongTextNumber)
1.23456789012346E+15
? VBA.CLngLng(LongTextNumber)
1234567890123456
? VBA.CDec(LongTextNumber)
1234567890123456
Чтобы преобразовать в десятичное число в запросе, используйте эту оболочку:
Public Function CDec2(ByVal Value As Variant) As Variant
CDec2 = CDec(Value)
End Function
Мне нужно, чтобы это было в запросе SQL, а не в VBA. Cdbl создает научную запись. Изменение формата дает мне первые 15 из моих 17-значных идентификаторов записей (12345678901234500). Добавление к нему двухзначных чисел дает 00, если оно не превышает 50, затем оно округляется до следующей сотни. Clng дает мне #Num! ошибки. Cdec выдает мне ошибку «неправильные аргументы».
Это старая и глупая ошибка. См. расширенный ответ, пожалуйста, для обходного пути.
Отличный. Это работает, за исключением того, что вместо «Конца если» требуется «Конечная функция». Теперь новый вопрос: как создать поле «Большое число» с помощью запроса «Изменить таблицу, добавить столбец»? Я попробовал «Длинное целое число», но он просто создает тип «Число», который несовместим. И «Большое число» не распознается. Поиск Google не помогает, все, что я получаю, это как вручную добавить и определить поле.
Неважно. Это «БИГИНТ». Почему они такие противоречивые?? Спасибо за вашу помощь. Я бы поддержал ваш ответ, но я слишком новичок.
Должен иметь возможность принять ответ. Помните, что вы можете заработать очки, если примете участие в Туре, а затем сможете оставлять комментарии и голосовать за него.
Ах да, «принимаю». Это не то же самое, что голосовать за. Наверное, мне стоит съездить на экскурсию.
Я пытаюсь сохранить новую таблицу с типом данных «Большое число». Я работаю с 17-значными идентификаторами записей, и все, что я могу получить, это первые 15 цифр с конечным 00. Даже добавление к нему двухзначных чисел дает 00, если оно не превышает 50, а затем оно округляется до следующей сотни.