Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Чтение из текстового файла / 24 сообщений из 24, страница 1 из 1
03.08.2015, 13:53
    #39021706
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из текстового файла
Здр-те форумчане!

Я использую Excel для вывода отчетов из FoxPro. Информации в отчетах меняются каждый месяц и мне приходиться изменить все эти настройки в коде программы и заменить на сервере exe файл на следующий день. Можно ли в текстовом файле все изменить, а в программе читать содержимое текстового файла? К примеру, текстовый файл 1.txt, файл содержит тексты.
...
Рейтинг: 0 / 0
03.08.2015, 14:00
    #39021711
T1gRa_NT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из текстового файла
Памятуя Ваш прошлый пост:
1. У Вас меняется структура файла Excel?
2. У Вас меняется текст в ячейках Excel?
3. Если настройки содержаться в файле, то чем замена файла легче exe?
...
Рейтинг: 0 / 0
03.08.2015, 14:17
    #39021730
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из текстового файла
T1gRa_NTПамятуя Ваш прошлый пост:
1. У Вас меняется структура файла Excel?
2. У Вас меняется текст в ячейках Excel?
3. Если настройки содержаться в файле, то чем замена файла легче exe?

Форма отчета в Excel не меняется, только данные. Я хотел написанные мною в программе коды сохранить в текстовом файле и читать его в Foxpro.
...
Рейтинг: 0 / 0
03.08.2015, 14:20
    #39021738
T1gRa_NT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из текстового файла
Уже лучше.
Коды чего?
...
Рейтинг: 0 / 0
03.08.2015, 14:25
    #39021744
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из текстового файла
T1gRa_NTУже лучше.
Коды чего?

Н-р такие коды:

xl=CREATEOBJECT('Excel.Application')
xl.Visible= .t.
xl.WorkBooks.open(ALLTRIM(sysfile.s_pathfwp)+'m.xlt')
GO TOP
xl.WorkBooks(1).Sheets(1).Select
xl.WorkBooks(1).Sheets(1).Range('C18').Select
xl.Selection.Value=m_date
...
Рейтинг: 0 / 0
03.08.2015, 14:38
    #39021757
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из текстового файла
ularsoftT1gRa_NTУже лучше.
Коды чего?

Н-р такие коды:

xl=CREATEOBJECT('Excel.Application')
xl.Visible= .t.
xl.WorkBooks.open(ALLTRIM(sysfile.s_pathfwp)+'m.xlt')
GO TOP
xl.WorkBooks(1).Sheets(1).Select
xl.WorkBooks(1).Sheets(1).Range('C18').Select
xl.Selection.Value=m_date

и открыть в фоксе FOPEN(ALLTRIM(sysfile.s_pathfwp)+'1.txt')
...
Рейтинг: 0 / 0
03.08.2015, 14:58
    #39021779
T1gRa_NT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из текстового файла
xl.Visible= .t. - очень рекомендуется указывать в конце.
Увеличивается скорость выгрузки в Excel.
Пользователь не может вмешаться в процесс формирования.
И зачем их менять?
я реализую следующим способом:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
fil_excel = 'Путь\Shab.xls' && выбор файла шаблона из текущей
filnam_r = "Shab.xls" && Имя файла эксель
nam_fil = 'Путь сохранения файла'+'имя файла'+'.xls' 
fil_new = (nam_fil)
ole2 = GETOBJECT(fil_excel)
    ole2.application.windows(filnam_r).activate
    ole1 = ole2.application
    WITH ole1
       .activeworkbook.saveas(fil_new)
       .sheets(2).select	&& выбор второго листа
       SELECT Файл из которого добавляем данные &&Выбираем массив лечившихся без прикрепления
       nomst = 4	&& определение строки с которой пишем
       SCAN 
              ole1.parent.cells(nomst, 4).value = поле
	      ole1.parent.cells(nomst, 5).value = ALLTRIM(поле)
              nomst = nomst+1
      ENDSCAN

**** Разлиновка ячеейк****
 			.range(.cells(4, 1), .cells(nomst-1, 22)).select 
    	    WITH .selection
           		.borders.linestyle = 1
	           	.borders.weight = 2
          	ENDWITH
    .range("A1").select	&& Перемещение курсора в ячейку
ENDWITH
WAIT CLEAR
ole1.visible = .T.	&& Отображение файла на экране
RELEASE ole1	&& Закрытие процесса Excel



Следующий вопрос: данные меняются, у них меняются типы или местоположение в Excel?
Или у Вас меняется место взятия шаблона файла?

ularsoftФорма отчета в Excel не меняется, только данные.
Так данные и должны меняться каждый месяц, разве не?
Но сама форма отчета крайне редко, если она меняется каждый месяц, это повод задуматься о её необходимости в таком в виде и продумать может избыточную но полную или разбить на несколько решающих каждую свою функцию.
...
Рейтинг: 0 / 0
03.08.2015, 15:04
    #39021789
T1gRa_NT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из текстового файла
ularsoftи открыть в фоксе FOPEN(ALLTRIM(sysfile.s_pathfwp)+'1.txt')

Если сильно хочется я б хранил данные в таблице MySQL и брал оттуда.
Меньше локальных файлов, меньше геморроя.
Но все-таки полностью и понятно сформулируйте стоящию перед Вами задачу, ато опять гадание на кофейной гуще.


Оффтоп:
Если живете в ЕКБ, то могу помочь очно . Давно не пил пиво.
...
Рейтинг: 0 / 0
03.08.2015, 15:52
    #39021856
T1gRa_NT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из текстового файла
Ну если хоте с файлом, то пожалуйте.
Гуглите символ перевода строки, и берите настройки из файла.

ИМХО: "Путь не очень." или вообще не понял задачи.
...
Рейтинг: 0 / 0
04.08.2015, 11:58
    #39022410
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из текстового файла
T1gRa_NTНу если хоте с файлом, то пожалуйте.
Гуглите символ перевода строки, и берите настройки из файла.

ИМХО: "Путь не очень." или вообще не понял задачи.

Короче, я хочу сохранить в текстовом файле (н-р, 1.txt) следующие коды из программы:
m_date=Thisform.cl_date1
e_date=Thisform.cl_date2
i=5
ex=CREATEOBJECT('Excel.Application')
ex.WorkBooks.open(ALLTRIM(sysfile.s_pathfwp)+'kor10102.xlt')
ex.WorkBooks(1).Sheets(1).Select
WITH ex.WorkBooks(1).Sheets(1)
DO WHILE m_date<=e_date
ex.WorkBooks(1).Sheets(1).Range('A'+ALLTRIM(STR(i))).Value=m_date
ok=OD070(m_date,'TEMP')
IF !ok
MESSAGEBOX('Run-time Error ',016)
RETURN
ENDIF
SELECT TEMP
CALCULATE sum(T1_n) TO sm FOR INLIST(t1_1,'123456')
IF sm < 0
sm=ABS(sm)
ELSE
sm=-sm
ENDIF
.Range('B'+ALLTRIM(STR(i))).Select
ex.Selection.Value=sm
m_date=m_date+1
i=i+1
ENDDO
ENDWITH
ex.Visible= .t.
ThisForm.Release

т.к. будет меняться
CALCULATE sum(T1_n) TO sm FOR INLIST(t1_1,'123')
где 123.
Может добавиться еще 456 или 789.

Вот поэтому хочу в текстовом файле добавлять или удалять эти 123, 456, 789, чтобы не менять в программе.
...
Рейтинг: 0 / 0
04.08.2015, 12:10
    #39022426
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из текстового файла
ularsoftт.к. будет меняться
CALCULATE sum(T1_n) TO sm FOR INLIST(t1_1,'123')
где 123.
Может добавиться еще 456 или 789.

Вот поэтому хочу в текстовом файле добавлять или удалять эти 123, 456, 789, чтобы не менять в программе.
Месье знает толк в извращениях

Может по-человечески лучше сделать? Для этого параметры придумали. Передавай в параметрах свое 123.
Если значений переменное количество: делай курсор и передавай в параметрах его имя.

PS Не надо в кучу мешать код и данные, никогда ничего хорошего из этого не получалось.
...
Рейтинг: 0 / 0
04.08.2015, 12:14
    #39022437
T1gRa_NT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из текстового файла
а не легче эти "123, 456, 789"
передавать как значения?
...
Рейтинг: 0 / 0
04.08.2015, 12:18
    #39022441
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из текстового файла
Dima Tularsoftт.к. будет меняться
CALCULATE sum(T1_n) TO sm FOR INLIST(t1_1,'123')
где 123.
Может добавиться еще 456 или 789.

Вот поэтому хочу в текстовом файле добавлять или удалять эти 123, 456, 789, чтобы не менять в программе.
Месье знает толк в извращениях

Может по-человечески лучше сделать? Для этого параметры придумали. Передавай в параметрах свое 123.
Если значений переменное количество: делай курсор и передавай в параметрах его имя.

PS Не надо в кучу мешать код и данные, никогда ничего хорошего из этого не получалось.

Нельзя что ли просто сохранить выше коды в 1.txt и вызвать его?
...
Рейтинг: 0 / 0
04.08.2015, 12:23
    #39022455
T1gRa_NT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из текстового файла
Dima T, опередили.
ularsoftВот поэтому хочу в текстовом файле добавлять или удалять эти 123, 456, 789, чтобы не менять в программе.

Код вывода в эксель не трогай! Если меняются только они, передавай их как переменную!
Создай для них поле или таблицу в SQL и бери оттуда в курсор и усё, будет тебе счастье!
А то что хочешь сделать ты - я поддержу Dima T, - извращение!
И обновлять легче, никакого копирование файлов.
Если ты хочешь хранить в файле код вывода в excel и постоянного его обновлять, то сделай его внешним вызовом.
Но сразу продумай обновление в автоматическом режиме!
Самое простое, скомпилируй, переведи в hex загрузи в базу и проставь дату!
Программа постучится, посмотрит, что дата обновилась, скачет и соберет с заменой старого тебе новый модуль.
Никаких ручных копирований и т.д.
У всех пользователь актуальная версия и счастье.
То что хочешь сделать ты в корне не правильно!
P.S. Тэг: "Выделение исходников" придуман не зря. Форматирование программного кода тоже полезная вещь!
...
Рейтинг: 0 / 0
04.08.2015, 12:29
    #39022461
T1gRa_NT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из текстового файла
ularsoftНельзя что ли просто сохранить выше коды в 1.txt и вызвать его?
Можно, но в корне неправильно!
с помощью:
T1gRa_NTНу если хоте с файлом, то пожалуйте.
Гуглите символ перевода строки, и берите настройки из файла.

т.е. грубо говоря нужно со строк из файла собрать prg и запустить её исполнение.
...
Рейтинг: 0 / 0
04.08.2015, 12:29
    #39022462
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из текстового файла
ularsoftНельзя что ли просто сохранить выше коды в 1.txt и вызвать его?
Тогда уж 1.prg
Если не путаю, из готового exe не запустится, т.к. сначала prg компилируется в fxp, а компиляция без установленного фокса невозможна. Устанавливать фокс всем юзерам подряд - это нелегальное распространение ПО, уголовно-наказуемо.
...
Рейтинг: 0 / 0
04.08.2015, 12:52
    #39022504
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из текстового файла
Dima TularsoftНельзя что ли просто сохранить выше коды в 1.txt и вызвать его?
Тогда уж 1.prg
Если не путаю, из готового exe не запустится, т.к. сначала prg компилируется в fxp, а компиляция без установленного фокса невозможна. Устанавливать фокс всем юзерам подряд - это нелегальное распространение ПО, уголовно-наказуемо.

В дельфи есть такая возможность чтения из текстового файла.
Н-р, событие при нажатии кнопки:
procedure TForm1.Button1Click(Sender: TObject);
begin
with Table1 do
begin
Close;
SQL.Clear;
SQL.LoadFromFile('1.txt');
Open;
end;
end;

Текстовый файл 1.txt содержит следующее:
SELECT * FROM <ТАБЛИЦА SQL> WHERE <УСЛОВИЕ> GROUP BY <...> и т.д.
...
Рейтинг: 0 / 0
04.08.2015, 13:08
    #39022531
T1gRa_NT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из текстового файла
ularsoft,
Форматирование!
Если так охота, как правильно сказал Dima T,

Dima TТогда уж 1.prg
...
Рейтинг: 0 / 0
04.08.2015, 13:12
    #39022535
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из текстового файла
В фоксе тоже можно прочитать файл
Код: sql
1.
lcText = FileToStr('1.txt')


затем меняй lcText и пиши обратно
Код: sql
1.
StrToFile(lcText, '1.txt')


ularsoftТекстовый файл 1.txt содержит следующее:
SELECT * FROM <ТАБЛИЦА SQL> WHERE <УСЛОВИЕ> GROUP BY <...> и т.д.
Это запрос SQL серверу, который выполняется объектом SQL, ты же хочешь выполнить код на том же языке. Попробуй в дельфях код на паскале прочитать и выполнить, т.е. в 1.txt вставь это
Код: sql
1.
2.
SQL.Clear;
SQL.LoadFromFile('1.txt');
...
Рейтинг: 0 / 0
04.08.2015, 13:17
    #39022539
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из текстового файла
Dima TВ фоксе тоже можно прочитать файл
Код: sql
1.
lcText = FileToStr('1.txt')


затем меняй lcText и пиши обратно
Код: sql
1.
StrToFile(lcText, '1.txt')


ularsoftТекстовый файл 1.txt содержит следующее:
SELECT * FROM <ТАБЛИЦА SQL> WHERE <УСЛОВИЕ> GROUP BY <...> и т.д.
Это запрос SQL серверу, который выполняется объектом SQL, ты же хочешь выполнить код на том же языке. Попробуй в дельфях код на паскале прочитать и выполнить, т.е. в 1.txt вставь это
Код: sql
1.
2.
SQL.Clear;
SQL.LoadFromFile('1.txt');



Это был просто пример
...
Рейтинг: 0 / 0
04.08.2015, 13:26
    #39022546
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из текстового файла
Проверил. Не будет работать. Код теста
Код: sql
1.
2.
3.
4.
lcText = "MessageBox('Test')"
lcText = lcText + chr(13) + chr(10) + "MessageBox('Test2')"
StrToFile(lcText, 'mytest.prg')
do mytest.prg



Если запустить из IDE фокса, то выдает оба сообщения.
Если откомпилировать в EXE и запускать EXE, то выходит только первое.

Не совсем так как я писал выше, но все-равно не заработало.
...
Рейтинг: 0 / 0
04.08.2015, 13:30
    #39022555
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из текстового файла
Dima TПроверил. Не будет работать. Код теста
Код: sql
1.
2.
3.
4.
lcText = "MessageBox('Test')"
lcText = lcText + chr(13) + chr(10) + "MessageBox('Test2')"
StrToFile(lcText, 'mytest.prg')
do mytest.prg



Если запустить из IDE фокса, то выдает оба сообщения.
Если откомпилировать в EXE и запускать EXE, то выходит только первое.

Не совсем так как я писал выше, но все-равно не заработало.

Короче, безнадежно да
...
Рейтинг: 0 / 0
04.08.2015, 14:18
    #39022593
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение из текстового файла
ularsoft,

Код: sql
1.
2.
3.
lcText = "MessageBox('Test')"
lcText = lcText + chr(13) + chr(10) + "MessageBox('Test2')"
EXECSCRIPT(lcText) 
...
Рейтинг: 0 / 0
04.08.2015, 14:32
    #39022607
Чтение из текстового файла
ularsoftDima TПроверил. Не будет работать. Код теста
Код: sql
1.
2.
3.
4.
lcText = "MessageBox('Test')"
lcText = lcText + chr(13) + chr(10) + "MessageBox('Test2')"
StrToFile(lcText, 'mytest.prg')
do mytest.prg



Если запустить из IDE фокса, то выдает оба сообщения.
Если откомпилировать в EXE и запускать EXE, то выходит только первое.

Не совсем так как я писал выше, но все-равно не заработало.

Короче, безнадежно даНе безнадежно. Есть в фоксе возможность выполнить в рантайме фоксовый код, лежащий в любом файле. Но вот использование этого для изменения настроек отчетов - из пушки по воробьям.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Чтение из текстового файла / 24 сообщений из 24, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]