Выгрузка из Clarion в Excel

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2301
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 17 раз

Выгрузка из Clarion в Excel

Сообщение Губин Игорь »

kreator писал(а): Вам бы только посмеяться. У людей горе...
Вам бы только посмеяться. У людей горе... :cat:
Это я только кажусь дураком! На самом деле я полный идиот!
Ал
✯ Ветеран ✯
Сообщения: 1011
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия

Выгрузка из Clarion в Excel

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

ну вот - взял и сдал все явки... :(
PavelNK
Старожил
Сообщения: 262
Зарегистрирован: 15 Март 2011, 8:02

Выгрузка из Clarion в Excel

Сообщение PavelNK »

Ал писал(а)::D
Губин Игорь писал(а):Да плюнь ты на секретность, договорись с кем-нибудь и всё тебе будет.
Родина, которая ...на, всегда помнит своих героев, и визу лет XX - ни-ни?
iBorman писал(а): ... *.mem. Кто подскажет, как вытащить информацию из него?
для начала в хелпе по языку CLARION про MEMO поля посмотри..., ну и если всё сам - придется ручками и писать-писать, лучше сразу в какой-ниб из сред CW6-CW10, только про галочку OEM в словаре не забывать :lol:
Первая форма допуска устроит?
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2301
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 17 раз

Выгрузка из Clarion в Excel

Сообщение Губин Игорь »

PavelNK писал(а): Первая форма допуска устроит?
Первой формы будь достоин!
Враг не дремлет!
Майор Пронин

Там коммерческая, как я понял, а это куда страшнее :idied:
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
ingasoftplus
Ветеран
Сообщения: 425
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)
Благодарил (а): 87 раз
Поблагодарили: 5 раз

Выгрузка из Clarion в Excel

Сообщение ingasoftplus »

а нельзя попробовать это?

http://www.scalabium.com/clarion/

http://www.processtext.com/abcclarion.html

там и триалы есть - да и стоит оно недорого ?
Ал
✯ Ветеран ✯
Сообщения: 1011
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия

Выгрузка из Clarion в Excel

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

Там коммерческая, как я понял, а это куда страшнее :idied:
Изображение
iBorman
Новичок
Сообщения: 14
Зарегистрирован: 28 Апрель 2015, 11:12

Выгрузка из Clarion в Excel

Сообщение iBorman »

Товарищи!
Я начал этот форум, ничерта не понимая ни в Кларион, ни в программировании. Сейчас я его заканчиваю, понимая что не знаю в этом действительно сложном деле совсем ничего. Но, благодаря вашей помощи, я решил свою проблему! Спасибо всем огромное! Особенно я благодарен человеку под ником Kreator, чьи отзывчивость и дельные советы в итоге помогли мне справиться (отдельное спасибо за SQL сервер :D ).
Всех с наступающим праздником великой ПОБЕДЫ! СЧАСТЬЯ И УСПЕХОВ! УРА!

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

Выгрузка из Clarion в Excel

Сообщение kreator »

Ну раз так удачно получилось с FireBird, считаю, есть смысл остаться на FB, не перегонять в Excel. А клиентскую часть переписать на современный лад.
We are hard at work… for you. :)
tolobot
Прохожий
Сообщения: 2
Зарегистрирован: 29 Октябрь 2020, 7:01

Выгрузка из Clarion в Excel

Сообщение tolobot »

kreator писал(а): 05 Май 2015, 16:58 Вам бы только посмеяться. У людей горе...
Ещё вариант для не боящихся работы.
Качаешь бесплатный SQL сервак Firebird с сайта http://firebirdsql.org/ (думаю, любую версию). Находишь средство для работы с ним IBExpert (есть бесплатные, для пользователей СССР). Создаёшь в IBExpert'е новую БД без таблиц. И там есть импорт из DAT (проверил memo подхватывает, во всяком случае IBExpert 2011), и есть экспорт во что хочешь, в том числе сразу в Excel. Дерзай!
Огромное Вам спасибо! Специально регистрировался ради этого. Я очень долго искал как можно вытащить данные из клариона и Ваше сообщение очень сильно помогло.
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Выгрузка из Clarion в Excel

Сообщение kreator »

Спасибо тебе, добрый человек! :ty:
Это ж надо ж!
We are hard at work… for you. :)
Аватара пользователя
Alex
Старожил
Сообщения: 210
Зарегистрирован: 29 Август 2005, 14:54
Откуда: Белоруссия

Выгрузка из Clarion в Excel

Сообщение Alex »

выгрузку надо делать в транзитный формат. Например CSV. Дабы потом уж -куда надо. Либо Импорт файлов в словарь БД и написание уже выгрузки непосредственно в Excel
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Выгрузка из Clarion в Excel

Сообщение kreator »

Alex писал(а): 03 Ноябрь 2020, 17:41 выгрузку надо делать в транзитный формат. Например CSV. Дабы потом уж -куда надо. Либо Импорт файлов в словарь БД и написание уже выгрузки непосредственно в Excel
В данном топике ситуация другая. Программиста нет, а данные перетащить надо. Какой csv? Если программист есть, то вариантов куча. И в этом случае csv не самый лучший вариант.
We are hard at work… for you. :)
tolobot
Прохожий
Сообщения: 2
Зарегистрирован: 29 Октябрь 2020, 7:01

Выгрузка из Clarion в Excel

Сообщение tolobot »

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

DECLARE @ClarionDate INT = 47563
DECLARE @SqlDateTime DATETIME 

-- Convert the clarion DATE into and SQL DateTime
SET @SqlDateTime = DateAdd(day, @ClarionDate  - 4, '1801-01-01') 

SELECT @SqlDateTime AS 'SQL Date Time'

-- Now convert it back from and SQL DateTime to a Clarion Date
SET @ClarionDate = DateDiff(day, DateAdd(day, -4, '1801-01-01'), @SqlDateTime)
SELECT @ClarionDate AS 'Clarion Date'

/*
A Clarion standard date is the number of days that have elapsed since 
December 28, 1800. The range of accessible dates is from January 1, 1801 
(standard date 4) to December 31, 9999 (standard date 2,994,626). Date 
procedures will not return correct values outside the limits of this range. 
The standard date calendar also adjusts for each leap year within the range of 
accessible dates. Dividing a standard date by modulo 7 gives you the day of the 
week: zero = Sunday, one = Monday, etc.
The LONG data type with a date format (@D) display picture is normally used for 
a standard date. Data entry into any date format picture with a two-digit year 
defaults to the century of next 20 or previous 80 years. For example, entering 
01/01/01 results in 01/01/2001 if the current year (per the system clock) is 
greater than 1980, and 01/01/1901 if the current year is 1980 or earlier.
The DATE data type is a data format used in the Btrieve Record Manager and some 
other file systems. A DATE field is internally converted to LONG containing the 
Clarion standard date before any mathematical or date procedure operation is 
performed. Therefore, DATE should be used for external file compatibility, and 
LONG is normally used for other dates.
*/
Оставлю, для тех кто будет делать по совету от kreator. Суть в том, что при импорте из .DAT файлов клариона в БД Firebird, через Ibexpert в JSON, у меня не импортировались нормально столбцы содержащие ДАТУ, они остались в виде числовых значений. Данный код, может это исправить. Его суть: "числовое значение клариона" - "4" + "дата отсчета в кларионе" = "преобразованная дата". "Дата отсчета" в кларионе = 1801-01-01, к этой дате надо просто добавить "числовое значение из клариона" - "4", которое является количеством дней прошедших с этой даты. Также приложу код скрипта на питоне, благодаря которому я решил свою проблему с неправильными датами.

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

import json
import datetime

def parser_for_clarion_date(clarion_value):
    # если вместо значения попадается Null, то выводим его.
    if clarion_value == None:
        return 'null'
    else:
        # Значение = кол-во дней прошедших с даты отсчета - 4 дня
        value = clarion_value - 4
        # Дата с которой идет отсчет в кларионе 01-01-1801, к ней будем добавлять кол-во дней (значение)
        time = datetime.date(1801, 1, 1)
        # получаем дату. Количество дней + дата отсчета клариона
        new_value = time + datetime.timedelta(days=value)
        # переводим формат даты из Год.месяц.день в День.месяц.год
        return new_value.strftime("%d.%m.%Y")

# К имени файла добавляем маску "_исправленный". Буду использовать для сохранения в новый файл.
def rename_file(file, mask='_исправленный'):
    splitter = file.split('.')
    return splitter[0] + mask + '.' + splitter[1]

def clarion_json_parser(file):
    file = file.replace('"','')
    with open(file, 'r', encoding='utf-8') as json_file:
        data = json.load(json_file)
        data2 = {}
        data2['VLAD_CENTR'] = []
        for element in data["RecordSet"]:
            data2['VLAD_CENTR'].append({
                'N_REC_VL': element['N_REC_VL'],
                'F': element['F'],
                'I': element['I'],
                'O': element['O'],
                # для полей с датами применяем функцию преобразования значения клариона в ДАТУ
                'DATA_RV': parser_for_clarion_date(element['DATA_RV']),
                'DATA_CH': parser_for_clarion_date(element['DATA_CH'])
            })
    with open(rename_file(file), 'w', encoding='utf-8') as outfile:
    # при записи в файл слетала кодировка у кириллицы, помогло добвавление ensure_ascii=False
        json.dump(data2, outfile, indent=4, ensure_ascii=False)
		

# вместо file указываем путь к JSON файлу, рядом будет создан новый файл с исправленными датами
clarion_json_parser(file)

Ответить