Страница 2 из 6

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

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

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

Добавлено: 28 Март 2019, 23:17
Дед Пахом
следующий совет будет уйти с mysql на tps и терминальный сервер.

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

Добавлено: 29 Март 2019, 8:10
morkovin
Начал было разбираться с LoadQueueFromSQL, но потом понял, что не смогу использовать ?, так как в базу не могу вносить изменений.
следующий совет будет уйти с mysql на tps и терминальный сервер.

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

Добавлено: 29 Март 2019, 10:22
Yufil
LoadQueueFromSQL требует создания фиктивной таблицы с одним полем, куда реально ничего не пишется. Можно, наверное, использовать и другую имеющуюся подходящую таблицу ( нужно, чтобы у неё было одно текстовое поле достаточной длины ), исправив при этом текст программы. Все равно никаких изменений в этой таблице не будет.

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

Добавлено: 29 Март 2019, 10:51
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.

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

Добавлено: 29 Март 2019, 11:10
kreator
Андрей, в разделе форума "Clarion for Windows/FAQ" есть кое-что на эту тему.

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

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

Алексей

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

Добавлено: 29 Март 2019, 13:48
Yufil
Первый же вопрос - в Словаре у каждой таблицы обязательно должен быть уникальный ключ с атрибутом PRIMARY. Скорее всего, такой ключ есть и в базе данных, но это разные вещи. Поля первичного ключа и только они используются для любого поиска записи ( в tps можно искать, например, по номеру записи ). Это не обязательно для TPS-файлов, но крайне важно для SQL. Если этот ключ отсутствует - необходимо добавить. А потом пробовать...

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

Добавлено: 29 Март 2019, 14:07
kreator
Yufil писал(а): 29 Март 2019, 13:48 Поля первичного ключа и только они используются для любого поиска записи ( в tps можно искать, например, по номеру записи ).
Не совсем верно. Первичный ключ (лучше не составной) нужен для редактирования записи. В поиске локатором он не нужен. Для броуза нужен просто уникальный ключ. Грубо говоря - Броуз по сотрудникам должен быть по ключу с фамилией, именем, отчеством, id-шником. И да, на сервере может быть индекс с фамилией, именем, отчеством, но в кларионовский словарь нужно к этому ключу добавить id-шник для уникальности.

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

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

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

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

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

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

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

Добавлено: 29 Март 2019, 15:14
kreator
Неправильно. Сделайте так:

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

CLASYSTEMCHARSET=WINDOWS
CLACHARSET=WINDOWS
CLACOLSEQ=WINDOWS
CLACASE=WINDOWS
Винда сама разберётся.
Локатор давайте попробуем инкрементный. Степ я не помню. По-моему для строк он не годится. При инкрементном локаторе поиграйтесь с параметром индекса "Case Sensitive". Ну и политику загрузки броуза переключите пока на "File".

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

Добавлено: 29 Март 2019, 16:48
Андрей
Придется вернуться к началу... а именно импортированию описаний MySQL таблиц.
Каким то образом в словаре у меня загружено несколько таблиц (по наименованию соседних). А как делал не помню, давно была попытка.
Пытаюсь следующие подгрузить - Import Tables-ODBC-MyDataSource и .... ничего - ни ошибок, ни таблиц. Пробую на новом словаре - то же...
Что попробовать ?

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

Добавлено: 29 Март 2019, 17:02
Алексей- Софт-Центр
Сначала войдите в администрирование источников ODBC, откройте настройки необходимого источника и нажмите кнопку TEST.
Должен дать ок.
Далее в словаре делаем импорт :
Безымянный.jpg
Безымянный1.jpg
Выбираем необходимую таблицу и импортируем ее.

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

Добавлено: 29 Март 2019, 17:07
Ал
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: