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

Mysql стандартными шаблонами Clarion 10 ABC

Добавлено: 12 Декабрь 2016, 14:39
kreator
Дед Пахом писал(а):Насколько помню, {prop:SqlFilter} начинает путать таблицы. Вроде бы это лечилось ключом /JOINTYPE, но осадок остался.
Опять же, не столкнулся. Вот с prop{SQLOrder} были проблемы, пришлось отказаться.
Yufil писал(а):Предпочитаю данные подкачивать по SetQueueRecord,
На слабом канале очень сильно тормозит. Если всё запихать в один запрос, быстрее гораздо. Ещё используем (правда, мало-мало) после формирования очереди в ResetQueue запустить что-нибудь сильно сложное и раскидать результаты в существующую очередь.

Mysql стандартными шаблонами Clarion 10 ABC

Добавлено: 12 Декабрь 2016, 16:40
Yufil
Ну, я там ещё кэшировал поля кодификаторов. И хотфилды, отображающиеся за пределами Browse убрал из таблицы, а подгружал по мере...
В общем, полететь не полетело, но ползать стало шустрее...

Mysql стандартными шаблонами Clarion 10 ABC

Добавлено: 12 Декабрь 2016, 18:29
gopstop2007
PavelNK писал(а): Все гораздо проще и лучше. Работайте через ADO, чрезвычайно удобно и быстро.
А какой ADO используется в С10, ADO или ADO.NET? Хотя бы основные преимущества ADO в отличии от ODBC(в моем случае mysql)
в Clarion, без фанатизма :), на Ваш взгляд?
kreator писал(а): Для примера, броуз по нескольким таблицам.
И это ещё не все нужные таблицы. Некоторые значения из не подвязанных таблиц вытаскиваются через подзапросы.
А как обстоят дела с алиес, у меня используется несколько раз один и тот же справочник, например валюты?

Mysql стандартными шаблонами Clarion 10 ABC

Добавлено: 12 Декабрь 2016, 18:32
gopstop2007
kreator писал(а):
RaFaeL писал(а):Т.е. если у вас в справочнике допустим 10000 контрагентов то грузите сразу 10000? И не тормозит?
В любом случае нужно думать головой прежде чем отображать всех. Но 10000 не тормозит, незаметно даже. Есть у нас таблица ~130000 записей. Вот это дело вываливается секунд за 4-5. Это да. Но тут ещё пересылка по сети таких объёмов даёт знать. И хочу отметить Firebird, который очень странно кэширует данные. Нет у него опции "засунь всё в оперативку". И, надо заметить, что при таких списках есть проблема у контрола List, в частности неправильно работает ползунок.
интересно,зачем вываливать столько записей? может просто результат обработанный на сервере?

Mysql стандартными шаблонами Clarion 10 ABC

Добавлено: 12 Декабрь 2016, 20:40
PavelNK
gopstop2007 писал(а): PavelNK писал(а):
Источник цитаты Все гораздо проще и лучше. Работайте через ADO, чрезвычайно удобно и быстро.
А какой ADO используется в С10, ADO или ADO.NET? Хотя бы основные преимущества ADO в отличии от ODBC(в моем случае mysql)
в Clarion, без фанатизма , на Ваш взгляд?
Тот, который установлен в используемой ОС. Разницы между ADO и ADO.NET - нет. NET это просто обертка.
Если говорить глобально, то ADO более новый стандарт (вариант ODBC). В ODBC в принципе все есть, но я имел ввиду принцип работы Клариона с БД, исключительно с помощью файлов. Так вот, с помощью ADO можно уйти от этого, т.е. от файлов. Работать гораздо проще, удобнее и нет дополнительной прослойки.

Mysql стандартными шаблонами Clarion 10 ABC

Добавлено: 12 Декабрь 2016, 20:43
kreator
gopstop2007 писал(а):А как обстоят дела с алиес, у меня используется несколько раз один и тот же справочник, например валюты?
Вот привёл картинку. Таблицы на "A" - все Алиасы.
gopstop2007 писал(а):интересно,зачем вываливать столько записей? может просто результат обработанный на сервере?
Просто это справочник. Конечно, потом пользователь ищет по первым буквам, по входимости и т.д. Естественно, нереально всё это просматривать. Но время загрузки получилось небезобразное, ну и ладно. Вообще отдельная история - что делать с большими справочниками.

Mysql стандартными шаблонами Clarion 10 ABC

Добавлено: 12 Декабрь 2016, 22:10
gopstop2007
kreator писал(а):То же самое. В чём тормоза? Мы делаем загрузку (Loading Method) типа "File". Все встроенные подзапросы стараемся пихать через вкладку "SQL Advanced". Единственное, согласен, идёт вызов методов и, кажется, не единственный раз (по логике не понятно зачем). Но несколько раз данные по сети не гоняет (Есть такое мнение у народа). Опять же, может быть, потому что десятка.
В browse две реляционный связанные таблицы (накладная+детали накладной), связывать стандартно через реляцию или через "SQL Advanced"? Еще, просто открыл окно со созданым списком (mdi окно, метод загрузки - page), оставил на 10 минут, после чего хотел закрыть окно и получил ошибку

Mysql стандартными шаблонами Clarion 10 ABC

Добавлено: 13 Декабрь 2016, 0:14
kreator
Последняя ошибка похожа на броуз не по уникальному ключу.

Mysql стандартными шаблонами Clarion 10 ABC

Добавлено: 13 Декабрь 2016, 0:24
Дед Пахом
gopstop2007 писал(а): оставил на 10 минут, после чего хотел закрыть окно и получил ошибку
Стандартная вещь для MySQL - сервер разрывает неактивное соединение. Можно в конфигурации сервера прописать время (по умолчанию кажется минут 10), можно постоянно посылать серверу запрос (т.н. KeepAlive), чтобы он не рвал соединение.

Mysql стандартными шаблонами Clarion 10 ABC

Добавлено: 13 Декабрь 2016, 10:02
Алексей- Софт-Центр
Да, все правильно, ДП!!!
Я ещё вешаю на экран обычный таймер, чтобы идентифицировать окна, из которых идёт пинг к базе.
Типа: это окно можешь держать долго открытым!)

Алексей

Mysql стандартными шаблонами Clarion 10 ABC

Добавлено: 13 Декабрь 2016, 10:25
kreator
10 минут по умолчанию - это круто :mrgreen: . Помню, в SQLAnywhere я выставлял такой же параметр на 8 часов. Пользователь пришёл с утра, включился и до вечера. А FB, похоже, вообще не заморачивается на эту тему.

Mysql стандартными шаблонами Clarion 10 ABC

Добавлено: 13 Декабрь 2016, 11:34
gopstop2007
Дед Пахом писал(а):Стандартная вещь для MySQL - сервер разрывает неактивное соединение. Можно в конфигурации сервера прописать время (по умолчанию кажется минут 10), можно постоянно посылать серверу запрос (т.н. KeepAlive), чтобы он не рвал соединение.
Извините за дилетантские вопросы, но так как я работал на MAV ODBC, есть ли аналог

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

glo_DataSource='driver={{'& clip(LDriver) &'};Server='& clip(LServer) &';database='& clip(LDatabase) &';uid='& clip(LUser) &';pwd='& clip(LPassword)
 !MAVDISCONNECT()
 IF MAVCONNECT('SQL Server',glo_DataSource) then
     Message('Нет соединения') 
 ELSE
     Message('Есть соединение')
 END
проверка соединения и реконнект, если соединение разорвано, стандартными средствами Clarion?

Mysql стандартными шаблонами Clarion 10 ABC

Добавлено: 13 Декабрь 2016, 11:39
gopstop2007
kreator писал(а): 10 минут по умолчанию - это круто :mrgreen: . Помню, в SQLAnywhere я выставлял такой же параметр на 8 часов. Пользователь пришёл с утра, включился и до вечера. А FB, похоже, вообще не заморачивается на эту тему.
согласен, если сервер локальный

Mysql стандартными шаблонами Clarion 10 ABC

Добавлено: 13 Декабрь 2016, 11:41
Дед Пахом
gopstop2007 писал(а): есть ли аналог
Если б был, стал бы я с KeepAlive возиться.

Mysql стандартными шаблонами Clarion 10 ABC

Добавлено: 13 Декабрь 2016, 11:47
gopstop2007
Алексей- Софт-Центр писал(а): Да, все правильно, ДП!!!
Я ещё вешаю на экран обычный таймер, чтобы идентифицировать окна, из которых идёт пинг к базе.
Типа: это окно можешь держать долго открытым!)
Алексей
По моему это через чур, ладно если окно форма, а так окно browse выполнило запрос и работаем с результатом, не понятно зачем забивать сеть пингом, ладно если сервер локальный, а если сервер на внешнем хостинге не сильно и "пинганешь" :)