Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 23.03.2020
Сообщений: 5

FDQuery не видит таблицу

15.10.2020, 11:59. Показов 2944. Ответов 10

Студворк — интернет-сервис помощи студентам
Здравствуйте. Я делаю курсовой проект, в котором есть форма логина. Задумка в чем: при запуске программы, проверяется наличие файла двух баз данных 'users_database.db' и 'history_database.db'. Если их нет, то они создаются через метод rewrite(). После создания файлов, я присваиваю путь к базе данных через ExecPathFile. Базы данных создаются нормально, путь к ним прокладывается, все хорошо. Собственно, суть проблемы: когда я пытаюсь сделать запрос через FDQuery, то она просто не видит таблицы. При том, что имена, при создании таблицы не отличаются от имен, которые используются в запросе. Помогите, пожалуйста, вся курсовая под угрозой.

Вот код создания баз данных:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
procedure TLoginForm.FormCreate(Sender: TObject);
var
UsersDBFile, HistoryCorrespondenceDBFile : File;
PathToUsersDBFile, PathToHistoryCorrespondenceFile : String;
begin
    LoginForm.ShowModal;
 
    PathToUsersDBFile := ExtractFilePath(ParamStr(0)) + 'users_database.db';
    PathToHistoryCorrespondenceFile := ExtractFilePath(ParamStr(0)) + 'history_database.db';
 
    RegistrationForm.UsersDBConnection.Params.Database := PathToUsersDBFile;
    MainDataModule.HistoryCorrConnection.Params.Database := PathToHistoryCorrespondenceFile;
 
    AssignFile(UsersDBFile, 'users_database.db');
    if not FileExists('users_database.db') then
    begin
        Rewrite(UsersDBFile);
        CloseFile(UsersDBFile);
        create_users_table(RegistrationForm.UsersDBConnection);
    end;
 
    AssignFile(HistoryCorrespondenceDBFile, 'history_database.db');
    if not FileExists('history_database.db') then
    begin
        Rewrite(HistoryCorrespondenceDBFile);
        CloseFile(HistoryCorrespondenceDBFile);
        create_history_table(MainDataModule.HistoryCorrConnection);
    end;
 
end;
Код процедуры create_users_table():
Delphi
1
2
3
4
5
6
7
8
9
10
procedure create_users_table(DBConnection : TFDConnection);
begin
    with DBConnection do begin
        ExecSQL('CREATE TABLE users_table (' +
        'user_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, ' +
        'email TEXT NOT NULL, ' +
        'login TEXT NOT NULL, ' +
        'password TEXT NOT NULL);');
    end;
end;
Код процедры create_history_table():
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure create_history_table(DBConnection : TFDConnection);
begin
    with DBConnection do begin
        ExecSQL('CREATE TABLE history_table (' +
        'document_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, ' +
        'document_name TEXT NOT NULL, ' +
        's_fname TEXT NOT NULL, ' +
        's_lname TEXT NOT NULL, ' +
        's_mname TEXT NOT NULL, ' +
        'exec_fname TEXT NOT NULL, ' +
        'exec_lname TEXT NOT NULL, ' +
        'exec_mname TEXT NOT NULL, ' +
        'create_date TEXT NOT NULL, ' +
        'send_date TEXT NOT NULL, ' +
        'email TEXT NOT NULL, ' +
        'document_file TEXT NOT NULL, ' +
        'mail TEXT NOT NULL, ' +
        'xerox_file TEXT NOT NULL, ' +
        'Physical_adres TEXT NOT NULL, ' +
        'input_output TEXT NOT NULL );');
    end;
end;
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.10.2020, 11:59
Ответы с готовыми решениями:

Узнать последнюю таблицу, с которой работал FDQuery
В администраторском интерфейсе реализован прямой ввод SQL-запроса. Необходимо, чтобы программа запомнила последнюю таблицу, к которой...

FdTable и fdquery
Здравствуйте. Пробую написать клиент серверное приложение, вопрос в правильности и проблем эксплуатации данных компонентов. Где то читал,...

FireDac, FDquery
Уважаемые форумчане. Начинаю пробовать писать СУБД FireDac + postgresql. Дилетантский вопрос. Какие компоненты должны быть расположены на...

10
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
15.10.2020, 14:33
Цитата Сообщение от MirFees Посмотреть сообщение
Rewrite(UsersDBFile);
CloseFile(UsersDBFile);
ТАК файлы БД не создаются!
1
0 / 0 / 0
Регистрация: 23.03.2020
Сообщений: 5
15.10.2020, 14:39  [ТС]
Тогда как же их создать правильно?
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
15.10.2020, 14:43
при помощи SQL-запроса либо методов соответствующих компонентов. К примеру, у фибов pFIBDatabase1.CreateDatabase
1
0 / 0 / 0
Регистрация: 23.03.2020
Сообщений: 5
15.10.2020, 14:47  [ТС]
То есть, при помощи SQL запроса можно создать именно файл БД?

Добавлено через 1 минуту
И если можно, то пожалуйста, покажите как
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
15.10.2020, 14:51
Цитата Сообщение от MirFees Посмотреть сообщение
при помощи SQL запроса можно создать именно файл БД?
именно так

Цитата Сообщение от MirFees Посмотреть сообщение
покажите как
полно примеров в инете. каждая СУБД отличается нюансами

в общих чертах:
- написать запрос
- выполнить
1
0 / 0 / 0
Регистрация: 23.03.2020
Сообщений: 5
15.10.2020, 14:57  [ТС]
Спасибо, за ответ. Я подозревал, что что-то не так с самим созданием файла. Для тех, у кого вдруг, такая-же проблема вот ссылка на инструкцию https://webdelphi.ru/2010/09/sqlite-v-delphi-2010/
0
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
15.10.2020, 17:06
Оригинально. Первый пост - попытка работать с файлами Парадокс, а ссылка в финале на SqLite. Так что-же за базу вы в итоге подключаете?
1
0 / 0 / 0
Регистрация: 23.03.2020
Сообщений: 5
16.10.2020, 07:57  [ТС]
Sqlite) Я понимаю, что это неправильно, но пытался как мог. Сейчас постараюсь сделать грамотно.
0
Модератор
 Аватар для D1973
9924 / 6460 / 2457
Регистрация: 21.01.2014
Сообщений: 27,411
Записей в блоге: 3
16.10.2020, 09:42
Цитата Сообщение от Пытливый Посмотреть сообщение
попытка работать с файлами Парадокс
Файлы баз SQLite точно так же, как и парадокс, могут иметь расширение *.db
Миниатюры
FDQuery не видит таблицу  
1
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
16.10.2020, 11:52
Лучший ответ Сообщение было отмечено MirFees как решение

Решение

Раз речь идет о SQLite и у вас FireDac, то базу создать можно средствами FD. Делается это так:
1. Добавить на форму FDPhysSQLiteDriverLink и FDSQLiteBackup.
2. Для FDSQLiteBackup установить свойство DriverLink = FDPhysSQLiteDriverLink и DestDatabase = 'C:\Demo.db3'
3. В коде программы написать:
Delphi
1
2
3
4
procedure TForm1.FormCreate(Sender: TObject);
begin
 FDSQLiteBackup.Backup
end;
При запуске программы будет создана пустая SQLite база C:\Demo.db3
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.10.2020, 11:52
Помогаю со студенческими работами здесь

Ошибка FDQuery
Что делать?? :help:

FDQuery + BDGrid
Как сделать сортировку по возрастанию и по убыванию по нажатию на заголовок DBGrid void __fastcall TForm1::DBGrid1TitleClick(TColumn...

FDQuery отображение int
Доброго дня! Искал на форуме ответ на вопрос но так и не нашел может кто встречался... есть поле Integer но через FDQuery к примеру...

Не видит таблицу
Есть DBGrid к нему Query. В Query выборка данных из временной таблицы и из постоянной. Временная таблица формируется перед открытием Query...

Не видит таблицу в бд
Добрый вечер господа, такая проблема, не видит таблицу с этим именем, конечно я её создавал в phpMyAdmin, имя корректное, при запуске...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru