PROP:SQL related files

ODBC

Модератор: Andrew™

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

PROP:SQL related files

Сообщение gopstop2007 »

Для формирования отчетов, предварительно получаю данные с сервера mysql по условию (за период) и полученный результат записываю в аналогичные файлы (memory - IMDD), далее из них строю отчеты.
Сделано так, чтобы не насиловать сервер, так как объем данных большой. :)
Как получить результат запроса из двух и более таблиц в mysql

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

SELECT t1.id, t2.name, t2.code FROM table as t1 LEFT OUTER JOIN table2 as t2 ON t1.id = t2.id
в MAV без проблем, но надо без него. :)
А вот как через prop:sql получить результат запроса или есть еще варианты?
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

PROP:SQL related files

Сообщение RaFaeL »

А в чем вопрос то? Так и получить. Только файл, куда ты хочешь вернуть запрос, должен соответствовать структуре, которую тебе вернет PROP:SQL, т.е. в первое поле вернется первая колонка запроса, во второе вторая колонка и т.п. Имена полей значения не имеют
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

PROP:SQL related files

Сообщение gopstop2007 »

RaFaeL писал(а): 09 Июнь 2017, 11:24 Только файл, куда ты хочешь вернуть запрос, должен соответствовать структуре, которую тебе вернет PROP:SQL
Спасибо, самое оно. :D Запутался маленько.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

PROP:SQL related files

Сообщение Yufil »

В своё время рассылал процедуру на чистом Clarion, которая безо всяких MAV выполняла запросы
Правда, надо в базе данных создать таблицу с одним полем типа String (в неё ничего не пишется).
А потом, после всех настроек - одно удовольствие

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

LoadQueueFromSQL('Delete people where id=1' )  ! Без параметров 
LoadQueueFromSQL('Select Name,Age From people where id=1',, Loc:Name, Loc:Age) ! Загрузка значений в поля. Если записи нет, пишется пробел или 0 (null не обрабатывается) 

PeopleQ  Queue(PeopleQ) 
Age         Long 
Name      Cstring(30) 
              End 

LoadQueueFromSQL('Select Age,Name From People', PeopleQ, PeopleQ:Age, PeopleQ:Name) ! Загрузка запроса в очередь. 
 
Да, ещё процедура возвращает код завершения Clarion, если авария. IF LoadQueueFromSQL Then Message(Error()) ...
Ну и ещё всякие извраты...
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

PROP:SQL related files

Сообщение gopstop2007 »

Yufil писал(а): 09 Июнь 2017, 12:57 В своё время рассылал процедуру на чистом Clarion...
Да видел, но как то использовать не получалось. А процедура возвращает результат запроса только в список полей или можно указать саму очередь? И есть ли ограничение на кол-во результатных полей указываемых в процедуре?
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

PROP:SQL related files

Сообщение Yufil »

А посмотри внимательно. Если второй параметр опущен, то в список. А если второй параметр указан, то это-очередь, а дальше-поля очереди,куда писать. В принципе, их можно и не указывать (тогда кладётся в первое поле очереди, второе и т д), но у меня иногда по непонятным причинам не срабатывало, поэтому поля очереди обычно указываю. Количество результатных полей ограничено (у меня 10), но поправить текст, чтобы их было, например, 30 - нет проблем. Кроме того, можно, как указано выше, задать имя очереди или группы, а сами поля не указывать. Тогда можно, наверное, и больше...
Но в реальной жизни больше 14-15 параметров не требовалось, тем более, что подгрузить дополнительное значение, например, для отчёта -элементарно

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

LoadQueueFromSQL('Select people....', peopleq, ....) 
LOOP PeopleQ#=1 TO RECORDS(PeopleQ) 
   Get(PeopleQ, PeopleQ#) 
   LoadQueueFromSQL('Select name from town where id=' & PeopleQ:Town_id ,, Loc:Town_Name) 
   Print(... ) 
END  
Собственно говоря, про всякие Set-Next и всё такое забываешь достаточно быстро :)

. А в таблице БД поле ровно одно, независимо от...
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

PROP:SQL related files

Сообщение kreator »

Вот тема - forum.clarionlife.net/viewtopic.php?f=6&t=3486. На шестой странице мой вариант работы с запросами.
We are hard at work… for you. :)
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

PROP:SQL related files

Сообщение gopstop2007 »

kreator писал(а): 09 Июнь 2017, 14:08 Вот тема - forum.clarionlife.net/viewtopic.php?f=6&t=3486. На шестой странице мой вариант работы с запросами.
Спасибо, не видел :)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Ответить