Страница 1 из 1
					
				Clarion и MySQL
				Добавлено: 10 Апрель 2008, 8:30
				 ShilakAV
				Подскажите, пожалуйста, где и что почитать по работе Clarion и MySQL. Существует ли драйвер Clarion для mysql?
			 
			
					
				Re: Clarion и MySQL
				Добавлено: 10 Апрель 2008, 10:13
				 Yufil
				MYSQL вполне нормально работает  с Кларионом через ODBC.  Другой вопрос, что надо перед началом работы выдать несколько команд (навскидку не помню), чтобы нормально считывалась кириллица.
			 
			
					
				Re: Clarion и MySQL
				Добавлено: 14 Апрель 2008, 13:46
				 ShilakAV
				Кириллица считывается нормально. Но почему то сортировка какая то странная... Начальные буквы алфавита в начале, конечные в конце, но как то все равно не по порядку )) Пока даже не знаю в какую сторону копать...
			 
			
					
				Re: Clarion и MySQL
				Добавлено: 24 Май 2011, 7:45
				 БАИ
				Эмпирика по ABC +mysql 5. Стараюсь описывать не только как делаю, но и встреченные неожиданности, тк связать эффекты с причинами бывает сложновато. По большому счету во всех рекомендациях исхожу из идеи "совершить наименьшее количество телодвижений", собственно по тому и ABC шаблоны. Пользуемся myisam, для innodb могут быть отличия (навроде commit и rollback расставить где надо)
1) cp1251.
Бывало так, что при попытке подключения прога молча падала. 
Это случалось из-за неверной кодировки, в odbc-драйвере следует указать cp1251 и соответственно сами таблицы должны быть в этой кодировке collation также следует указать cp1251_general_ci. Кстати, если указать юникод, работать тоже будет, даже русский можно заставить отображаться, но сортироваться будет по странному. Если в odbc драйвер не понимает, что вы хотите сменить кодировку, то скорее всего вы используете версию 5.1.5, где параметр charset авторы сломали. Используйте v3,51 v5,1,6 или v5,1,8 старшие не проверял. 
В драйвере 5.1.7 есть занятный глюк, при определенных условиях клиент отображает не более одной строки: по логу сервера видно, что перед тем как получить данные из рассчитанной таблицы с клиента приходит изменение переменной sql_select_limit. 
2) Браузы с более чем 1 зависимой таблицей.
Для 1 зависимой таблицы все ок, но почему-то вместо того, чтобы состряпать сложный select с нескольким Join'aми, кларион начинает ддосить сервер кучей селектов, вытягивая записи по одной. Обычно я строю кудесником брауз и форму по основной табличке, затем в mysql создаю view для отображения в браузе, в которой подтягиваю все необходимые поля других таблиц, и эту вьюху цепляю в листбоксе как custom join вида xxxx:id=yyyy:id. View в mysql тоже следует строить с некоторыми оговорками: при использовании сортировки по header будут пропадать строчки, значение в поле сортировки которых = null просто правлю селект так, чтобы вместо поле_с_null возвращалось COALESCE(`поле_с_null`, '') AS `поле_с_null`. 
3) В additonal sort field добавьте поле id 
Иначе в браузе все записи продублируются.
4) Автоинкремент через словарь.
С этим делом можно получить неслабый гемор, если работать с  триггерами с добавлением в другие таблицы или паралелльными операциями с IDENTITY. Но если всё топорно, да еще и дырки в нумерации не беспокоят, то можно:
На стороне mysql указываем id INT (11) NOT NULL AUTO_INCREMENT
В свойствах таблички на вкладке Options добавьте поле EMULATEAUTONUMKEY типа Boolean. Значение true.
Благодаря этому кларион сгенерит код добавляющий add(Tаблица) при открытии формы редактирования записи и удаляющий эту запись при нажатии cancel.
Заходите в словарь в свойствах таблички в драйверопшнс добавьте 
 /AUTOINC='SELECT LAST_INSERT_ID()'
 Или любой другой запрос, который вернет id (у меня этот работает).
Теперь идем в свойства поля id на вкладку Options, Добавим в User Options новый PropertyLabel, типа boolean. Имя ему укажите IsIdentity. Это надо, чтобы кларогенератор знал, что поле id заполняется на сервере.
Если по полю ID в словаре создали ключ, то в вкладке Attributes надо снять галочку autonumber. Иначе компилятор скажет, что он не согласен.
5) Для сложных случаев пользуемся хранимками 
имя_таблицы{prop:sql}='call имя_хранимки(параметры)' 
все по help, никаких сюрпризов. если хранимка что-то возвращает(например селект), забрать можно добавив после вызова prop:sql  access:имя_таблицы.trynext() 
6) Если конечно записей не миллионы, пользуемся fuzzymatch, сейчас клиентские машины мощные, а каналы широкие серверу проще выплюнуть несколько десятков мегабайт данных, чем искать записи по всем полям.
			 
			
					
				Re: Clarion и MySQL
				Добавлено: 24 Май 2011, 9:10
				 Admin
				ShilakAV писал(а):Подскажите, пожалуйста, где и что почитать по работе Clarion и MySQL. Существует ли драйвер Clarion для mysql?
Не знаю. Могу предложить этот тред.
http://forum.clarionlife.net/phpbb/view ... ilit=MySQL
Все в силе и для локальных приложений.
 
			 
			
					
				Re: Clarion и MySQL
				Добавлено: 12 Март 2012, 11:43
				 svru
				Искал пример использования sqlfile{prop:sql}  = ' select ....' . Не нашел(((
Написал сам. Может кому пригодится, кто на стадии:" Есть представление - нет понимания".
С6.3 + MySQL5.
Задача: Заполнить листбох, связанный с очередью, из таблицы MySQL.
1.Создаем таблицу в MySQ.
personal:
 cod int4   - PRIMARYKEY
 name varchar(45)
 prog  varchar(45)
 c_pro int4
2. Импортируем в словарь кларион. 
personal:
per:cod long   - PRIMARYKEY
per:name cstring(46)
per:dolg  cstring(46)
per:c_pro long
3. Посредством template Window создаем окно.
4. Добавляем Listbox.
5. В  data секции создаем переменные
qview  queue   ! очередь связанная с listbox
q:c long
q:n cstring(46)
q:p  cstring(46)
q:c_p long
      end
v_view   VIEW(personal)  ! виртуальный файл
             PROJECT(per:codd)
             PROJECT(per:name)
!             PROJECT(per:dolg)
!             PROJECT(per:c_prof)
         end
6. В секцию CODE добавляем код.
    CODE
? DEBUGHOOK(personal:Record)
   .
   .
   .
   .
   .
   open(v_view)  ! привязываем к кнопке "Заполнить список "
   do fill_list
   close(v_view)
   .
   .
   .
fill_list routine
  v_view{prop:sql} = 'select   cod, name from personal '
!  или v_view{prop:sql} = 'select   dolg, c_prof from personal '
  free(qview)
  set(v_view)
  loop
    next(v_view)          
    if errorcode()
 !     message('error = '&errorcode())
      break
    else
      clear(qview)
      q:c  =  per:cod
      q:n  =  per:name
      q:p  =  per:dolg
      q:c_p = per:c_prof
      add(qview)
    end
  end
			 
			
					
				Re: Clarion и MySQL
				Добавлено: 16 Апрель 2012, 18:48
				 morkovin
				Как перевести дату из Clarion-а (LONG)  в формат MySQL? Чтобы правильно отображалась на страничках, сгенрированных PHP-мейкером или аналогичными средствами?
Задача простая: создать урезанный MySQL-вариант БД для Web-сервера, полная рабочая БД крутится на MS SQL в локальной сети.
			 
			
					
				Re: Clarion и MySQL
				Добавлено: 16 Апрель 2012, 21:27
				 Дед Пахом
				morkovin писал(а):Как перевести дату из Clarion-а (LONG)  в формат MySQL? Чтобы правильно отображалась на страничках, сгенрированных PHP-мейкером или аналогичными средствами?
Задача простая: создать урезанный MySQL-вариант БД для Web-сервера, полная рабочая БД крутится на MS SQL в локальной сети.
Вроде канонический ODBC формат даты 'yyyy-mm-dd' работает в любом SQL, так что 
 
			 
			
					
				Re: Clarion и MySQL
				Добавлено: 17 Апрель 2012, 17:38
				 morkovin
				Вроде канонический ODBC формат даты 'yyyy-mm-dd' работает в любом SQL
Получается, что на стороне MySQL я должен изменить все поля с датами с типа INTEGER на STRING(). Ну если нет формулы для перевода (как, например, для MSSQL), то видимо придется так и делать.
 
			 
			
					
				Re: Clarion и MySQL
				Добавлено: 17 Апрель 2012, 17:53
				 Дед Пахом
				Я предлагал это для случая, когда MySQL даты хранятся в полях типа DATE. Тогда ничего менять не надо, table.datefield = 'yyyy-mm-dd' работает.
А какой смысл в INTEGER для дат, тем более в INTEGER, который не совпадает с кларионовской датой?
			 
			
					
				Re: Clarion и MySQL
				Добавлено: 26 Апрель 2012, 9:59
				 morkovin
				Вроде бы мелькали забугорные темплейты для "правильного" создания Browse в MySQL. Там учитывались какие-то тонкости. Не могу найти...
			 
			
					
				Re: Clarion и MySQL
				Добавлено: 06 Май 2012, 13:35
				 George
				Clarion 8.0.8973
При соединении с базой выдает ошибку "Invalid record declaration (47)".
Базу создавал, используя DCT2SQL.
В чем может быть дело ?
			 
			
					
				Re: Clarion и MySQL
				Добавлено: 14 Май 2012, 11:24
				 morkovin
				Вроде бы мелькали забугорные темплейты для "правильного" создания Browse в MySQL
Нашел такой темплейт, но для Legacy. А для АВС переделать у меня не получается . 
 
Может кто-нибудь сумеет?
 
			 
			
					
				Re: Clarion и MySQL
				Добавлено: 14 Май 2012, 11:42
				 morkovin
				В драйвере 5.1.7 есть занятный глюк, при определенных условиях клиент отображает не более одной строки
Может имеется ввиду версия сервера MySql 5.1.7?  У меня сервер 5.1.62, odbc v3.51 - и тоже такой глюк. Но после каждого нажатия "стрелка вниз" список дополняется на одну строку. Все сгенерировано стандартными АВС-шаблонами
(С6.2.9049)