Сохранить word в базе данных

0 / 0 / 0

Регистрация: 05.08.2018

Сообщений: 110

1

16.03.2019, 23:29. Показов 4604. Ответов 10


Студворк — интернет-сервис помощи студентам

Дорогие товарищи! Устал рыть интернет.

Подскажите, каким образом можно сохранить Word файл в MySql? А так же вернуть его обратно из базы?

Есть какой-нибудь способ залить его напрямую или нужно открывать считывать и отправлять в БД?

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

Желательно с конкретным примером кода если не трудно.

Заранее благодарен.



0



Администратор

Эксперт .NET

15431 / 12429 / 4949

Регистрация: 17.03.2014

Сообщений: 25,217

Записей в блоге: 1

17.03.2019, 00:33

2

Лучший ответ Сообщение было отмечено Usaga как решение

Решение

SatanInside, сохраняем как массив байтов (колонка типа varbinary) и так же читаем. Собственно данный подход можно использовать для любых файлов.



0



SatanInside

0 / 0 / 0

Регистрация: 05.08.2018

Сообщений: 110

17.03.2019, 09:55

 [ТС]

3

Каким кодом это можно сделать?

Пробовал это

C#
1
2
3
FileStream f = new FileStream(Directory.GetCurrentDirectory() + @"TMPLSTest.docx", FileMode.Open);
            BinaryReader br = new BinaryReader(f);
            byte ride = br.ReadByte();

вот это

C#
1
2
3
4
5
6
7
8
9
10
11
FileStream stream = new FileStream(Directory.GetCurrentDirectory() + @"TMPLSTest.docx", FileMode.Open, FileAccess.Read);
 
            int leng = (int)stream.Length;
 
            byte[] bufer = new byte[stream.Length];
 
            stream.Read(bufer, 0, leng);
 
            ASCIIEncoding ascii = new ASCIIEncoding();
 
            string res = ascii.GetString(bufer, 0, leng);

вот это

C#
1
2
3
4
5
6
7
8
9
10
using (FileStream fstream = File.OpenRead(@Directory.GetCurrentDirectory() + @"TMPLSTest.docx"))
            {
                // преобразуем строку в байты
                byte[] array = new byte[fstream.Length];
                // считываем данные
                fstream.Read(array, 0, array.Length);
                // декодируем байты в строку
                string textFromFile = System.Text.Encoding.Default.GetString(array);
                richTextBox1.Text = textFromFile;
            }

и даль по списку. в базу залетает только 13 байт, а должно быть 20 КБ!



0



Usaga

Эксперт .NET

11443 / 7770 / 1190

Регистрация: 21.01.2016

Сообщений: 29,163

17.03.2019, 12:42

4

SatanInside, а где код записи в базу?

И что это за дичь?

Цитата
Сообщение от SatanInside
Посмотреть сообщение

C#
1
2
// декодируем байты в строку
 string textFromFile = System.Text.Encoding.Default.GetString(array);



0



0 / 0 / 0

Регистрация: 05.08.2018

Сообщений: 110

17.03.2019, 13:42

 [ТС]

5

Напишите, пожалуйста, пример кода. Я второй день пытаюсь разобраться с это проблемой, и без успешно.



0



Эксперт .NET

11443 / 7770 / 1190

Регистрация: 21.01.2016

Сообщений: 29,163

17.03.2019, 14:01

6

SatanInside, примеры работы с ADO.NET можно посмотреть тут. Подключение к MySQL из ADO.NET описано тут. Как документ загрузить разберётесь.



0



SatanInside

0 / 0 / 0

Регистрация: 05.08.2018

Сообщений: 110

17.03.2019, 14:20

 [ТС]

7

Usaga, до mysql мне как до Китая раком. Мне сначала нужно понять как считать содержимое .docx файла, так как это не обычный текстовый файл, что бы потом это содержимое записать в БД. Из ранее приведённых мною пример видно на какой стадии я застрял. Зачем вы даёте мне ссылки на инструкции по работе с БД? С этим у меня проблем нет. Они мне сейчас совершенно ни к чему. Я пробовал разные варианты чтения из файла .docx но ничего не получается. Вот последний из них:

C#
1
2
3
4
5
6
7
8
9
10
11
string path = Directory.GetCurrentDirectory() + "\test.docx";
            string bufer = "";
            using (FileStream fs = File.OpenRead(path))
            {
                byte[] fileData = new byte[fs.Length];
                fs.Read(fileData, 0, (int)fs.Length);
                for (int i = 0; i < fs.Length; i++)
                {
                    bufer = bufer + fileData[i].ToString();
                }
            }

При чтении содержимого файла test.docx общий объём данных составляет 28КБ, хотя сам файл весит 13КБ. При попытке сразу же записать содержимое в новый файл этого же формата, документ вообще перестаёт открываться. Word говорит, что файл испорчен.



0



Эксперт .NET

11443 / 7770 / 1190

Регистрация: 21.01.2016

Сообщений: 29,163

17.03.2019, 14:25

8

SatanInside, это потому, что вы что попало делаете. Читайте документ как массив байт. И в базу сохраняйте в поле BLOB. Не надо документ представлять строкой текста. Это не строка текста никаким боком.



0



SatanInside

0 / 0 / 0

Регистрация: 05.08.2018

Сообщений: 110

17.03.2019, 15:10

 [ТС]

9

Ok, с чтением в побайтово разобрался:

C#
1
2
3
4
5
byte[] result = null;
            FileStream fileStream = File.OpenRead(Directory.GetCurrentDirectory() + @"TMPLSTest.docx");
            BinaryReader binaryReader = new BinaryReader(fileStream);
            int count = (int)fileStream.Length;
            result = binaryReader.ReadBytes(count);

Теперь мне нужно вставить это в базу данных. Вставляю вот так:

C#
1
2
command.CommandText = "INSERT INTO templates (templates_Name, templates_Content) VALUES ('TEST.docx', '" + result + "')";
            int numberOfUpdatedItems = command.ExecuteNonQuery();

В итоге, в ячейку залетает только 13Байт, а должно быть 13КБ. В таблице стоит varbinary(15000).
Что делаю не так?



0



OwenGlendower

Администратор

Эксперт .NET

15431 / 12429 / 4949

Регистрация: 17.03.2014

Сообщений: 25,217

Записей в блоге: 1

17.03.2019, 15:50

10

Лучший ответ Сообщение было отмечено Usaga как решение

Решение

Цитата
Сообщение от SatanInside
Посмотреть сообщение

C#
1
"VALUES ('TEST.docx', '" + result + "')"

В итоге, в ячейку залетает только 13Байт

Ну ты блин даешь. У массива не перегружен ToString() и значит сработает object.ToString() который вернет строку System.Byte[] — те самые 13 байт. Нужно делать так:

C#
1
2
3
command.CommandText = "INSERT INTO templates (templates_Name, templates_Content) VALUES ('TEST.docx', @Content)";
command.Parameters.AddWithValue("@Content", result);
int numberOfUpdatedItems = command.ExecuteNonQuery();

И, кстати, содержимое файла можно прочитать одной строкой

C#
1
byte[] result = File.ReadAllBytes(Directory.GetCurrentDirectory() + @"TMPLSTest.docx"));



1



0 / 0 / 0

Регистрация: 05.08.2018

Сообщений: 110

19.03.2019, 00:25

 [ТС]

11

Спасибо большое! Всё работает, разобрался.



0



Существует два способа переноса данных из текстового файла в Access. Если вы хотите создать копию данных, доступную для изменения в Access, файл следует импортировать в новую или существующую таблицу с помощью мастера импорта текстовых файлов. Если вы просто хотите просматривать обновленные исходные данные в Access и использовать расширенные функции запросов и отчетов, создайте в базе данных связь с текстовым файлом с помощью мастера связывания с текстовыми файлами.

В этой статье подробно описываются процедуры импорта и связывания с текстовым файлом с помощью мастеров.

В этой статье

  • Текстовые файлы и поддерживаемые форматы

  • Импорт данных из текстового файла

  • Что еще важно знать об импорте

  • Решение проблем, связанных с отсутствующими и неверными значениями в импортированной таблице

  • Создание связи с текстовым файлом

  • Решение проблем со значением #ЧИСЛО! и неверными значениями в связанной таблице

Текстовые файлы и поддерживаемые форматы

Текстовый файл содержит читаемые знаки без форматирования (например, буквы и цифры) и специальные символы (такие как табуляция, перевод строки и возврат каретки). Access поддерживает следующие расширения для имени файла: TXT, CSV, ASC и TAB.

Чтобы использовать текстовый файл в качестве источника для импорта или связывания, необходимо структурировать его содержимое таким образом, чтобы мастера импорта и связывания могли разделить его на записи (строки), а каждую запись — на поля (столбцы). Текстовые файлы с правильной структурой делятся на два типа:

  • Файлы с разделителями.    В таких файлах каждая запись располагается на отдельной строке, а поля отделяются друг от друга одним символом (разделителем). Разделителем может служить любой знак, который не используется в значениях полей, например знак табуляции, точка с запятой, запятая, пробел и т. д. Ниже приведен пример текста с разделителями-запятыми.

    1,Company A,Anna,Bedecs,Owner
    2,Company C,Thomas,Axen,Purchasing Rep
    3,Company D,Christina,Lee,Purchasing Mgr.
    4,Company E,Martin,O’Donnell,Owner
    5,Company F,Francisco,Pérez-Olaeta,Purchasing Mgr.
    6,Company G,Ming-Yang,Xie,Owner
    7,Company H,Elizabeth,Andersen,Purchasing Rep
    8,Company I,Sven,Mortensen,Purchasing Mgr.
    9,Company J,Roland,Wacker,Purchasing Mgr.
    10,Company K,Peter,Krschne,Purchasing Mgr.
    11,Company L,John,Edwards,Purchasing Mgr.
    12,Company M,Andre,Ludo,Purchasing Rep
    13,Company N,Carlos,Grilo,Purchasing Rep
    

  • Файлы с полями фиксированного размера.    В таком файле каждая запись размещается на отдельной строке, а ширина каждого поля является постоянной для всех записей. Например, первое поле каждой записи всегда состоит из семи знаков, второе — всегда из 12, и т. д. Если фактические значения поля различаются от записи к записи, к значениям, длина которых меньше требуемой ширины, в конце нужно добавить пробелы. Ниже приведен пример текста с полями фиксированного размера.

    1   Company A   Anna       Bedecs         Owner            
    2   Company C   Thomas     Axen           Purchasing Rep   
    3   Company D   Christina  Lee            Purchasing Mgr.  
    4   Company E   Martin     O’Donnell      Owner            
    5   Company F   Francisco  Pérez-Olaeta   Purchasing Mgr.  
    6   Company G   Ming-Yang  Xie            Owner            
    7   Company H   Elizabeth  Andersen       Purchasing Rep   
    8   Company I   Sven       Mortensen      Purchasing Mgr.  
    9   Company J   Roland     Wacker         Purchasing Mgr.  
    10  Company K   Peter      Krschne        Purchasing Mgr.  
    11  Company L   John       Edwards        Purchasing Mgr.  
    12  Company M   Andre      Ludo         Purchasing Rep   
    13  Company N   Carlos     Grilo          Purchasing Rep   
    

К началу страницы

Импорт данных из текстового файла

Если вы хотите сохранить все данные текстового файла или их часть в базе данных Access, содержимое файла следует импортировать в новую таблицу или добавить к существующей. Импортированные данные можно просматривать и редактировать, не влияя на исходный текстовый файл.

В ходе импорта вы можете задать структуру исходного файла и выбрать вариант импорта: в новую или существующую таблицу.

В конце импорта можно сохранить сведения о нем в виде спецификации. Спецификация позволяет выполнять импорт повторно без использования мастера.

Стандартные сценарии импорта текстового файла в Access

Как правило, текстовые данные импортируются в Access по следующим причинам:

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

  • Вы используете Access для управления данными, но при этом регулярно получаете данные в текстовом формате от пользователей другой программы. Импорт данных выполняется регулярно, и вы хотите упростить этот процесс для экономии времени и усилий.

Примечание: Если открыть в Access текстовый файл (для этого нужно выбрать в списке Тип файлов диалогового окна Открытие файла базы данных значение Все файлы и щелкнуть нужный текстовый файл), Access запустит мастер связывания с текстовыми файлами, который позволяет создать ссылку на текстовый файл, вместо того чтобы импортировать его содержимое. Связывание с файлом отличается от импорта его содержимого. Дополнительные сведения о связывании с текстовыми файлами см. в разделе Создание связи с текстовым файлом далее в этой статье.

Подготовка исходного файла

  1. Откройте исходный файл в текстовом редакторе, например в Блокноте.

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

  2. Просмотрите содержимое исходного текстового файла и выполните действия из приведенной ниже таблицы.

    Элемент

    Описание

    Разделители или поля фиксированного размера

    Убедитесь, что содержимое файла соответствует выбранному формату. Если это файл с разделителями, найдите разделитель. Если это файл с полями фиксированного размера, убедитесь, что длина значения поля одинакова во всех записях.

    Ограничители текста

    Некоторые файлы с разделителями могут содержать значения полей, заключенные в одинарные или двойные кавычки, как показано ниже:

    • «Ольга Зуева»,25,4.5.2017,»Нижний Новгород»

    • «Глеб Селезнев»,27,2018,»Вологда»

    Знак, используемый для ограничения значения поля, называется ограничителем текста. Ограничители не являются обязательными, но их рекомендуется использовать в следующих случаях:

    • Разделитель является частью значения поля. Например, если в качестве разделителя используется запятая, а значение поля равно Самара, Вологда, его придется заключить в ограничители: «Самара, Вологда».

    • Вы хотите, чтобы Access обрабатывал нетекстовые значения, например 0452934 и 0034539, как текстовые и хранил их в текстовом поле.

    Во время импорта можно указать, используется ли в файле ограничитель, и, если он используется, задать соответствующий знак.

    Убедитесь в том, что во всем файле используется один ограничитель текста и что он применяется только к текстовым значениям.

    Количество полей

    Число исходных полей не должно превышать 255 , так как Access поддерживает не более 255 полей в таблице.

    Пропуск записей и значений

    Если вам нужно перенести лишь часть текстового файла, его следует отредактировать перед началом импорта, так как пропуск записей в ходе операции невозможен.

    Если вы добавляете данные в новую таблицу, некоторые поля можно пропустить, но этот вариант не поддерживается при добавлении в существующую таблицу. В последнем случае структура исходных данных должна соответствовать структуре конечной таблицы. Другими словами, в исходном файле должно быть то же число столбцов, что и в конечной таблице, а типы данных должны совпадать с типами данных в конечной таблице.

    Пустые строки и поля

    Удалите все лишние пустые строки из файла. При наличии пустых полей добавьте в них отсутствующие данные. Если вы планируете добавить записи в существующую таблицу, убедитесь, что соответствующие поля таблицы допускают использование значений NULL. Поле может принимать значения NULL, если для его свойства Обязательное поле задано значение Нет, а свойство Условие на значение не запрещает значения NULL.

    Лишние символы

    Найдите и удалите лишние символы (табуляции, перевода строки, возврата каретки).

    Типы данных

    Чтобы избежать ошибок при импорте, убедитесь, что типы данных в полях одинаковы для всех строк. Access считывает первые 25 строк файла, чтобы определить тип данных для полей таблицы. Настоятельно рекомендуем убедиться в том, что первые 25 исходных строк не содержат данные разных типов. Кроме того, нетекстовые значения, которые требуется обрабатывать как текстовые, необходимо заключить в одинарные или двойные кавычки.

    Если исходный файл содержит смешанные значения в строках, идущих после 25-й строки, они могут быть пропущены или неправильно преобразованы при импорте. Сведения об устранении проблем см. в разделе Решение проблем, связанных с отсутствующими и неверными значениями в импортированной таблице далее в этой статье.

    Имена полей

    Если файл с разделителями не содержит имена полей, их рекомендуется указать в первой строке. В ходе импорта можно настроить мастер так, чтобы значения в первой строке считались именами полей. При импорте файлов с полями фиксированного размера такая возможность недоступна.

    Примечание: Если вы добавляете файл с полями фиксированного размера в существующую таблицу, убедитесь, что имя каждого столбца в точности соответствует имени поля. Если они отличаются, импорт завершится сбоем. Чтобы просмотреть имена полей, откройте конечную таблицу в режиме конструктора.

  3. Закройте исходный файл, если он открыт. Если исходный файл остается открытым в ходе операции импорта, могут возникнуть ошибки преобразования данных.

Запуск импорта в Access

  1. Откройте базу данных Access, в которой будут храниться импортируемые данные. Если ни одна из существующих баз данных не подходит для этого, создайте пустую базу данных.

  2. Перед началом импорта следует определить, в какой таблице будут храниться данные: в новой или существующей.

    • Создание новой таблицы.    Если необходимо сохранить данные в новой таблице, в Access создается таблица, в которую добавляются импортируемые данные. Если таблица с указанным именем уже существует, ее содержимое перезаписывается импортируемыми данными.

    • Добавление в существующую таблицу.    Если используется существующая таблица, при импорте данные добавляются в нее.

      Следует помнить, что ошибки в ходе добавления зачастую объясняются тем, что исходные данные не соответствуют структуре и параметрам полей в конечной таблице. Чтобы избежать таких ошибок, откройте таблицу в режиме конструктора и проверьте следующее:

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

      • Отсутствующие или лишние поля.    Если в конечной таблице отсутствует одно или несколько полей, добавьте их до начала импорта. Если же таблица содержит поля, отсутствующие в исходном файле, их не требуется удалять из таблицы, если для них разрешены значения NULL.

        Совет: Поле может принимать значения NULL, если для его свойства Обязательное поле задано значение Нет, а свойство Условие на значение не запрещает значения NULL.

      • Первичный ключ.    Если таблица содержит поле первичного ключа, исходный файл должен содержать столбец со значениями, совместимыми с полем первичного ключа. Кроме того, импортируемые значения ключа должны быть уникальными. Если импортируемая запись содержит значение первичного ключа, которое уже существует в таблице, отображается сообщение об ошибке. Нужно отредактировать исходные данные таким образом, чтобы они содержали уникальные значения ключа, а затем повторить импорт.

      • Индексированные поля.    Если для свойства Индексированное поле поля в таблице задано значение Да (совпадения не допускаются), соответствующий столбец в исходном текстовом файле должен содержать уникальные значения.

  3. Расположение мастера импорта или связывания текста зависит от используемой версии Access. Выполните действия, которые соответствуют вашей версии Access.

    • Если вы используете Access 2019 или последнюю версию Access, которая предоставляется по подписке на Microsoft 365, на вкладке Внешние данные в группе Импорт и связи нажмите кнопку Создать источник данных и выберите Из файла > Текстовый файл.

    • Если вы используете Access 2016, Access 2013 или Access 2010, на вкладке Внешние данные в группе Импорт и связи нажмите кнопку Текстовый файл.

  4. Откроется диалоговое окно Внешние данные — Текстовый файл.

    Выберите вариант для импорта данных из текстового файла, их добавления или создания связи с ними.

  5. В диалоговом окне Внешние данные — Текстовый файл введите путь к исходному файлу в поле Имя файла.

  6. Укажите способ сохранения импортируемых данных.

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

    • Чтобы добавить данные в существующую таблицу, выберите параметр Добавить копию записей в конец таблицы и выберите таблицу в раскрывающемся списке.

      Примечание: Сведения о связывании с источником данных путем создания связанной таблицы см. ниже в разделе Создание связи с текстовым файлом.

  7. Нажмите кнопку ОК.

    Access проверит содержимое файла и предложит его структуру. Если в файле используется разделитель, убедитесь, что выбран вариант с разделителями. Если файл содержит поля фиксированного размера, убедитесь, что выбран параметр фиксированная ширина полей. Если вы не уверены, какие поля в файле, см. предыдущий раздел (Подготовка исходного файла).

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

  8. Нажмите кнопку Далее.

    В зависимости от выбранного варианта (файл с разделителями или с полями фиксированного размера) мастер отображает нужные сведения.

    С разделителями

    Выберите или укажите знак, разделяющий значения полей (табуляция, точка с запятой, запятая, пробел или другой). Если в файле используется ограничитель строк, выберите в поле Ограничитель текста двойные («) или одинарные () кавычки. Если первая строка исходного файла содержит имена полей, установите флажок Первая строка содержит имена полей. Затем нажмите кнопку Далее.

    Фиксированная ширина полей

    Мастер отображает содержимое файла. Если Access обнаруживает столбцы данных, для разделения полей вставляются вертикальные черты. Просмотрите предлагаемую мастером структуру и следуйте его инструкциям, если нужно добавить, удалить или исправить строки. Затем нажмите кнопку Далее.

  9. Если вы добавляете данные в существующую таблицу, перейдите к шагу 12. Если же данные импортируются в новую таблицу, нажмите кнопку Далее, чтобы просмотреть свойства полей, отображаемые в мастере.

    Примечание: Страница мастера, на которой можно указать сведения об импортируемых полях, не отображается при добавлении записей в существующую таблицу.

  10. Щелкните столбец в нижней части страницы, чтобы отобразить свойства нужного поля. Просмотрите и измените имя и тип данных конечного поля.

    Access проверяет первые 25 строк каждого столбца, чтобы определить тип данных для соответствующего поля. Если первые 25 строк столбца содержат значения разных типов, например текст и числа, мастер предлагает тип данных, совместимый со всеми значениями столбца или их большинством (как правило, это текстовый тип данных). Хотя можно выбрать и другой тип данных, следует помнить, что значения, несовместимые с этим типом, будут в ходе импорта пропущены или преобразованы неправильно. Дополнительные сведения о том, как исправить неверные или отсутствующие значения, см. ниже в разделе Решение проблем, связанных с отсутствующими и неверными значениями в импортированной таблице.

  11. Чтобы создать индекс для поля, присвойте свойству Индексировано значение Да. Чтобы пропустить весь исходный столбец, установите флажок Не импортировать (пропустить) поле. Затем нажмите кнопку Далее.

  12. Если записи добавляются в новую таблицу, мастер предлагает указать для нее первичный ключ. При выборе варианта автоматически создать ключ Access добавляет поле счетчика в качестве первого поля конечной таблицы и автоматически заполняет его уникальными значениями кодов, начиная с 1. Нажмите кнопку Далее.

    Примечание: Страница мастера, на которой можно указать сведения об импортируемых полях, не отображается при добавлении записей в существующую таблицу.

  13. Откроется последняя страница мастера. Если записи импортируются в новую таблицу, укажите ее имя в поле Импорт в таблицу. Если такая таблица уже существует, появится запрос о перезаписи ее содержимого. Нажмите кнопку Да, чтобы продолжить, или кнопку Нет, чтобы указать другое имя конечной таблицы.

    Для чего предназначена кнопка Дополнительно?

    Кнопка Дополнительно в мастере импорта текстовых файлов служит для создания или открытия спецификаций импорта в формате, который использовался в предыдущих версиях Access. Кнопку Дополнительно рекомендуется использовать только в том случае, если спецификации импорта, созданные в предыдущих версиях Access, требуется использовать в Access 2007. Если же вы хотите сохранить сведения об этой операции импорта, прочтите следующий раздел.

  14. Чтобы импортировать данные, нажмите кнопку Готово.

    Access попытается импортировать данные. Если хотя бы часть данных импортирована, в мастере появится диалоговое окно, в котором указывается состояние импорта. Если же операция закончилась сбоем, в Access отображается сообщение Ошибка при попытке импорта файла.

  15. Откройте конечную таблицу в режиме таблицы. Сравните данные в таблице с исходным файлом, чтобы убедиться в их правильности.

Что еще важно знать об импорте

  • Сведения о том, как сохранить сведения об импорте в виде спецификации, которую можно использовать повторно, см. в статье Сохранение параметров операции импорта или экспорта в виде спецификации.

  • Дополнительные сведения о запуске спецификаций см. в статье Выполнение сохраненной операции импорта или экспорта.

  • Дополнительные сведения о запуске спецификаций в определенное время см. в статье Планирование импорта или экспорта.

  • Сведения о том, как изменить имя спецификации, удалить ее или обновить имена исходных файлов, см. в статье Задачи управления данными.

Решение проблем, связанных с отсутствующими и неверными значениями в импортированной таблице

Сообщение Ошибка при попытке импорта файла свидетельствует о том, что импорт завершился сбоем. Если же после импорта отображается страница, на которой предлагается сохранить сведения об операции, это означает, что данные были полностью или частично импортированы. В сообщении о состоянии указывается также имя таблицы, которая содержит описание всех ошибок, возникших в ходе импорта.

Важно отметить, что даже если в сообщении о состоянии указано, что операция завершилась успешно, перед использованием таблицы следует просмотреть ее содержимое и структуру, чтобы убедиться в правильности всех данных.

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

В приведенной ниже таблице описаны действия по разрешению проблем, связанных с отсутствующими или неверными значениями.

Совет: Если вы обнаружили лишь несколько отсутствующих значений, можно добавить их в таблицу вручную в режиме таблицы. Если же отсутствует или неправильно импортирован целый столбец либо большой объем данных, следует исправить исходный файл. После устранения всех возможных проблем повторите импорт.

Проблема

Решение

Значения –1 или 0

Если в исходном файле есть поле, которое содержит только значения «Истина» или «Ложь» либо только значения «Да» или «Нет», и для этого поля выбран тип данных «Логический», в таблице появятся значения –1 и 0. Откройте таблицу в режиме конструктора и задайте для свойства Формат значение Истина/Ложь или Да/Нет.

Многозначные поля

В Access импорт нескольких значений в одно поле не поддерживается. Список значений обрабатывается как одно значение и помещается в тестовое поле. Значения в поле разделяются точкой с запятой.

Усеченные данные

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

Отсутствуют данные в поле первичного ключа или индексированном поле

Импортируемые записи могут содержать повторяющиеся значения, которые невозможно сохранить в поле первичного ключа в конечной таблице или в поле, для которого свойству Индексировано присвоено значение Да (без повторов) в базе данных Access. Удалите повторяющиеся значения в исходном файле и повторите импорт.

Пустые значения

Открыв таблицу в режиме таблицы, вы можете заметить, что некоторые поля пустые. Чтобы сократить количество пустых значений в таблице или полностью удалить их, выполните перечисленные ниже действия.

  • Если в первых 25 строках исходного файла встречаются значения с разным типом данных, откройте файл и поменяйте порядок строк таким образом, чтобы в каждом поле в первых 25 строках тип данных совпадал. Затем попробуйте повторить импорт.

  • Заключите в одинарные или двойные кавычки все нетекстовые значения, которые вы хотите сохранить как текстовые.

  • В ходе импорта выберите для каждого поля подходящий тип данных. Если он указан неправильно, во всем столбце могут появиться пустые или неверные значения.

Кроме того, может потребоваться просмотреть таблицу ошибок, о которой говорится на последней странице мастера, в режиме таблицы. Эта таблица содержит три поля: «Ошибка», «Поле» и «Строка». В каждой ее строке содержатся сведения об определенной ошибке, а данные в поле «Ошибка» можно использовать при устранении проблем.

Полный список ошибок и советы по устранению неполадок

Ошибка

Описание

Обрезка полей

Значение в поле превышает размер, заданный свойством FieldSize этого поля.

Ошибка преобразования типа

Значение в текстовом файле или на листе не соответствует типу данных поля. Это значение может быть заменено пустым или неверным значением в конечном поле. Дополнительные сведения об устранении этой проблемы см. в предыдущей таблице.

Нарушение уникальности ключа

Значение первичного ключа записи совпадает со значением, уже имеющимся в таблице.

Нарушение условия на значение

Значение не соответствует правилу, заданному для этого поля или таблицы с помощью свойства ValidationRule.

Пустое значение в обязательном поле

Данное поле не может иметь пустое значение, поскольку его свойство Обязательное поле (Required) имеет значение Да.

Пустое значение в поле счетчика

Импортируемые данные содержат пустое значение (NULL), и была выполнена попытка добавить его в поле счетчика.

Неинтерпретируемая запись

Текстовое значение содержит знак разделителя (как правило, это прямые кавычки). Если значение содержит знак разделителя, он должен содержаться в текстовом файле дважды, например:

по 10 дискет 3 1/2″» в коробке

К началу страницы

Создание связи с текстовым файлом

Связывание позволяет использовать данные из другого файла, не импортируя их. В этом случае можно просматривать обновленные данные как в исходной программе, так и в файле Access. При этом не требуется создавать и обновлять копию данных в Access. Если вместо копирования текстового файла в базу данных Access требуется использовать его для выполнения запросов и создания отчетов, следует использовать не операцию импорта, а функцию связывания с текстовым файлом.

Когда вы создаете связь с текстовым файлом, Access создает таблицу, которая связана с исходным файлом. Все изменения, вносимые в исходный файл, применяются к связанной таблице. При этом изменение данных таблицы в Access не разрешается. Если вы хотите внести изменения в содержимое или структуру, откройте исходный файл и отредактируйте его.

Стандартные сценарии связывания с текстовым файлом из Access

  • Вы используете программу, которая сохраняет выходные данные в текстовом формате, однако эти данные нужны для анализа и создания отчетов в других приложениях, в том числе в Access.

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

Первое связывание с текстовым файлом

  • При связывании с текстовым файлом в Access создается новая таблица, которая называется также связанной таблицей. В ней отображаются данные исходного файла; при этом они не сохраняются в базе данных.

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

  • База данных может содержать несколько связанных таблиц.

  • Все изменения данных в исходном файле автоматически отражаются в связанной таблице. Однако содержимое и структура связанной таблицы Access доступны только для чтения.

  • При открытии текстового файла в Access создается пустая база данных и автоматически запускается мастер связывания с текстовыми файлами.

Шаги по созданию связи с текстовым файлом

  1. Найдите текстовый файл и откройте его в текстовом редакторе, например, в Word или Блокноте.

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

  2. Просмотрите данные исходного файла и выполните необходимые действия в соответствии с приведенной ниже таблицей.

    Элемент

    Описание

    Разделители или поля фиксированного размера

    Убедитесь, что содержимое файла соответствует выбранному формату. Если это файл с разделителями, найдите разделитель. Если это файл с полями фиксированного размера, убедитесь, что длина значения поля одинакова во всех записях.

    Ограничители текста

    Некоторые файлы с разделителями могут содержать значения полей, заключенные в одинарные или двойные кавычки, как показано ниже:

    «Ольга Зуева»,25,4.5.2017,»Нижний Новгород»

    «Глеб Селезнев»,27,2018,»Вологда»

    Знак, используемый для ограничения значения поля, называется ограничителем текста. Ограничители не являются обязательными, но их рекомендуется использовать в следующих случаях:

    • Разделитель является частью значения поля. Например, если в качестве разделителя используется запятая, а значение поля равно Самара, Вологда, его придется заключить в ограничители: «Самара, Вологда».

    • Вы хотите, чтобы Access обрабатывал нетекстовые значения, например 0452934 и 0034539, как текстовые и хранил их в текстовом поле.

    Во время связывания можно указать, используется ли в файле ограничитель, и, если он используется, задать соответствующий знак.

    Убедитесь в том, что во всем файле используется один ограничитель текста и что он применяется только к текстовым значениям.

    Количество полей

    Число исходных полей не должно превышать 255 , так как Access поддерживает не более 255 полей в таблице.

    Пропуск записей и полей

    Вы можете пропустить некоторые поля, но не записи.

    Пустые строки и поля

    Удалите все лишние пустые строки в файле. При наличии пустых полей постарайтесь добавить в них отсутствующие данные в исходном файле.

    Лишние символы

    Найдите и удалите лишние знаки (символы табуляции, перевода строки, возврата каретки).

    Типы данных

    Чтобы избежать ошибок при связывании, убедитесь, что типы данных в полях одинаковы для всех строк. Access считывает первые 25 строк файла, чтобы определить тип данных для полей таблицы. Настоятельно рекомендуем убедиться в том, что первые 25 исходных строк не содержат данные разных типов. Кроме того, нетекстовые значения, которые требуется обрабатывать как текстовые, необходимо заключить в одинарные или двойные кавычки.

    Если исходный файл содержит смешанные значения в строках, идущих после 25-й строки, они могут быть неправильно преобразованы или привести к ошибкам. Сведения об устранении проблем см. в разделе Решение проблем со значением #ЧИСЛО! и неверными значениями в связанной таблицедалее в этой статье.

    Имена полей

    Если файл с разделителями не содержит имена полей, их рекомендуется указать в первой строке. В ходе связывания можно настроить мастер так, чтобы значения в первой строке считались именами полей. Однако при импорте файлов с полями фиксированного размера такая возможность недоступна.

  3. Закройте исходный файл, если он открыт.

  4. Откройте базу данных, в которой требуется создать связь. Убедитесь, что база данных доступна не только для чтения и что у вас есть права на внесение в нее изменений.

    Если ни одна из существующих баз данных не подходит для хранения связи, создайте пустую базу данных.

  5. Расположение мастера импорта или связывания текста зависит от используемой версии Access. Выполните действия, которые соответствуют вашей версии Access.

    • Если вы используете Access 2019 или последнюю версию Access, которая предоставляется по подписке на Microsoft 365, на вкладке Внешние данные в группе Импорт и связи нажмите кнопку Создать источник данных и выберите Из файла > Текстовый файл.

    • Если вы используете Access 2016, Access 2013 или Access 2010, на вкладке Внешние данные в группе Импорт и связи нажмите кнопку Текстовый файл.

  6. Откроется диалоговое окно Внешние данные — Текстовый файл.

    Выберите вариант для импорта данных из текстового файла, их добавления или создания связи с ними.

  7. В диалоговом окне Внешние данные — Текстовый файл укажите имя текстового файла, который содержит данные для связывания, в поле Имя файла.

  8. Выберите вариант Создать связанную таблицу для связи с источником данных и нажмите кнопку ОК.

    Откроется мастер связывания с текстовыми файлами, помогающий выполнить нужные действия по связыванию.

  9. Access проверит содержимое файла и предложит его структуру. Если в файле используется разделитель, убедитесь, что выбран вариант с разделителями. Если файл содержит поля фиксированного размера, убедитесь, что выбран параметр фиксированная ширина полей.

  10. Нажмите кнопку Далее.

  11. Следующая страница зависит от выбранного варианта (файл с разделителями или полями фиксированного размера).

    Файлы с разделителями.    Выберите или укажите знак разделителя для значений полей. Если в файле используется ограничитель строк, выберите в поле Ограничитель текста значение « (двойные кавычки) или (одинарные кавычки). Если первая строка исходного файла содержит имена полей, установите флажок Первая строка содержит имена полей. Затем нажмите кнопку Далее.

    Файлы с полями фиксированного размера.    Мастер отображает содержимое файла. Если Access обнаруживает столбцы данных, для разделения полей вставляются вертикальные черты. Просмотрите предлагаемую мастером структуру и следуйте его инструкциям, если нужно добавить, удалить или исправить строки. Затем нажмите кнопку Далее.

  12. На следующей странице мастера выводятся свойства поля. Щелкните столбец в нижней части страницы, чтобы отобразить свойства нужного полей. Просмотрите и измените имена и типы данных конечных полей.

    Access проверяет первые 25 строк каждого столбца, чтобы определить тип данных для соответствующего поля. Если первые 25 строк столбца содержат значения разных типов, например текст и числа, мастер предлагает тип данных, совместимый со всеми значениями столбца или их большинством (как правило, это текстовый тип данных). Хотя можно выбрать и другой тип данных, следует помнить, что значения, несовместимые с этим типом, будут преобразованы неправильно или приведут к ошибкам. Дополнительные сведения см. ниже в разделе Решение проблем со значением #ЧИСЛО! и неверными значениями в связанной таблице.

    Для чего предназначена кнопка Дополнительно?

    Кнопка Дополнительно в мастере служит для создания или открытия спецификаций связывания в формате, который использовался в предыдущих версиях Access. В Access не поддерживается сохранение спецификации для связывания (в отличие от импорта и экспорта). Поэтому для сохранения спецификации связывания следует нажать кнопку Дополнительно, выбрать нужные параметры и нажать кнопку Сохранить как.

  13. Нажмите кнопку Далее.

  14. На последней странице мастера укажите имя связанной таблицы и нажмите кнопку Готово. Если таблица с указанным именем существует, появится запрос на ее перезапись. Нажмите кнопку Да, чтобы перезаписать файл, или кнопку Нет, чтобы задать другое имя таблицы.

    Access попытается создать связанную таблицу. В случае успешного создания таблицы появится сообщение Завершено связывание таблицы. Откройте связанную таблицу и просмотрите поля и данные, чтобы убедиться в их правильности.

К началу страницы

Решение проблем со значением #ЧИСЛО! и неверными значениями в связанной таблице

Даже если появится сообщение Завершено связывание таблицы, откройте таблицу в режиме таблицы и убедитесь, что все строки и столбцы содержат правильные данные.

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

Проблема

Решение

Значения –1 или 0

Если в исходном файле есть поле, которое содержит только значения «Истина» или «Ложь» либо только значения «Да» или «Нет», и для этого поля выбран тип данных Логический, в таблице появятся значения –1 и 0. Откройте таблицу в режиме конструктора и задайте для свойства Формат значение Истина/Ложь или Да/Нет.

Многозначные поля

При связывании в одном поле не может быть несколько значений. Список значений обрабатывается как одно значение и помещается в тестовое поле. Значения в поле разделяются точкой с запятой.

Усеченные данные

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

#ЧИСЛО!

Открыв таблицу в режиме таблицы, вы можете заметить, что некоторые поля содержат значение #ЧИСЛО! вместо фактического значения. Чтобы свести к минимуму количество значений NULL в таблице или избавиться от них совсем, выполните следующие действия:

  • Заключите в одинарные или двойные кавычки все нетекстовые значения, которые вы хотите сохранить как текстовые.

  • В ходе связывания выберите подходящий тип данных для каждого поля. Если выбран неверный тип данных, конечный столбец может содержать только значения #ЧИСЛО! во всех строках.

В приведенной ниже таблице содержится список случаев, в которых будут появляться ошибки #ЧИСЛО!.

Тип отсутствующих значений

Тип конечного поля

Действие

Текст

Числовое поле или поле даты

Замените все текстовые данные значениями, соответствующими типу данных конечного поля, и повторите попытку связывания.

Дата

Число

Замените все значения даты числовыми значениями и повторите попытку связывания.

Число

Дата

Замените все числовые значения значениями даты и повторите попытку связывания.

К началу страницы

  • Remove From My Forums
  • Question

  • Hi all,

    I have created a word document in my application (.Net). How can I save the word document (containing tables and some HTML formats) in a database and retrieve it for later use?

    Thank you in advance,

Answers

  • Here is a thread which may be of use:

    http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2364437&SiteID=1

    While William may have some valuable points regarding performance, i can see merit in storing all your data together for simplicity of backup. Its also worth noting that SQL2008 has a new FILESTREAM attribute which bridges the gap between the filesystem and database.

    HTH!

Хотя Access — это приложение базы данных, которое имеет надежные объекты интерфейса, пользователи не знакомы с этим приложением. Во многих случаях Access не установлен ни в одной пользовательской системе, или вы можете запретить пользователям получать доступ к вашей базе данных.

В этой статье TipsMake.com расскажет, как использовать приложение Word для сбора пользовательских данных и последующего переноса всех этих данных в таблицу в Access. Для этого метода требуются коды Access, приложения базы данных Word и Visual Basic для приложений (VBA). (Приведенные ниже инструкции реализованы в Word 2003 и 2007, но этот метод также будет совместим с версиями Win 2000, XP и 2002).

Примечание к базе данных

Для простоты представьте, что Word куда-то передаст данные, а аналогичная база данных будет передана в Access. При применении этого метода на работе перед созданием файла Word необходимо знать следующие детали:

  1. Путь и имя базы данных.
  2. Имя таблицы в Access.
  3. Назовите поля в таблице и тип данных.

Пример выполняется в форме (форме) Word (рисунок A), вы обновляете два поля в таблице Shippers: Название компании а также Телефон . Оба эти поля представлены в текстовой форме. Пример пути:

C: Программные файлы Microsoft Office11Office11SamplesNorthwind.mdb

Возможно, вам потребуется обновить путь для настройки системы.

Изображение 1: Преобразование данных из Word в базу данных Access

Рисунок A: Приложение Word упрощает ввод данных для сбора данных для Access.

Сбор данных из формы Word

Форма Word — это документ, содержащий пустые ячейки, называемые полями, чтобы вы могли вводить данные. Поле — это предопределенная ячейка, в которой хранятся и принимаются входные данные. В примере формы Word, показанном на рисунке A, у нас есть два поля ввода. Используя это приложение, пользователи могут обновлять таблицу Shippers, а затем аналогичные базы данных будут перенесены в Access без необходимости запускать Access или даже вам не нужно разбираться в базе данных.

В таблице «Грузоотправители» 3 поля, но одно из них — автоматическая нумерация ( AutoNumber ). Когда приложение передает новую запись, Access отсортирует значения. Поэтому отображаются только два поля: txtCompanyName а также txtPhone .

Чтобы создать пример в форме Word, вставьте два текстовых поля (символа) в документ Word следующим образом:

1. В меню «Просмотр» выберите «Панели инструментов», а затем — «Формы».

2. Вставьте два элемента управления «Поле текстовой формы» и укажите, как провести линию между ними.

3. Дважды щелкните поле, чтобы открыть диалоговое окно «Параметры поля».

4. Использование свойства Bookmark для определения первого поля: txtCompanyName , Рисунок Б.

5. Повторите шаг 4 и определите второй элемент управления как txtPhone .

6. Сохраните файл.

Изображение 2: Преобразование данных из Word в базу данных Access

Рисунок B. Определите два текстовых элемента управления

В Word 2007 вам нужно добавить тег разработчика следующим образом:

1. Нажмите кнопку «Офис», а затем выберите «Параметры Word» (в правом нижнем углу).

2. Щелкните «Популярные».

3. Выберите вкладку «Показать разработчика» в разделе «Лента» и нажмите «ОК».

Обратите внимание, что имена полей в Word должны совпадать с именами полей в Access, которые будут Название компании а также Телефон . Единственная разница в том, что текст приставка. Нет необходимости называть поля в Word таким образом, но такое именование упростит сопоставление полей в Word и Access. ( текст чтобы определить, что это поле для ввода текста).

После завершения документа вам понадобится функция VBA для преобразования импортированных значений в базу данных Access. Выполните следующие действия, чтобы добавить функцию:

1. Откройте редактор Visual Basic (VBE), нажав Alt + F11.

2. Выберите «Модуль» в меню «Вставка».

3. Введите функцию в Код А. Обязательно обновите путь правильно, если ваш путь отличается от примера.

4. В меню «Инструменты» выберите «Ссылки» и установите флажок «Библиотека объектов данных Microsoft ActiveX 2.x (ADO)», как показано на рисунке C. (Он не будет выбирать этот элемент библиотеки самостоятельно, вы должны выбрать его). Будет сделана ссылка на объект Word и библиотеку VBA.

5. Щелкните OK, чтобы вернуться в модуль.

Код

Sub TransferShipper ()

‘Передача новой звукозаписывающей компании

‘Таблица грузоотправителей в базе данных Northwind.

Dim cnn As ADODB.Connection

Dim strConnection как строка

Dim strSQL как строка

Dim strPath как строка

Dim doc As Word.Document

Dim strCompanyName As String

Dim strPhone As String

Dim byt Продолжить как Byte

Dim lngSuccess As Long

Установить doc = ThisDocument

При ошибке GoTo ErrHandler

strCompanyName = Chr (39) & doc.FormFields («txtCompanyName»). Результат и Chr (39)

strPhone = Chr (39) & doc.FormFields («txtPhone»). Результат и Chr (39)

‘Подтвердите новую запись.

bytContinue = MsgBox («Вы хотите вставить эту запись?», vbYesNo, «Добавить запись»)

Debug.Print bytContinue

‘Обработка значений значений.

Если bytContinue = vbYes Тогда

strSQL = «ВСТАВИТЬ В грузоотправителей» _

& «(Название компании, Телефон)» _

& «ЗНАЧЕНИЯ (» _

& strCompanyName & «,» _

& strPhone & «)»

Отладка.Печать strSQL

‘Если возможно, замените путь и строку подключения на DSN.

strPath = «C: Program FilesMicrosoft Office11Office11SamplesNorthwind.mdb»

strConnection = «Provider = Microsoft.Jet.OLEDB.4.0;» _

& «Источник данных =» & strPath

Debug.Print strConnection

Установите cnn = New ADODB.Connection

cnn.Open strConnection

cnn.Execute strSQL, lngSuccess

cnn.Close

MsgBox «Вы вставили» & lngSuccess & «record», _

vbOKOnly, «Ошибка добавлена»

doc.FormFields («txtCompanyName»). TextInput.Clear

doc.FormFields («txtPhone»). TextInput.Clear

Конец, если

Установить doc = Nothing

Установите cnn = Nothing

Дополнительный выход

ErrHandler:

MsgBox Err.Number & «:» & Err.Description, _

vbOKOnly, «Ошибка»

При ошибке GoTo 0

При ошибке Возобновить Далее

cnn.Close

Установить doc = Nothing

Установите cnn = Nothing

Конец подписки

Изображение 3: Преобразование данных из Word в базу данных Access

Рисунок C: Ссылка на библиотеку ADO

Вернитесь в приложение Word и дважды щелкните на txtPhone . В диалоговом окне Параметры выберите TransferShipper из Выход раскрывающийся список, рисунок D. Делайте это до тех пор, пока последнему полю не будет присвоен код для передачи входных данных в Access.

Это самый простой способ выполнить код. Вы можете использовать другие методы, такие как добавление случайных элементов управления на панель инструментов. После того, как вы укажете TransferShipper в свойстве Exit. Наконец, закройте диалоговое окно.

Изображение 4: Преобразование данных из Word в базу данных Access

Рисунок D: Выполнение функции из элемента управления Выход последнего элемента управления

Теперь вы защитите форму, созданную в Word. Нажмите «Защитить форму» на панели инструментов «Формы». Сохраните всю карту образцов и закройте ее.

Используйте форму

Откройте файл формы Word и введите значение в оба поля, рис. E. Поле «Телефон» в таблице «Грузоотправители» принимает значение «телефон» почти для всех форматов. При применении этого метода убедитесь, что вы указали специальные атрибуты форматирования.

Изображение 5 Преобразования данных из Word в базу данных Access

Рисунок E: Введите новую запись

После ввода номера телефона нажмите Tab, чтобы закрыть это поле, TransferShipper () дочерняя функция будет работать (известная как макрос). После операторов объявления числа код объединит некоторые Chr () функции для ввода значения для добавления специальных символов. В этом случае Chr (39) функция возвращает значение (‘). Дата требует символов (#). Для числовых значений не требуются специальные символы.

Простое сообщение, которое вы видите на рисунке F, позволяет вам повторно подтвердить процесс передачи данных (рисунок E). Это также знак для проверки правильности входных значений пользователя. Например, вы можете проверить пустое поле или несоответствующий тип данных.

Изображение 6: Преобразование данных из Word в базу данных Access

Рисунок F: Подтвердите новую запись

Когда вы нажмете Да, код создаст инструкцию SQL INSERT INTO, которая включает поля доступа и значения, введенные в примерную таблицу:

ВСТАВИТЬ В accesstable (acessfld1, acessfld2,.)

ЗНАЧЕНИЯ (wordinputfld1, wordinputfld2,.)

Вам не нужно вводить значения для каждого поля в таблице Access, но вам нужно ввести обязательные поля. Обратите внимание на порядок совпадения полей ввода данных в Access и Word. Если вы опускаете ссылку на поле Access, вы также должны опустить входное значение в Word, поле AutoNumber вводить не нужно.

Далее код определит путь и откроет соединение. Обратите внимание, что вы можете включить пароль, если вы установили пароль для файла Access, используя следующий синтаксис:

cnn. Открыть строку подключения, идентификатор пользователя, пароль, параметры

Если для базы данных существует имя источника данных (DSN), обратитесь к нему следующим образом:

cnn.Open = «DSN = имя источника данных»

С DSN легче работать, чем со сложной цепочкой соединений. Наконец, метод Execute поместит данные в таблицу Shippers. База данных может быть открыта, но вы захотите подсчитать много пользователей и заблокировать возможности.

На рисунке G показано сообщение, подтверждающее завершение процесса передачи данных. Если вы пропустите этот шаг, произойдет ошибка. Если оператор INSERT INTO не работает, вам нужно будет решить эту проблему несколькими способами.

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

  1. Несовместимые типы данных — Это означает, что вы не можете вводить текст в числовое поле и наоборот.
  2. Игнорируйте обязательные значения в таблице доступа — Если для запрошенного свойства поля доступа установлено значение «Да», вы не можете ввести нулевое значение. Если ты уйдешь txtCompanyName пусто, код будет ошибочным, потому что Access должно иметь значение в этом поле.

<

p style=»text-align: justify;»>

Изображение 7: Преобразование данных из Word в базу данных Access

<br>Рисунок G: Пример таблицы, показывающий код, который вставил новую запись

После успешного преобразования код очистит поля в Word. Очень простое управление ошибками. Тщательно проверьте эту технику и учтите все возможные ошибки. Если вы не уверены, что он работает должным образом, вы можете открыть панель «Отправители» в Access. На рисунке H показана только что добавленная запись. (Не беспокойтесь о AutoNumber значения; они не важны.)

Изображение 8: Преобразование данных из Word в базу данных Access

Рисунок H: Значения добавлены в таблицу

Успешное преобразование

Знание данных является ключом к преобразованию каждой новой записи без серьезных проблем. Пример кода содержит необходимые навыки для начала работы. Вам необходимо улучшить технологию для корректировки данных и некоторых других требований.

В 2008-м году, примерно 3 месяца, у меня был новый «домашний» сайт. Тогда их называли «хомячок» — слово имело не то значение, которое имеет сейчас. Тогда я перестал писать в ЖЖ и начал писать на сайте. А т.к. там можно было использовать рубрики, круг освещаемых тем расширился. В частности, я начал писать на темы технические и прикладные. Потом сайт закончился — его убрали с хостинга, заниматься переездом было некогда и т.д. К чему это я? К тому, что хочу «вернуть» техническую тему. А вернуть я её могу сейчас только сюда — в ЖЖ.

Теперь по теме. Администрируя сайт время от времени сталкиваешься с необходимостью перенести данные из таблицы Excel или файла Word в базу данных. В сети есть множество решений, но многие из них показались мне сложными. На Хабре, например, описано создание функции с использованием библиотеки PHPExcel. Сначала я хотел также, потом решил, что для моей задачи это сильно круто.

Итак, моя задача: есть таблица в вордовском файле. Есть БД MySQL. В базе есть таблица с двумя полями. В эту таблицу необходимо добавить записи из таблицы в файле.

Начались мои поиски с того, что я нашел замечательную функцию PHP fgetcsv, которая разбирает файл csv на строки, а строки — на фрагменты и записывает их в массив.

Сначала я копировал данные из Ворда с Calc, в Кальке сохранял файл как csv и дальше с помощью скрипта добавлял записи в БД. Но скрипт работал на локальном сервере, а значит, после этого надо было делать дамп таблицы и заливать его на сервер «боевой». Этот путь показался мне долгим. Кроме того, csv — это, по сути, текстовый файл с разделителями (fgetcsv, кстати, позволяет указать, какой символ для этого используется).

Отбросив промежуточные варианты с Кальком я остановился на следующем алгоритме:
1. Скопировать данные из таблицы (Ворд) в текстовый документ (работаю с AkelPad), заменить табуляцию на «,», сохранить как csv.
2. Запустить скрипт (приведен ниже) в браузере для добавления скобок и кавычек.
3. Скопировать из браузера и вставить в phpMyAdmin используя запрос следующего вида (кнопка SQL, не забыть «;» в конце):

INSERT INTO `таблица` (`имя поля`, `имя поля`) VALUES 
('значение 1-1', 'значение 1-2'),
('значение 2-1', 'значение 2-2'),
...
('значение n-1', 'значение n-2');

[Скрипт выглядит вот так (частный случай — для двух столбцов):]
Скрипт выглядит вот так (частный случай — для двух столбцов):

<?php
$row = 1;
$handle = fopen("test.csv", "r");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $num = count($data);
    $row++;
    echo "('".$data[0]."','".$data[1]."'),
"; } fclose($handle); ?>


После этого получаем сообщение от ПМА о том, что все прошло успешно:

pma_screen

Если я что-то делаю неоптимально, буду рад советам!

P.S. Честно пытался загнать код под спойлер, но у меня ничего не вышло. :(

P.P.S. Вроде с 4-й попытки удалось-таки загнать код под спойлер! :)

Понравилась статья? Поделить с друзьями:
  • Сохранить word в pdf только для чтения
  • Сохранить word без изменений
  • Сохранить word 2010 как word 2007
  • Сохранить qtablewidget в excel
  • Сохранить pages в word онлайн