MySQL - для чайника

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
morkovin
Ветеран
Сообщения: 908
Зарегистрирован: 20 Июль 2005, 14:53
Откуда: Volgograd, Russia
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

MySQL - для чайника

Сообщение morkovin »

Чтение в очередь с отбором
Вместо очереди проще использовать In-Memory файл.
1.Определи в DCT свой файл-приемник (для начала как TPS, потом заменишь на In-memory).
2.Создай типовую (шаблонную) процедуру типа Process.
3. Выбери для неё входную таблицу с сервера.
4. В Other добавь свой приемный файл.
5. Укажи фильтр для входной таблицы
6. В Embeds для Activity for each record и делай здесь свою обработку (назначение полей и запись в свой файл)
WBR, morkovin
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

MySQL - для чайника

Сообщение Дед Пахом »

следующий совет будет уйти с mysql на tps и терминальный сервер.
С уважением, ДП
Аватара пользователя
morkovin
Ветеран
Сообщения: 908
Зарегистрирован: 20 Июль 2005, 14:53
Откуда: Volgograd, Russia
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

MySQL - для чайника

Сообщение morkovin »

Начал было разбираться с LoadQueueFromSQL, но потом понял, что не смогу использовать ?, так как в базу не могу вносить изменений.
следующий совет будет уйти с mysql на tps и терминальный сервер.
WBR, morkovin
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

MySQL - для чайника

Сообщение Yufil »

LoadQueueFromSQL требует создания фиктивной таблицы с одним полем, куда реально ничего не пишется. Можно, наверное, использовать и другую имеющуюся подходящую таблицу ( нужно, чтобы у неё было одно текстовое поле достаточной длины ), исправив при этом текст программы. Все равно никаких изменений в этой таблице не будет.
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

MySQL - для чайника

Сообщение kreator »

Андрей, стандартный броуз работает как надо. Непонятно, что всё-таки с ним не так. Сделайте броуз попроще для начала. Стратегию Page надо изменить на File. Локатор какой? Давайте конкретику. Не ищет любую букву (есть нюансы с большими/маленькими буквами)? Сортировка реально правильная (опять же, есть нюансы с большими/маленькими буквами)? Что с locale?
В очередь в Вашем случае (совсем упрощённо) надо грузить так:

Код: Выделить всё

MyTable{prop:SQL} = 'select * from mytable'
loop
 if Access:MyTable.Next()
   break
 end 
 MyQueue.Field1 = MyTable.Field1
 ...
 add(MyQueue)
 ... 		
end
Для начала что-то такое. Только запоминать это особо не нужно, потому что конструкция "select * from..." опасна и не рекомендуется. Если нужен такой же ручной запрос по нескольким таблицам, то нужно сделать клариновскую вьюху (не скульную!!!) с нужными полями, и к ней применить prop:SQL. Но там могут быть нюансы с порядком полей. Второй вариант ручного запроса - применить prop:SQL к "виртуальной" таблице (на сервере должна быть таблица с одним стринговым полем, а в словаре кларионовском она же, только с сотней таких же полей). У Юрия подобный подход.
Дед Пахом писал(а): 28 Март 2019, 23:17 следующий совет будет уйти с mysql на tps и терминальный сервер.
+100500.
We are hard at work… for you. :)
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

MySQL - для чайника

Сообщение kreator »

Андрей, в разделе форума "Clarion for Windows/FAQ" есть кое-что на эту тему.
We are hard at work… for you. :)
Алексей- Софт-Центр
Ветеран
Сообщения: 390
Зарегистрирован: 26 Август 2009, 12:41
Откуда: Moscow
Контактная информация:

MySQL - для чайника

Сообщение Алексей- Софт-Центр »

Добрый день!
Кларион 10 с MySql работает без проблем. Задача крутиться уже лет много, переходя с 6 кла на 10.
Kreator прав: сделайте простой броуз без локаторов и фильтров. Убедитесь, что скролы работают. Ну, и далее по шагам.
А чтобы Вам помогли, более конкретики, что, где и как.

Алексей
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

MySQL - для чайника

Сообщение Yufil »

Первый же вопрос - в Словаре у каждой таблицы обязательно должен быть уникальный ключ с атрибутом PRIMARY. Скорее всего, такой ключ есть и в базе данных, но это разные вещи. Поля первичного ключа и только они используются для любого поиска записи ( в tps можно искать, например, по номеру записи ). Это не обязательно для TPS-файлов, но крайне важно для SQL. Если этот ключ отсутствует - необходимо добавить. А потом пробовать...
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

MySQL - для чайника

Сообщение kreator »

Yufil писал(а): 29 Март 2019, 13:48 Поля первичного ключа и только они используются для любого поиска записи ( в tps можно искать, например, по номеру записи ).
Не совсем верно. Первичный ключ (лучше не составной) нужен для редактирования записи. В поиске локатором он не нужен. Для броуза нужен просто уникальный ключ. Грубо говоря - Броуз по сотрудникам должен быть по ключу с фамилией, именем, отчеством, id-шником. И да, на сервере может быть индекс с фамилией, именем, отчеством, но в кларионовский словарь нужно к этому ключу добавить id-шник для уникальности.
We are hard at work… for you. :)
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

MySQL - для чайника

Сообщение Андрей »

kreator писал(а): 29 Март 2019, 10:51Андрей, стандартный броуз работает как надо. Непонятно, что всё-таки с ним не так. Сделайте броуз попроще для начала. Стратегию Page надо изменить на File. Локатор какой? Давайте конкретику. Не ищет любую букву (есть нюансы с большими/маленькими буквами)? Сортировка реально правильная (опять же, есть нюансы с большими/маленькими буквами)? Что с locale?
Спасибо ! Уже подвинулось слегка, оказывается locale не подцепил. Он такой

Код: Выделить всё

CLACHARSET=204
CLASYSTEMCHARSET=204
CLACOLSEQ="ABCDEFGHIJKLMNOPQRSTUVWXYZАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"
CLACASE="QWERTYUIOPASDFGHJKLZXCVBNMЙЦУКЕНГШЩЗХЁФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,qwertyuiopasdfghjklzxcvbnmйцукенгшщзхёфывапролджэячсмитьбю"
А в свойствах таблицы MySQL-> Кодировка:Utf8 Сопоставление:utf8_general_ci
Скроллинг вверх заработал, остался поиск. Оставил Step, при вводе загл. символа кидает наверх броуза, при вводе прописного кидает вниз.
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

MySQL - для чайника

Сообщение Yufil »

kreator писал(а): 29 Март 2019, 14:07
Yufil писал(а): 29 Март 2019, 13:48 Поля первичного ключа и только они используются для любого поиска записи ( в tps можно искать, например, по номеру записи ).
Не совсем верно. Первичный ключ (лучше не составной) нужен для редактирования записи. В поиске локатором он не нужен. Для броуза нужен просто уникальный ключ. Грубо говоря - Броуз по сотрудникам должен быть по ключу с фамилией, именем, отчеством, id-шником. И да, на сервере может быть индекс с фамилией, именем, отчеством, но в кларионовский словарь нужно к этому ключу добавить id-шник для уникальности.
Это да, но для листания Browse туда-сюда необходимо ещё уметь позиционироваться на конкретную запись, а это делается сохранением POSITION и восстановлением записи через RESET или REGET. И вот тут встаёт вопрос - а КАК выполнить эти самые RESET или REGET? Только зная, какой ключ первичный и каково сохранённое значение полей первичного ключа. Можно, например, посмотреть на трассировку...
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

MySQL - для чайника

Сообщение kreator »

Неправильно. Сделайте так:

Код: Выделить всё

CLASYSTEMCHARSET=WINDOWS
CLACHARSET=WINDOWS
CLACOLSEQ=WINDOWS
CLACASE=WINDOWS
Винда сама разберётся.
Локатор давайте попробуем инкрементный. Степ я не помню. По-моему для строк он не годится. При инкрементном локаторе поиграйтесь с параметром индекса "Case Sensitive". Ну и политику загрузки броуза переключите пока на "File".
We are hard at work… for you. :)
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

MySQL - для чайника

Сообщение Андрей »

Придется вернуться к началу... а именно импортированию описаний MySQL таблиц.
Каким то образом в словаре у меня загружено несколько таблиц (по наименованию соседних). А как делал не помню, давно была попытка.
Пытаюсь следующие подгрузить - Import Tables-ODBC-MyDataSource и .... ничего - ни ошибок, ни таблиц. Пробую на новом словаре - то же...
Что попробовать ?
Алексей- Софт-Центр
Ветеран
Сообщения: 390
Зарегистрирован: 26 Август 2009, 12:41
Откуда: Moscow
Контактная информация:

MySQL - для чайника

Сообщение Алексей- Софт-Центр »

Сначала войдите в администрирование источников ODBC, откройте настройки необходимого источника и нажмите кнопку TEST.
Должен дать ок.
Далее в словаре делаем импорт :
Безымянный.jpg
Безымянный1.jpg
Выбираем необходимую таблицу и импортируем ее.
Последний раз редактировалось Алексей- Софт-Центр 29 Март 2019, 17:16, всего редактировалось 3 раза.
Ал
✯ Ветеран ✯
Сообщения: 1011
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия

MySQL - для чайника

Сообщение Ал »

Yufil писал(а): 29 Март 2019, 14:58
kreator писал(а): 29 Март 2019, 14:07
Yufil писал(а): 29 Март 2019, 13:48 Поля первичного ключа и только они используются для любого поиска записи ( в tps можно искать, например, по номеру записи ).
Не совсем верно. Первичный ключ (лучше не составной) нужен для редактирования записи. В поиске локатором он не нужен. Для броуза нужен просто уникальный ключ. Грубо говоря - Броуз по сотрудникам должен быть по ключу с фамилией, именем, отчеством, id-шником. И да, на сервере может быть индекс с фамилией, именем, отчеством, но в кларионовский словарь нужно к этому ключу добавить id-шник для уникальности.
Это да, но для листания Browse туда-сюда необходимо ещё уметь позиционироваться на конкретную запись, а это делается сохранением POSITION и восстановлением записи через RESET или REGET. И вот тут встаёт вопрос - а КАК выполнить эти самые RESET или REGET? Только зная, какой ключ первичный и каково сохранённое значение полей первичного ключа. Можно, например, посмотреть на трассировку...
+
:wink:
Ответить