Topic: Переход с SQLite на MySQL

Доброго всем дня.
После перехода на MySQL столкнулся с проблемой разници в функциях, операторах и т.д.
Есть у кого нибудь примеры на MySQL:
1) SQL отчетов с выбором полей из 3 разных таблиц c фильтром по дате,
2) вход по паролю с разграничением прав и ведение логов.
Если кто-нибудь уже сделал поделитесь пожалуйста.
Заранее огромное спасибо.

Re: Переход с SQLite на MySQL

Приветствую,


Приложите пожалуйста ваш проект (zip файл без exe и dll), также описание, что именно и где не работает, постараюсь помочь.

Dmitry.

Re: Переход с SQLite на MySQL

Для упрощения составления запросов SQL к БД MySQL попробуй SQL Manager for MySQL или аналог. Она имеет визуальный редактор запросов, реально удобно (особенно при сложных запросах к множеству таблиц). Особенно помогает при создании выборки для отчета, главное работай с образом боевой базы (по структуре)
(ЗЫ это не реклама стороннего продукта, но мне помогло).

Re: Переход с SQLite на MySQL

В проекте отчет "Передача результатов" хотел сделать SQL отчетом.
Но уже при выборе таблиц вылетела ошибка SQL syntax и я даже сохранять не стал. Поможете.

Post's attachments

Attachment icon МВиОД.zip 31.14 kb, 695 downloads since 2016-09-07 

Re: Переход с SQLite на MySQL

С логами разобрался, а вот пример входа по логину с раграничением прав (LoginEx and change password) выдает ошибку.

Post's attachments

Attachment icon ошибка.zip 31.02 kb, 682 downloads since 2016-09-07 

Re: Переход с SQLite на MySQL

SQL Manager for MySQL попробую на следующих отчетах (чувствую их цельна куча будет, уже 5 ждут). Хотелось на рабочем примере посмотреть, а то по инструкции из инета не получилось smile

Re: Переход с SQLite на MySQL

Про отчет.
Точнее данные для отчета берутся из одной таблицы, а данные для фильтра из другой (в частности дата, другии фильтры вроде срабатывают без ошибок).

Re: Переход с SQLite на MySQL

Popkov-alex wrote:

С логами разобрался, а вот пример входа по логину с раграничением прав (LoginEx and change password) выдает ошибку.

Поправил проект для MySQL
http://myvisualdatabase.com/forum/misc. … download=1

Dmitry.

Re: Переход с SQLite на MySQL

Popkov-alex wrote:

В проекте отчет "Передача результатов" хотел сделать SQL отчетом.
Но уже при выборе таблиц вылетела ошибка SQL syntax и я даже сохранять не стал. Поможете.

Это было связано с ошибкой в самой программе, скачайте и установите пожалуйста снова последнюю версию
http://myvisualdatabase.com/download/myvisualdb.exe

Dmitry.

Re: Переход с SQLite на MySQL

Попробую отчет на новой версии.

Подскажите если обязательным для ComboBox пишем:
procedure Добавить_обращение_Button8_OnClick (Sender: string; var Cancel: boolean);
begin
   if Добавить_обращение.Оператор_приема.dbItemID = -1 then
    begin
        ShowMessage('Выберите оператора приема.');
        Cancel := True;
    end;
end;
как переделать для TextBox и числового TextBox с количеством цифр равным 14.
Спасибо.

Re: Переход с SQLite на MySQL

На версиях выше 2.4 проект вообще не запускается sad

Post's attachments

Attachment icon ошибка.jpg 403.33 kb, 347 downloads since 2016-09-08 

Re: Переход с SQLite на MySQL

Нашел похожий пример по которому делал SQL отчет. Ошибка аналогична примеру входа по логину и паролю.
Может есть возможность фильтр по дате макросом сделать? Просто все остальное в простых отчетах работает без проблем.

Post's attachments

Attachment icon Клиент-Мастер.zip 27.83 kb, 698 downloads since 2016-09-08 

Re: Переход с SQLite на MySQL

Popkov-alex wrote:

Попробую отчет на новой версии.

Подскажите если обязательным для ComboBox пишем:
procedure Добавить_обращение_Button8_OnClick (Sender: string; var Cancel: boolean);
begin
   if Добавить_обращение.Оператор_приема.dbItemID = -1 then
    begin
        ShowMessage('Выберите оператора приема.');
        Cancel := True;
    end;
end;
как переделать для TextBox и числового TextBox с количеством цифр равным 14.
Спасибо.

К сожалению не понял вашего вопроса, или тут два вопроса?

Dmitry.

Re: Переход с SQLite на MySQL

Popkov-alex wrote:

На версиях выше 2.4 проект вообще не запускается sad

Приложите пожалуйста ваш проект.

Dmitry.

Re: Переход с SQLite на MySQL

Popkov-alex wrote:

Нашел похожий пример по которому делал SQL отчет. Ошибка аналогична примеру входа по логину и паролю.
Может есть возможность фильтр по дате макросом сделать? Просто все остальное в простых отчетах работает без проблем.

Проверил данный проект, запускается без ошибок.
Что вы подразумеваете под макросом? Пожалуйста формулируйте вопросы более конкретно.

Dmitry.

Re: Переход с SQLite на MySQL

DriveSoft wrote:
Popkov-alex wrote:

На версиях выше 2.4 проект вообще не запускается sad

Приложите пожалуйста ваш проект.

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

Post's attachments

Attachment icon тест.zip 175.35 kb, 685 downloads since 2016-09-13 

Re: Переход с SQLite на MySQL

DriveSoft wrote:
Popkov-alex wrote:

Попробую отчет на новой версии.

Подскажите если обязательным для ComboBox пишем:
procedure Добавить_обращение_Button8_OnClick (Sender: string; var Cancel: boolean);
begin
   if Добавить_обращение.Оператор_приема.dbItemID = -1 then
    begin
        ShowMessage('Выберите оператора приема.');
        Cancel := True;
    end;
end;
как переделать для TextBox и числового TextBox с количеством цифр равным 14.
Спасибо.

К сожалению не понял вашего вопроса, или тут два вопроса?

Добрый день.
Существует рабочий проект в котором нужно сделать 3 поля обязательными для заполнения:
1) Оператор - ComboBox, он работает
2) Заявитель - TextBox, он не должен быть пустым
3) Телефон - цифровой TextBox (NumbersOnly), хотелось бы сделать чтобы количество цифр было равным 14 иначе вывод "ошибка в номере телефона". +7 прописано в DefaultValue.
Можно пример как это сделать.

Re: Переход с SQLite на MySQL

DriveSoft wrote:
Popkov-alex wrote:

Нашел похожий пример по которому делал SQL отчет. Ошибка аналогична примеру входа по логину и паролю.
Может есть возможность фильтр по дате макросом сделать? Просто все остальное в простых отчетах работает без проблем.

Проверил данный проект, запускается без ошибок.
Что вы подразумеваете под макросом? Пожалуйста формулируйте вопросы более конкретно.

Добрый день.
Проект запускается, ошибки происходят при формировании отчетов на MySQL (на SQLite работает). Скрины во вложении.

Макрос это просто мысли в слух smile. При нажатии кнопки отчет "фильтр" срабатывал макросом, а не SQL запросом. Стандартный отчет и так неплохо создается (меня устраивает). Задачу поставиили, чтобы в отчет падали только те записи где заполнено поле примечание и дата из другой таблици. Пока просто размышлизмы.

Post's attachments

Attachment icon скрины.zip 269.67 kb, 659 downloads since 2016-09-14 

Re: Переход с SQLite на MySQL

Popkov-alex wrote:
DriveSoft wrote:
Popkov-alex wrote:

На версиях выше 2.4 проект вообще не запускается sad

Приложите пожалуйста ваш проект.

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

Переместите код подключения к БД MySQL в событие главной формы OnShow, итоговый скрипт должен быть таким

// Автовход в MySQL
procedure Обращения_OnShow (Sender: string; Action: string);
begin
   {$MySQL disable_connectdialog}
     // Обращения.MySQLConnection.Server := '192.168.10.25';
     Обращения.MySQLConnection.Server := '11.0.0.24';
     Обращения.MySQLConnection.Port := 3306;
     Обращения.MySQLConnection.Username := 'user2';
     Обращения.MySQLConnection.Password := '******';
     Обращения.MySQLConnection.Database := 'mfclnt';

     try
         Обращения.MySQLConnection.Connect;
     except
         ShowMessage('Вы не подключились к базе данных.');
     end;

     if Обращения.MySQLConnection.Connected then
     begin
         UpdateDatabase(''); // вызываем автозаполение ComboBox-ов
     end;
end;



begin

end.
Dmitry.

Re: Переход с SQLite на MySQL

Popkov-alex wrote:

Добрый день.
Существует рабочий проект в котором нужно сделать 3 поля обязательными для заполнения:
1) Оператор - ComboBox, он работает
2) Заявитель - TextBox, он не должен быть пустым
3) Телефон - цифровой TextBox (NumbersOnly), хотелось бы сделать чтобы количество цифр было равным 14 иначе вывод "ошибка в номере телефона". +7 прописано в DefaultValue.
Можно пример как это сделать.



1-2. На вкладке Таблицы базы данных задайте необходимым полям свойство Not null, т.о. данные поля станут обязательными для заполнения.
http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=2377&download=0




3. пример

procedure Добавить_обращение_Button2_OnClick (Sender: string; var Cancel: boolean);
begin
    if Length(Добавить_обращение.Телефон.Text)<>14 then
    begin
        ShowMessage('ошибка в номере телефона');
        Добавить_обращение.Телефон.SetFocus; // устанавливаем фокус ввода
        Cancel := True;
    end;
end;
Post's attachments

Attachment icon notnull.png 41.48 kb, 362 downloads since 2016-09-14 

Dmitry.

Re: Переход с SQLite на MySQL

Popkov-alex wrote:

Добрый день.
Проект запускается, ошибки происходят при формировании отчетов на MySQL (на SQLite работает). Скрины во вложении.

Макрос это просто мысли в слух smile. При нажатии кнопки отчет "фильтр" срабатывал макросом, а не SQL запросом. Стандартный отчет и так неплохо создается (меня устраивает). Задачу поставиили, чтобы в отчет падали только те записи где заполнено поле примечание и дата из другой таблици. Пока просто размышлизмы.


в MySQL нет функции strftime, замените строки с использованием этой функции,например

strftime('%d.%m.%Y', application.date)

на

DATE_FORMAT(application.date, '%d%.%m.%Y')
Dmitry.

Re: Переход с SQLite на MySQL

DriveSoft wrote:
Popkov-alex wrote:
DriveSoft wrote:

Приложите пожалуйста ваш проект.

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

Переместите код подключения к БД MySQL в событие главной формы OnShow, итоговый скрипт должен быть таким

// Автовход в MySQL
procedure Обращения_OnShow (Sender: string; Action: string);
begin
   {$MySQL disable_connectdialog}
     // Обращения.MySQLConnection.Server := '192.168.10.25';
     Обращения.MySQLConnection.Server := '11.0.0.24';
     Обращения.MySQLConnection.Port := 3306;
     Обращения.MySQLConnection.Username := 'user2';
     Обращения.MySQLConnection.Password := '******';
     Обращения.MySQLConnection.Database := 'mfclnt';

     try
         Обращения.MySQLConnection.Connect;
     except
         ShowMessage('Вы не подключились к базе данных.');
     end;

     if Обращения.MySQLConnection.Connected then
     begin
         UpdateDatabase(''); // вызываем автозаполение ComboBox-ов
     end;
end;



begin

end.

Спасибо всё заработало.

Re: Переход с SQLite на MySQL

DriveSoft wrote:
Popkov-alex wrote:

Добрый день.
Существует рабочий проект в котором нужно сделать 3 поля обязательными для заполнения:
1) Оператор - ComboBox, он работает
2) Заявитель - TextBox, он не должен быть пустым
3) Телефон - цифровой TextBox (NumbersOnly), хотелось бы сделать чтобы количество цифр было равным 14 иначе вывод "ошибка в номере телефона". +7 прописано в DefaultValue.
Можно пример как это сделать.



1-2. На вкладке Таблицы базы данных задайте необходимым полям свойство Not null, т.о. данные поля станут обязательными для заполнения.
http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&amp;item=2377&amp;download=0




3. пример

procedure Добавить_обращение_Button2_OnClick (Sender: string; var Cancel: boolean);
begin
    if Length(Добавить_обращение.Телефон.Text)<>14 then
    begin
        ShowMessage('ошибка в номере телефона');
        Добавить_обращение.Телефон.SetFocus; // устанавливаем фокус ввода
        Cancel := True;
    end;
end;

Добрый день.
3 пример работает.
Про установку галочки обязятельный я знаю, только мне её нужно было сразу поставить, а теперь база уже есть (ошибка #22004Invalid use of NULL value).
Сделал на примере 3 (if Length(Добавить_обращение.Заявитель.Text)=0 then)
Большое спасибо.

Re: Переход с SQLite на MySQL

Popkov-alex

Про установку галочки обязятельный я знаю, только мне её нужно было сразу поставить, а теперь база уже есть (ошибка #22004Invalid use of NULL value).

Если записи уже есть, также необходимо указать Default value в данном окне, чтобы всем пустым записям присвоилось указанное значение, т.к. галочка Not null запрещает содержать пустое значение в данном поле.

Dmitry.

Re: Переход с SQLite на MySQL

Popkov-alex wrote:

Про отчет.
Точнее данные для отчета берутся из одной таблицы, а данные для фильтра из другой (в частности дата, другии фильтры вроде срабатывают без ошибок).

Добрый день.
В версии 2.7 данная проблема не наблюдается, но выскачила другая. В примере используется дата/время. В SQLite работает только не фильтрует по времени, а на MySQL ошибка на этапе сохранения. Подскажите как такую схему реализовать (запись в базу даты и времени и фильтр по этим данным). Нужно для того чтобы просматривать действия и создавать отчет (регистраци, выдача, изменения и т.д.) до минут.
Спасибо.

Post's attachments

Attachment icon тест.zip 7.29 kb, 681 downloads since 2016-09-15