Вы должны вызвать функцию DoEvents-Function в цикле, чтобы передать управление операционной системе для перерисовки вашего GUI-интерфейса и для обработки любых других оконных сообщений, которые могут потребовать обработки. При этом приложение не будет помечено как «Не отвечает» в диспетчере задач и в строке заголовка.
Do Until rs.EOF = True
[...]
rs.MoveNext
DoEvents
Loop
Существует небольшая компромиссная производительность. Если не вызывать DoEvents, общее время выполнения для цикла будет немного короче, но Access ничего не сделает, а затем обработает ваш цикл. Поэтому кажется, что он не отвечает.
В SQL 2005 и выше VARCHAR (MAX) действительно является предпочтительным методом. Тип TEXT по-прежнему доступен, но в первую очередь для обратной совместимости с SQL 2000 и ниже.
В соответствии с найденным здесь здесь , varbinary (max) - это путь. Вы сможете хранить приблизительно 2 ГБ данных.
Varchar (max) доступен только в SQL 2005 или более поздней версии. Это будет хранить до 2 ГБ и может рассматриваться как обычный varchar. Перед SQL 2005 используйте тип «text».
Разделите текст на куски, которые может обрабатывать ваша база данных. И, поместите разделенный текст в другую таблицу. Используйте id
из таблицы text_chunk
как text_chunk_id
в исходной таблице. Возможно, вам понадобится еще один столбец в вашей таблице, чтобы сохранить текст, который соответствует вашему самому большому типу текстовых данных.
CREATE TABLE text_chunk (
id NUMBER,
chunk_sequence NUMBER,
text BIGTEXT)
В BLOB
BLOB - это очень большие переменные двоичные или символьные данные, обычно документы (.txt, .doc) и изображения (.jpeg, .gif, .bmp), которые могут быть сохранены в базы данных. В SQL Server BLOB могут быть текстовыми, ntext или типами данных изображения, вы можете использовать текстовый тип
text
Неравномерные данные переменной длины, хранящиеся на кодовой странице сервера, с максимальной длиной 231 - 1 (2 147 483 647) символов.
Используйте nvarchar(max)
, чтобы сохранить цепочку сообщений чата в одной записи. Каждое отдельное текстовое сообщение (или блок) идентифицируется в тексте содержимого путем вставки маркеров.
Пример:
{{UserId: Date and time}}<Chat Text>.
В режиме отображения времени отображения пользовательский интерфейс должен быть достаточно интеллектуальным, чтобы понимать эти маркеры и отображать его правильно. Таким образом, одна запись должна быть достаточной для одного сеанса связи, если ограничение по размеру не достигнуто.
Мне нравится использовать VARCHAR (MAX) (или фактически NVARCHAR), потому что он работает как стандартное поле VARCHAR. Поскольку это введение, я использую его, а не поля TEXT, когда это возможно.