:: Visual Foxpro, Foxpro for DOS
добавить новое имя на форме для DBF файла
All911
Автор

Сообщений: 23
Дата регистрации: 28.08.2014
Есть форма на ней есть combobox (VID_PER ) при нажатие на кнопку формирование отчета , он все правильно формирует все и хорошо. Но есть проблема, если пользователь захотел то в NAZ_DBF он может придумать сам имя латинскими буквами , но у меня выдается ошибка,что либо такого NAZ_DBF не существует либо что уже другая таблица сформирована .
на кнопку после того как сформировался отчет

IF NOT EMPTY(THISFORM.NAZ_DBF.Value)
if used("W_1")
use in w_1
endif
if file(NAZ_DBF+".DBF")
erase &NAZ_DBF..DBF
endif
if file(NAZ_DBF+".TXT")
erase &NAZ_DBF..TXT
endif
rename w_1.DBF to &NAZ_DBF..DBF
endif
W_1 - Это табличка которая формируется по выбраным данным и если пользователь не задал имя в строке NAZ_DBF то эта таблица пересылаетв excel и все правильно выдается
в textbox NAZ_DBF в valid

private NAZ_DBF
*!* wait clear
*!* wait window nowait "Введите имя файла латинскими буквами!"+chr(13)+;
"Файл будет сохранен в "+sys(5)+curdir()
NAZ_DBF=chrt(allt(NAZ_DBF),TB1,TB2)
if upper(NAZ_DBF)="W_1"
do PROC_BELL
wait clear
wait window nowait "Имя файла не должно быть W_1!"
NAZ_DBF=""
loop
endif



Исправлено 1 раз(а). Последнее : All911, 29.06.17 16:48
Ratings: 0 negative/0 positive
Re: добавить новое имя на форме для DBF файла
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Каша из обращений к переменной и к элементу управления (зачем то сделанных одноимёнными - видимо чтобы проще было запутаться в 3 соснах).
Ненужное использование макро, незнание функций FORCEEXT, FULLPATH... Какие-то безумные rename, удаление левого txt файла...


------------------
WBR, Igor
Ratings: 0 negative/1 positive
Re: добавить новое имя на форме для DBF файла
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Igor Korolyov
Каша из обращений к переменной и к элементу управления (зачем то сделанных одноимёнными - видимо чтобы проще было запутаться в 3 соснах).
Ненужное использование макро, незнание функций FORCEEXT, FULLPATH... Какие-то безумные rename, удаление левого txt файла...
А если бы еще и отчет формировался не в таблицу W_1, а в курсор, то вообще вся эта трехомудия не нужна была бы...

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/1 positive
Re: добавить новое имя на форме для DBF файла
akvvohinc

Сообщений: 4222
Откуда: Москва
Дата регистрации: 11.11.2008
Непонятна логика - проверяется на пустоту значение поля на форме, после чего производятся действия с использованием не этого поля, а некоторой переменной, в которой неизвестно что в этот момент находится.

PS
Чтобы стереть файл не требуется сначала проверять его существование - ERASE сотрет файл, если он есть, и не сотрет, если его нет (ошибки при этом выдано не будет).
Тем более, что функция FILE() без указания пути будет искать файл не только в default directory, а ERASE будет стирать файл именно в ней.

PPS
Лучше обратиться за помощью к автору программы, а здесь по вашему описанию проблемы (при чем здесь, например, комбобокс) и приведенному коду все равно никто ничего конкретного сказать не сможет.
Ratings: 0 negative/0 positive
Re: добавить новое имя на форме для DBF файла
dfr

Сообщений: 254
Откуда: Барнаул
Дата регистрации: 29.07.2005
Из Valid все убрать. В кнопку добавить типа:

cNAZ_DBF = ALLTRIM(THISFORM.NAZ_DBF.Value)
IF NOT EMPTY(cNAZ_DBF)
cNAZ_DBF = CHRTRAN(cNAZ_DBF,TB1,TB2)
IF UPPER(cNAZ_DBF) == "W_1"
DO PROC_BELL
WAIT WINDOW NOWAIT "Имя файла не должно быть W_1!"
THISFORM.NAZ_DBF.setfocus()
RETURN
ENDIF
cPathDbf = ADDBS(JUSTPATH(DBF('W_1')))
USE IN SELECT('W_1')
ERASE (cPathDbf + cNAZ_DBF + ".DBF")
ERASE (cPathDbf + cNAZ_DBF + ".TXT")
RENAME (cPathDbf + "w_1.DBF") TO (cPathDbf + cNAZ_DBF + ".DBF")
ENDIF

Правда если в отчет пойдет Memo, то потом не откроется переименованный DBF. Лучше тогда делать копию из w_1 через Copy to .. или Select .. from ..



Исправлено 1 раз(а). Последнее : dfr, 30.06.17 05:10
Ratings: 0 negative/1 positive
Re: добавить новое имя на форме для DBF файла
All911
Автор

Сообщений: 23
Дата регистрации: 28.08.2014
СПАСИБО
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 16 (Гостей: 16)

© 2000-2024 Fox Club 
Яндекс.Метрика