Подключение внешней базы данных Excel
Дали задание сделать подключаемую базу данных. Решил что удобнее будет в Excel. База данных с параметрами объектов к которым надо будет обращаться. Она подключается также как и написанная в Qt или как-то по другому? Ну а обращение к элементам одинаково?
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.Вам это нравится? Поделитесь в социальных сетях!
Комментарии
Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Пожалуйста, авторизуйтесь или зарегистрируйтесь
d
- dsfs
- 26 апреля 2024 г. 4:56
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:80баллов,
- Очки рейтинга4
d
- dsfs
- 26 апреля 2024 г. 4:35
C++ - Тест 001. Первая программа и типы данных
- Результат:73баллов,
- Очки рейтинга1
Последние комментарии
Qt Linux - Урок 001. Автозапуск Qt приложения под Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Qt WinAPI - Урок 007. Работаем с ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Анатолий Кононенко5 февраля 2024 г. 1:50
EVA25 декабря 2023 г. 10:30
Boost - статическая линковка в CMake проекте под Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
Qt/C++ - Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
Сейчас обсуждают на форуме
Best Indian Food Restaurant In Cincinnati OH Ready to embark on a gastronomic journey like no other? Join us at App india restaurant and discover why we're renowned as the Best Indian Food Restaurant In Cincinnati OH . Whether y…
Evgenii Legotckoi2 мая 2024 г. 14:07
IscanderChe30 апреля 2024 г. 4:22
Павел Дорофеев14 апреля 2024 г. 2:35
Это же файл с таблицами, в которых используются разделители определённых типов, например точка с запятой. Наиболее простым вариантом такого формат является формат CSV.
На сайте имеется урок по работе с CSV в Qt, можете там посмотреть, как с ним работать.
А вообще с файлами Excel в Qt всё печально. Это же по сути проприетарный формат и Qt не занимается его поддержкой. Поэтому готовых классов по работе с файлами Excel в Qt нет. Необходимо либо парсить файл Excel и разбирать его до основания, либо найти стороннюю библиотеку, которая даст весь необходимый для работы функционал.
А если Вы имели ввиду работу, например как, через QSqlDatabase, то вы ошиблись. Здесь механика работы совершенно различна.
При сохранении в CSV скорее всего все связи и настройки будут утеряны.
CSV является простейшим форматом. Если нужна сортировка, связи таблиц и прочие настройки, которые сделаете в Excel, то нужно будет всё-таки разбираться с форматом Excel и парсить его, но это довольно нетривиальная задача.
Так что наиболее логичным будет поискать готовые решения по работе с Excel файлами.
Впрочем, кажется я немного ошибся. Можно попробовать подключить файл с помощью драйвера QODBC. Вот ссылка Обработка Microsoft Excel в Qt
Там же есть список готовых библиотек.
Спасибо, попробую реализовать.
Но если использовать Excel просто для составления самой простой таблицы, без связей и настроек, то при сохранении в csv все останется рабочим. Если делать так то должно работать? Если да, то вопрос еще актуален.
Если использовать Excel просто для составления таблицы и сохранить его в CSV, то можно делать что-то вроде импорта документа в программу и распарсить его, разбирая на нужные объекты. Например, одна строка – это один объект. Поля объекта (то есть переменные), будут соответствовать полям таблицы в строке (то есть колонкам).
Если посмотрите внимательно урок по CSV, который я привёл выше, то увидите, что там идёт довольно простое формирование ячеек таблицы. Символ ‘;’ служит для разделения колонок, а перевод строки ‘\n’ соответственно разделяет строки.
Соответственно распарсить такой файл, прочитав его построчно, не должно составить большого труда.
Когда сохраните файл, то откройте его обычным блокнотом, и станет сразу ясна структура документа.
Вечером накидаю небольшой набросок возможного варианта.
Данные из CSV файла необходимо считывать построчно. Поскольку это формат данных, разделённых точкой запятой, и каждая строка закрывается последовательностью \r\n, как правило. А далее, чтобы отобразить данные в таблице в приложении на Qt, необходимо воспользоваться QStandardItemModel и QTableView, переписывая данные в соответствующие ячейки.
Например, создали таблицу в Excel следующего вида:
Чтобы получить следующий результат:
У меня код получился следующий, для извлечения данных из csv файла, который хранится в файле ресурсов (для того, чтобы взять другой внешний файл, нужно только правильно указать путь к нему)
mainwindow.h
mainwindow.cpp
А что касается добавления данных в базу данных SQLite, то посмотрите следующие уроки, в них навалом примеров по добавлению данных в базу данных SQLite:
csvexample-1.zip
Пытался засунуть я данные в базу, однако не получается. Пишет ” Parameter count mismatch” .Подскажите что не так.
Ничего другого не придумал как переписать файл csv в массив, а потом хотел с него в базу записать.
Проект скинуть не могу ввиду требований секретности (армия). На ПК ни интернета, ни переводчика.
1-я Ошибка – это получается скорее массив из одного элемента. А если учесть, что он статический, то в него непонятно, что записывается. Чтобы работать с массивом, нужно знать заранее его длину. То есть длина должна быть равна количеству элементов, которое в него будет записано. Ну тут я ничем помочь не могу. Вам нужно почитать про массивы какую-нибудь литературу по C++, по его основам. Кто-то на эту тему советует Страуструпа, кто-то Лафоре. Авторов много.
2-я Ошибка – в методе, где создаётся база данных. Опять же, почитать про SQLite, а точнее про типы данных. А также про основы создания таблиц в SQL. У Вас там одни только типы данных перечислены и не более того. Нет названий колонок.
3-я Ошибка – в методе, где добавляется запись. Та же самая ерунда, отсутствуют названия колонок. В моих примерах они присутствовали. Вы их удалили.
Рекомендую почитать дополнительно про типы данных в SQL и массивы. То, как Вы создали массив, приведёт к созданию массива с одним элементом. Тут нужно дополнительно восполнять пробелы в знаниях чтением профильной литературы.
Рекомендую заменить на QList. В него помещать ваш собственный класс или структуру, которая будет содержать элементы i и j.