1 (edited by Igor 2016-01-05 22:02:03)

Topic: Переход базы на MySQL (ошибки в скрипте) (РЕШЕНО !)

Дмитрий, здравствуйте !
Столкнулся с проблемой перевода базы в MySQL.

Выводит ошибки:
1.При попытке вывести сообщение с именинником

Error message:

#42000You have an error in yor SQL syntax; chek the manual that corresponds to your MySQL server version for the
right syntax to use near ')' at line 1

Жалуется на данную строку кода

b := SQLExecute('SELECT group_concat(FIO, char(13)) FROM UserCO WHERE DATE_FORMAT(DataRoghd, ''%d.%m'')=DATE_FORMAT(''now'', ''%d.%m'',)');
if b <>'' then
begin
MessageDlg('Сегодня празднует День рождения:' +#13#10 +#13#10 +b, mtInformation, mbOK, 0 );
end;

2. При попытке залогиниться в базе

Cloud not convert variant of type (Null) into type (integer)

Ссылается на данный участок кода

procedure frmLogin_OK_OnClick (Sender: string; var Cancel: boolean);  
   var
    s: string;
 begin

     // SQL запрос логина и пароля пользователя
    s:= VarToStr( SQLExecute('SELECT password FROM UserCO WHERE (FIO_login = ''' + frmLogin.ComboBox1.Text + ''');') );
      idUser:= SQLExecute('SELECT id FROM UserCO WHERE (FIO_Login = ''' + frmLogin.ComboBox1.Text + ''');');
      idOtdel := SQLExecute ('SELECT id_StrukturnOtdelCO FROM UserCO WHERE id='+IntToStr(idUser));

        // если логин и пароль найдены ////
       if s= frmLogin.Edit1.Text then
      begin
          sUser := frmLogin.ComboBox1.Text; 
     // проверка прав администратора
          s := VarToStr( SQLExecute('SELECT Admin FROM UserCO WHERE (FIO_Login = ''' + sUser + ''');') );
          if s='0' then

Данный код без проблем работал на SQLite версии. Подскажите как исправить? За ранее спасибо!

Re: Переход базы на MySQL (ошибки в скрипте) (РЕШЕНО !)

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


1. При переводе проекта с SQLite на MySQL (или обратно), в случае использования вами SQL запросов, могут возникнуть данные ошибки, т.к. данные СУБД иногда имеют различный синтаксис при использовании SQL функций.


Попробуйте заменить

group_concat(FIO, char(13))

на

CONCAT_WS(char(13), `FIO`)


2. Ошибка говорит о том, что SQL запрос вернул пустое значение и оно не может быть конвертировано в число, попробуйте заменить

      idUser:= SQLExecute('SELECT id FROM UserCO WHERE (FIO_Login = ''' + frmLogin.ComboBox1.Text + ''');');
      idOtdel := SQLExecute ('SELECT id_StrukturnOtdelCO FROM UserCO WHERE id='+IntToStr(idUser));

на

      idUser:= SQLExecute('SELECT IFNULL(id, -1) FROM UserCO WHERE (FIO_Login = ''' + frmLogin.ComboBox1.Text + ''');');
      idOtdel := SQLExecute ('SELECT IFNULL(id_StrukturnOtdelCO, -1) FROM UserCO WHERE id='+IntToStr(idUser));
Dmitry.

3 (edited by Igor 2015-12-30 18:29:45)

Re: Переход базы на MySQL (ошибки в скрипте) (РЕШЕНО !)

Дмитрий, приветствую !

Проблема с ошибками пропала, в базу логинится без проблем, но вот сообщение об именинниках не выскакивает.
Заменил как вы и советовали:

Попробуйте заменить

group_concat(FIO, char(13))

на

CONCAT_WS(char(13), `FIO`)

Теперь строчка выглядит так :

b := SQLExecute('SELECT CONCAT_WS(char(13), `FIO`) FROM UserCO WHERE DATE_FORMAT(DataRoghd, ''%d.%m'')=DATE_FORMAT(''now'', ''%d.%m'')');
if b <>'' then
begin
MessageDlg('Сегодня празднует День рождения:' +#13#10 +#13#10 +b, mtInformation, mbOK, 0 );
end;

Но при этом похоже не работает , сообщение не выводится

Re: Переход базы на MySQL (ошибки в скрипте) (РЕШЕНО !)

Igor
Отправьте пожалуйста ваш проект на support@drive-software.com
посмотрю в чем дело.

Dmitry.

Re: Переход базы на MySQL (ошибки в скрипте) (РЕШЕНО !)

DriveSoft wrote:

Igor
Отправьте пожалуйста ваш проект на support@drive-software.com
посмотрю в чем дело.

Дмитрий, проект отправил, за ранее спасибо !

Re: Переход базы на MySQL (ошибки в скрипте) (РЕШЕНО !)

Дмитрий, спасибо за помощь !

Re: Переход базы на MySQL (ошибки в скрипте) (РЕШЕНО !)

если не секрет можете прикрепит ваш проект для примера?

Igor wrote:

Дмитрий, спасибо за помощь !

Re: Переход базы на MySQL (ошибки в скрипте) (РЕШЕНО !)

pha1984 wrote:

если не секрет можете прикрепит ваш проект для примера?

pha1984, Здравствуйте. Вам необходим весь проект или только те части кода которые подверглись переделке при переходе на MySQL?
Просто скрипт проекта слишком нагроможденный  ))

Re: Переход базы на MySQL (ошибки в скрипте) (РЕШЕНО !)

весь проект

Igor wrote:
pha1984 wrote:

если не секрет можете прикрепит ваш проект для примера?

pha1984, Здравствуйте. Вам необходим весь проект или только те части кода которые подверглись переделке при переходе на MySQL?
Просто скрипт проекта слишком нагроможденный  ))

Re: Переход базы на MySQL (ошибки в скрипте) (РЕШЕНО !)

pha1984, держите проект.

http://myvisualdatabase.com/forum/misc. … r=358t2020

Post's attachments

Attachment icon Test MySQL-2.7z 530.57 kb, 475 downloads since 2016-01-06