|
Базы данных: FoxPro
FAQ - Visual Foxpro Club
Источник:
Вопрос -
Ответ
-
-
-
-
-
-
-
- Filer и
Fisual FoxPro
- Screen=Off в
config.fpw
- Своя
справка в стандартных диалогах VFP
- Инсталлятор
и VFP
- Преобразование
даты из Character(Двоичный) в Date
- Перенос
базы данных, созданной в конструкторе
- Инкрементальный
поиск и ComboBox
- Нулевой
байт (сигнатура) заголовка DBF
- Поиск
данных по шаблону
- Ограничение
в Excel на импорт более чем 16K записей
- Подсуммирование
данных в отчете
- Отправка
писем в VFP
- Быстродействие FPD
в Win2k
- Курс лекций
по VFP
- "Тормоза" в
ListBox
- Невозможно
обновить курсор на команде append blank
- Отчет FRX
-> HTML
- Как
скопировать открытый файл (.dbf и .idx)
- Автоподсказка в
VFP7
- Печать
отчетов с помощью Set Printer to Name
- Снова
проблемы с печатью отчетов на HP
- Документы в
Word
- Arj-архивы
из под Windows
- Древовидное
представление данных
Как запретить одновременный запуск нескольких копий
одного приложения VFP? |
Воспользуйтесь функцией Win32API FindWindow
(cWClass,cWinName) , которая возвращает дескриптор окна с
заданным заголовком cWinName: если приложение запускается
впервые, возвращаемое значение равно нулю. |
Как приложению присвоить иконку, отличную
от стандартной? |
С помощью ImagEdit создайте файл иконки (*.ico) в двух
режимах (16x16 для просмотра в режиме Small Icon, панели
задач; и 32x32 для просмотра в режиме Large Icon). Добавьте
файл в проект на вкладку Other. Откройте диалог Project Info в
меню Project/Project Info или с помощью контекстного меню в
Project Manager и на первой вкладке "Project" установите
галочку в CheckBox "Attach Icon", после чего станет доступной
кнопка "Icon". Нажав ее, Вы в диалоге укажете файл иконки.
Компилируйте EXE-файл и наслаждайтесь увиденным. |
Как прервать выполнение программы до
окончания работы внешней программы? |
Воспользуйтесь все той же функцией FindWindow Win32API,
упомянутой выше. Тогда, проверяя в цикле на наличие
дескриптора, равного нулю, ждем, ждем, ждем... |
|
Думаем, все знают о скудных возможностях VFP в этом вопросе
: есть только возможность экспорта результатов в текстовые
файлы с PostScript-кодами или без оных (с необязательным
параметром "ASCII"). Остается писать ручками.
Могу предложить , написанный на VC++ (имя
пользователя - "Admin" и пустой пароль). Эта программа
позволяет передавать данные из Dbf-файлов в уже созданный
шаблон MS Word.
В этот вопрос решен несколько шире
: есть возможность экспорта отобранных данных в файлы Xls,
Dbf, Txt; преобразование результатов отчета в Word и HTML.
Отметим, что и в ПК "Квант" под DOS проблема решена должным
образом.
Третий, стандартный способ - использовать класс _frx2html
(_internet.vcx). Пример :
...\Samples\Vfp98\Solution\Ffc\dohtml.scx |
В процессе работы с моим визуальным
классом файл .vcx принял "угрожающие" размеры. Что с ним
случилось и как с этим бороться ?
(Вячеслав Крикун
krikun@tut.by) |
Наряду с файлами .dbf, такой же формат имеют и файлы с
расширениями .dbc, frx, .lbx, .mnx, .pjx, .scx, .vcx. Поэтому
Вы можете открыть их (Use) и просмотреть (Browse) в результате
чего увидите, что файл "разбух" от записей, помеченных на
удаление. Отсюда вывод: откройте файл с параметром Exclusive и
упакуйте его.Применительно к проекту можно выбрать пункты меню
Project-Clean Up Project.
Другой, более простой способ : открыть файл .vcx в Class
Browser и нажать кнопку "Clean Up Class Library". |
Над проектом трудится множество людей, как
из фирмы, так и привлеченные со стороны. Сложилось так, что
обновленный .EXE файл надо относительно часто передавать
заказчику по модему. А это удовольствие - не из "самых". Как
уменьшить размеры .EXE файла в разрабатываемом
проекте? |
Во-первых, хочется заметить, что собственно этапу
кодирования (написания программных модулей) предшествует
тщательное планирование будущего проекта, определение его
архитектуры. Это тем более важно делать в случаях
предполагаемого большого размера проекта или задействования в
участии "вольных стрелков" со стороны. Это дает в дальнейшем
сопровождении проекта б'ольшую гибкость.
Надо уметь выделять различные уровни работы с приложением:
интерфейс, обработка данных и прочее. А о том, как это
сделать, я отсылаю Вас к языку UML и продуктам Rational Rose и
Visual Modeler (Visual Studio).
Со стороны Visual FoxPro могу порекомендовать в свойствах
существующего проекта (Project Information, вкладка Project)
убрать информацию об отладке (CheckBox "Debug Info"). Также,
если такой вариант допустим, использовать вместо единого .EXE
файла .FXP файлы с .EXE файлом, включающим в себя "стабильную"
часть, ядро программы.
И, как вариант, в Internet есть утилита ASPack
(Shareware) и подобные ей, которые значительно уменьшают
размер .EXE . |
Под Win2k FPD 2.6 захватывает ВСЮ память
(и вываливает ее в swap). Как это лечится?
(Игорь
bujhm@tut.by) |
Начну с вопроса, а сколько у Вас физической памяти ? И, на
сколько я в общем знаю работу системы, при нехватке физической
памяти (если это так - зачем ставить Win2k, лучше поставить
Win NT - "одного поля ягода") наоборот, происходит "выброс" в
swap-файл программных ресурсов, занимаемых другими, не
активными в данный момент, приложениями. Вы, наверное, это
хотели сказать ?
В свойствах ярлыка, на вкладке "Память" (это относится к
исполняемым файлам, н., Foxpro.exe. Для пакетных файлов можно
попробовать это сделать в _default.pif, который находится в
папке Winnt) советую отключить память XMS, установить
конкретное, исходя из размера БД значение для EMS (4-16 М,
только не "auto") и, чтобы увеличить скорость загрузки самой
программы (это уже так, по ходу) поставить DPMI минимальным
(1024). После подобных манипуляций размер "потребляемой"
памяти существенно снизится. |
Я (Тюрин Юрий, веду VFP-клуб в рамках сайта НТ ООО
"ЛюксСофт") рад, что кто-то откликнулся "со стороны" и написал
ответ. Я не совсем согласен с мнением отвечающего, т.к. на
моей машине под 2000-м таких проблем не возникало, а
рекомендации мои носили, скорее, "оптимизационный" характер.
Но и высказываний против у меня особых нет - по теории как бы
все верно.
Владимир Фабер: "На
данный вопрос вы даёте неправильный ответ. FPD по умолчанию
"забирает" под себя ВСЮ доступную физическую память. И
никакими установками в .pif файлах это не лечится. Для
выделения нужного кол-ва памяти следует смотреть на параметр
MEMLIMIT файла config.fp. ...
Этот вопрос неоднократно обсуждался в конференциях по
фоксу, кроме как через Memlimit проблема захвата фоксом памяти
не решается. " |
Начинаю изучать Vis ual FoxPro и к своему неудовольствию
отмечаю, что не могу вызвать утилиту "Filer", которой было
удобно пользоваться в FPD |
Filer никуда не делся, просто он преобразился - теперь это
COM-объект (в старых обозначениях - нечто вроде ActiveX) со
своими свойствами и методами ("Filer.dll" - так ищите
описание его в MSDN). А это значит, что теперь его можно
использовать в любых приложениях (Office, VB, VC++), которые
поддерживают корректную работу с COM-объектами.
Вы можете его вызывать програмно, создавая объектную
переменную: oMyFiler = CREATEOBJECT('Filer.FileUtil').
Если по-прежнему осталось желание работать с ним в
"интерактиве" - воспользуйтесь формой HOME(1) +
'Tools\Filer\Filer.scx', которую вы можете изменить на
свой вкус. |
Просматривали примеры на VFP и в файле
Config.fpw встретили строку "SCREEN=OFF". Что делает эта
команда? |
Эта команда скрывает главное окно VFP. Для использования
каких-либо стандартных средств VFP это окно может
понадобиться: например, для просмотра или печати отчета. В
этом случае необходимо его показать (_SCREEN.SHOW), а после
выполнения просмотра - опять скрыть (_SCREEN.HIDE). |
Скажите, можно ли в стандартных диалогах
VFP вызвать свою справку? |
Можно и нужно, т.к. малоинформативный английский язык :) не
много скажет нашему обычному пользователю, да и своя
програмная специфика может просматриваться. В этом деле самая
большая трудность - знать HelpContextID для конкретного
диалога. В этом нам поможет функция sys(1023) (включить режим
диагностирования помощи). Включите вызов этой функции перед
открытием интересуемого Вами диалога, откройте диалог и
нажмите на заветную кнопку "Help", после чего Вы можете
спокойно переписать необходимый идентификатор. Естественно,
что в Вашем проекте справки в Map-файле (.h) Вы должны
использовать идентификатор с этим номером. |
У меня проблемы с распространением своей
программы. Хотел, было, с помощью Setup Wizard-a "состряпать"
инсталляционную програмку, но наткнулся на стену непонимания
:-( (со стороны мелкософта). Нашел в Inete ссылки на некоторые
инсталляторы: с
обрезанными функциями, требует PID зарегистрированного Visual
Studio, а где я его возьму ;)) ; говорят, хорошая штука, да тоже Trial и "весит"
много - дорого скачивать. Может, кто подскажет какую-нибудь
ссылочку, а? |
Могу предложить Вашему вниманию свободно распространяемый
инсталятор для программ Windows . Особенности его работы следуюшие:
- Inno Setup полностью бесплатная программа, даже для
создания инсталяторов коммерческих программ (слышать это так
же приятно, как и слышать школьнику новость о том, что его
школа сгорела ;-)).
- Поддержка всех 32-битных версий Windows:Windows 95, 98,
2000, XP, Me, NT 4.0. Поддержка NT 3.51 также может быть
включена.
- Поддержка создания одного инсталяционного файла для
online-дистрибьюции. Разбивка на диски также поддерживается.
- Стандартный интерфейс в духе мастера 2000/XP (в т.ч.на
русском языке).
- Создание различных типов установки: полный, минимальный,
другой.
- Копирование файлов: встроенное сжатие файлов (метод .zip
и.bzip2). Инсталятор может сравнивать версии файлов
- Регистрирование DLL/OCX.
- Создание ярлыков в любых папках, включая меню Пуск,
Quick Launch и Рабочий стол.
- Работа с реестром и .INI файлами.
- Инсталяция и деинсталяция в ускоренном режиме (без
диалогов, окон, сообщений).
- Настройка деинсталятора.
|
Имеется БД в которой в одном из полей
типа Character(Двоичный) хранится дата в виде кодов (не
символов), например такая : 02 20 19 04, т.е. 4 байта ( это 19
апреля 2002). Как преобразовать такой тип в тип Date?
(GOGOL) |
Как заниматься шаманством с преобразованием типов не
подскажу, поэтому предлагаю "ручной"способ борьбы: ? ConvertToDate(Char_bin)
Function ConvertToDate
lpara cStr
local y1,y2,m,d
y1=Dec2Hex(asc(subs(cStr,2,1))) && старшая цифра года
y2=Dec2Hex(asc(subs(cStr,1,1))) && младшая цифра года
m =Dec2Hex(asc(subs(cStr,4,1))) && месяц
d =Dec2Hex(asc(subs(cStr,3,1))) && день
retu ctod(m+"."+d+"."+y1+y2) && значение типа Date
* если бы в поле числа были не в псевдодесятичном виде (20 в 16 с/с = 32 в 10 с/с), эта функция была бы не нужна Function Dec2Hex
LPARAMETER nDec
LOCAL nnDec, nOst, cOst, cHex, nnn
cHex = ""
nnDec = nDec
DO WHILE nnDec > 0
nOst = MOD(nnDec, 16)
nnDec = INT(nnDec / 16)
IF BETW(nOst,10,15)
cOst = CHR(nOst + 55)
ELSE
cOst = STR(nOst,1)
ENDIF
cHex = cOst + cHex
ENDDO
RETURN IIF(MOD(LEN(cHex),2)==1, "0","") + cHex
Будем надеяться, что кто-нибудь предложит более умное
решение.
|
|
База данных, созданная в "Конструкторе
баз данных", при открытии на другом компьютере автоматически
сортируется (все таблицы располагаются рядами и становятся
одинаковыми по размеру). Как это отключить, если это возможно?
Где хранятся координаты месторасположения таблиц в
Конструкторе БД? (Игнатенко Алёша) |
Не знаю, обрадую Вас или нет, но данные о размере и
расположении таблиц в схеме данных (извиняюсь, название
перешло со мной из Access) хранятся в FoxUser. В этом
причина ваших "локальных" бед. ;-)). Структура FoxUser.dbf
примерно такова:
Имя поля |
Описание |
TYPE |
тип данных, хранящихся в записи: PREVW и
DATAW - для VFP. Причем PREVW отвечает за размеры и
позиции окон |
ID |
категория для каждого типа: для PREVW -
BROWWIND, WINDMODIFY и проч. |
NAME |
уникальное имя объекта |
READONLY |
ясно из названия |
CKVAL |
контрольная сумма для проверки
целостности данных |
DATA |
Memo-поле с собственно данными (за
объяснениями по формату обращайтесь к мелкософту) |
UPDATED |
дата последнего
изменения |
Из таблицы Вам будет теперь понятно, что собака порылась в
поле типа PREVW, а простые сравнения измененного и
предварительно сохраненного FoxUser.dbf (напимер, с помощью
Windows Commander) удовлетворят Вашу жажду знаний. |
|
Есть ComboBox, прикрепленный к dbf. Как сделать, чтобы
при наборе первого значения автоматически искалось значение в
таблице и отображалось в Combobox? (Бризбанк г.Иркутск) |
Как я понял, основная проблема связана с "автоматическим"
поиском значения. Самый простой способ его реализовать -
установить свойство Style ComboBox-а в "2" (Dropdown
List). |
|
В документации по VFP6 встретил строку в которой
говорится ,что принадлежность таблиц к той или иной версии
Foxpro определяется информацией в нулевом байте заголовка
таблицы, изменяя информацию этого байта можно скрыть
информацию от других приложений. Прошу рассказать каким
способом изменить этот байт заголовка с тем чтобы данное
приложение понимало этот файл. И возможно ли сделать так чтобы
включая таблицу в базу данных автоматически изменялась
информация этого байта на установленную ?
Как изменить нулевой байт заголовка таблиц с тем чтобы
другие приложения не могли прочитать информацию из этой
таблицы а база данных в которую входит таблица могла работать ? |
Я было, сначала разделил 2 вопроса выше, а после решил
отвечать на оба одним махом, т.к. ноги у них растут с одного и
того же места (не буду уточнять c какого ;))
Во-первых, я хотел бы увидеть те строки сам воочию.
Тут, похоже, встает старый философский вопрос о том, что
первично : яйцо или курица. Дело в том, что 0-вой байт не
управляет, а "сигнализирует" VFP о том, как системе
воспринимать расположенную в DBF информацию. Смею заверить,
что между значением этого байта и содержимым файла однозначное
соответствие. Этот байт должен автоматически принимать
отличное от имеющегося значение в случае изменения структуры
соответствующим образом. В MSDN сказано (цитирую как
Библию ;)) : VFP не изменяет заголовок файла DBF в формате 2.x
до тех пор, пока не была добавлена ни одна из следующих
характеристик:
- поддержка значения Null
- типы данных DateTime, Currency и Double
- 2-чные Char- или Memo-поля
- таблица добавлена в файл БД (.dbc)
Что касается скрытия информации, так ведь формат VFP не
будет читаться в FPD; или, если таблица принадлежит одной БД
(VFP), то она недоступна, пока мы явно не откроем эту БД или
система (VFP) сама не сделает это автоматически по обратной
связи (см. структуру заголовка), где хранится ссылка на эту
БД, что, впрочем, никак не мешает доступу к информации.
От старожил слышал, что в Clipper-е (кое-кто еще пользуется
им) была возможность расположения в файле дополнительной
информации, недоступной вне программы. А так, если необходимо
"укрыться", надо придумывать либо что-то искусственное, либо
использовать SQL-сервера и/или другие системные "штучки".
Единственный случай, когда я прибегаю к модификации этого
байта (кстати, с помощью обычных низкоуровневых функций FOpen,
FWrite, ...) - есть восстановление заголовков файла с помощью
написанной мною утилиты .
Цитируемый топик MSDN - "Table File Structure (.DBF, .VCX,
.DBC, .SCX, .LBX, .MNX, .PJX, .FRX)" |
|
Кто-нибудь подскажет, каким символом обозначить условное
знакоместо при поиске в FoxPro2.5? Во многих программах это
звездочка(*). В Fox-е этот номер не проходит.Cykloid |
К сожалению, автор вопроса не указал, какой именно поиск он
имел в виду: в отдельно взятой строке либо по таблице данных.
Предположу, что вопрос относится к последнему варианту.
В FoxPro в командах поиска (Locate и Seek) такие
возможности не реализованы. Есть команды Like() и LikeC() (для
Unicode-кодировки), которые позволяют определить по шаблону
наличие данных в строке. Применимо к поиску по записям эти
функции можно использовать в цикле.
Поэтому для исполнения Ваших желаний советую
воспользоваться набором SQL-команд, широко используемых в
языке. Здесь (в команде SELECT) в шаблоне используются
следующие символы:
- "%" - аналог "звездочки" (*)
- "_" - аналог знака "?"
Для полноты знаний смотрите топик MSDN "SELECT - SQL" и
примеры к нему. |
|
Здравствуйте! При импорте файла dbf в Excel выгружается
не более 16383 записи, а надо больше. Как быть? Бронникова
Елена |
Что тут сказать, есть такое ограничение, вернее сказать
было, по заявлениям Microsoft. Но на практике (VFP7.0
SP1) я вижу, что ситуация не изменилась: при экспорте (команда
EXPORT) число строк в Excel действительно ограничивается 16K.
Все, что я могу пока посоветовать - открыть файл .DBF в Excel
с помощью COM/ActiveX, а далее - программно сохранить файл как
.XLS. Я так писать - не писал, но вижу, что при открытии .DBF
Excel показывает 64K записей - всё лучше.
P.S. Хотелось бы все-таки узнать, что Вы будете делать с
этим числом записей в Excel ? :))) |
|
Хотелось бы спросить об отчетах. Я делаю отчет, в базе
несколько строк. Надо просуммировать их по какому-ибудь полю.
Ставлю переменную, по которой суммирую, ставлю в
Calculations-Sum и запускаю отчет. Сумму выдает в конце
страницы, а надо, чтобы после последней строчки отчета. Можно
ли получить желаемое?vlad |
Вопрос, конечно, для начинающих. Можно было бы просто
ответить, а не "высвечивать" его здесь, но вдруг он возникнет
у кого-нибудь еще... ;))
Если данные никак логически не подразделяются, выберите
Report / Title Summary и checkbox "Summary band". В макете
появится новая линейка "Summary". Перетяните и поставьте ваше
вычисляемое поле над ней.
Если данные необходимо группировать и получать частные
суммы, добавьте группировку (Report / Data Grouping),
перетяните подсуммируемое поле над Group Footer в разметке
отчета, а в окне "Calculated Field" в Combobox-е выберите
появившийся новый пункт . |
|
Как отправить приаттаченный файл по Email из VFP
6.0Vlad |
Если найти описание какого-нибудь почтового клиента, то с
ним очень можно поговорить, не прислоняя его к стенке (по
совету А.Райкина ;)). Вот пример с Microsoft Outlook:
* открытие экземпляра приложения
oOutlook=CREATEOBJECT("Outlook.Application")
* ссылка на объект "сообщение"
oEMes = oOutlook.CreateItem(0)
oEMes.To = "vlad@svb.mv.ru"
oEMes.Subject = "Тема письма"
oEMes.Body = "Тело письма"
* Заветное подключение файла
oEMes.Attachments.Add("c:\text.txt")
oEMes.Send
Обрабатывать почтовые сообщения можно так же через классы
MAPI (The messaging application program interface) прямо в
форме. В настройке VFP на вкладке Controls установите селектор
на ActiveX controls, в списке Selected отметьте классы на
"Microsoft MAPI ..." ; в форме в панели Controls нажмите на
кнопку ViewClasses, выберите ActiveX Controls; выберите нужные
элементы управления и настройте их для работы.
См. Using the MAPI Controls в MSDN.
|
|
Имеется база (сетевая) на фокспро, написана 10 лет назад
для работы под ДОС. Если установить её на win2000prof (и
клиентская часть и серверная) то запросы, обрабатывавющиеся на
той же тачке, но под win98 за 2 сек, будут обрабатаваться
20-30 минут. Вопрос: как настроить win2000 , чтобы база
работала нормально? (модифицировать базу нельзя) заранее
благодарен за любые советы.Павел |
Наши клиенты работают под разными ОС, в том числе и в
Win2000, но такого "безобразия" мы не наблюдали. Чтобы давать
какие-то конкретные советы входной информации недостаточно.
Поэтому пробегусь "в общем, по верхам" в направлении
увеличения важности:
- Логический раздел с данными и ОС должен быть
ближе к началу физического диска.
- Файл подкачки желательно располагать в начале
диска с оптимальным размером (устанавливается опытным
путем, но лучше его сделать в несколько раз больше
количества ОП)
- Включить DMA дисков;
- В файловой системе NTFS при открытии файла
система обновляет метку последнего доступа к файлу,
что замедляет работу (не говоря уже о том, что NTFS - вещь
хоть и хорошая, но медленная). Для снятия обновления в
реестре по адресу HKEY_LOCAL_MACHINE -> SYSTEM ->
CurrentControlSet -> Control -> FileSystem cоздаём
ключ типа DWORD под названием NtfsDisableLastAccessUpdate,
после чего ставим его в 1.;
- Активный антивирус снижает быстродействие;
- Если помимо FoxPro работают еще какие-нибудь резидентные
программы с маленьким интервалом обновления, их
"прожорливость" к процессорному времени можно поубавить с
помощью утилиты ,
которая позволяет определять после какого по счету
прерывания от клавиатуры отдать ресурс процессора системе;
- Очень важно!!! Если ярлык создан на файл
.bat, в котором есть строка с вызовом FoxPro,
последняя ("лиса") будет работать в нерасширенном
режиме, что крайне отрицательно скажется на
производительности. Лучше создавать ярлык на .exe или
отредактировать файл _default.pif (см. вопрос №7 выше);
|
|
Где можно прослушать курс лекций по Visual Foxpro и по
переходу на него c Foxpro под DOS?Калицкий Юрий |
К сожалению, в Беларуси таких мест немного. Одно из них -
фирма "ЛюксСофт" ;)). Ранее свою готовность выказывали наши
коллеги из Гродненского университета, но как нынче обстоят у
них дела - нам не известно. А вообще, мы были бы очень рады,
если бы кто-то сообщил о других учебных центрах
Беларуси. |
|
Использую элемент управления ListBox для выбора значений
из поля таблицы.При движении курсора с помощью стрелок
клавиатуры "вверх,вниз" при выборе из списка происходит
замедление движения или проскакивание на несколько позиций.
Выбор при помощи мыши происходит нормально.Замечено, что такое
происходит не на всех ПК и это не зависит от типа ПК.
Подозреваю, что дело в Windows. Заранее благодарен. |
Что-то конкретное сказать здесь затрудняюсь. Может,
срабатывает психологический момент, когда мы от клавиатуры
ждем более быстрой работы (все знают, что с клавиатурой в
принципе работать быстрее). При этом забываем о том, что когда
строка в списке выделена и мы с помощью стрелок перемещаемся,
автоматически происходит выделение новой строки. При действиях
мышью мы только скроллируем список. А вообще, багов в VFP
предостаточно. |
|
При создании exe-шника ошибок нет, при запуске его
срабатывает ошибка "невозможно обновить курсор" на команде
append blank.foxer |
Причина видится в тривиальном - снимите флаг Read Only с
обрабатываемого файла. |
|
Как преобразовать отчет, подготовленный в VFP в формат
HTML с сохранением всех прибамбасов: фонты, рамки
и.т.д.D.E.I.
|
Никак. После преобразования в HTML все навороты, в том
числе графика, теряются. Так что пишите конвертер ручками или
обратите свой взор на наш Quant for Windows. В ближайшие дни
(сегодня 01.10.2002) он будет выложен на сайт фирмы "ЛюксСофт"
в новом, обновленном состоянии. |
|
Как скопировать открытый файл (.dbf и .idx)Иванеко Алексей |
Я так понял, Вы хотите решить вопрос "горячего" архивного
копирования. По моему разумению, так делать нельзя, потому
что, если Вы в программе не используете периодически сброс
буферов на диск с помощью flush(), в памяти могут оставаться
не сохраненные данные.
А в принципе, если файл открыт в режиме Shared, то вопрос
можно решить с помощью:
- Выполнения команды DOS - Run copy <имя исходного
файла dbf> <имя конечного файла или просто путь>
- Создать конечный файл аналогичной структуры и выполнить
находясь на нем Append From <исходный файл dbf>
- Более изощренный способ через низкоуровневые операции:
fopen(), fcreate(), fread(), fwrite().
Если файл открыт монопольно, то никак. |
|
Как убрать Авто-подсказку в редакторе VFP7 ? расшифрую:
При наборе ключевых фраз VFP дописывает оператор не дожидаясь
вашего набора, при этом под руками мельтешит полная врсия
всего оператора. Например вы хотите написать "sele 0" vfp вам
выдаст полное описание select SQL закрыв пол экрана. Это что,
шутки Гейтса? Дмитрий Передистый |
В системном меню выберите Tools/IntelliSense Manager. Все
остальное - по вкусу... |
|
Команда SET PRINT TO NAME ... не однозначно отрабатывает
на машинах различных пользователей, хотя на машине где
производится "сборка" проекта все нормально. Использование
GETPRINTER() - нежелательно, поэтому использую APRINTERS(m), а
затем SET PRINT TO NAME m(i,1). Например: ... APRINTERS(m),
SET PRINT TO NAME m(1,1) REPORT FORM F1 SET PRINT TO NAME
m(2,1) REPORT FORM F2 ... Программа откомпилирована с формами
отчетов. Формы отчетов специально созданы при отсутствии
установленных принтеров на машине "сборки" проекта. Версия VFP
5.0. Если можете, подскажите. Заранее Вам благодарен.Евгений Дорошенко
|
Мне не доводилось много печатать под VFP, но когда-то я
писал на Access-e и наблюдал подобные картины, когда один и
тот же отчет на разных принтерах вел себя по-разному
("неправильно" ;-)). Это и естественно, т.к. контекст
устройства (DC, Device Context - термин из C++ MFC) у каждого
из устройств свой: будь то экран или разновидности принтера.
Составленный отчет без учета этих особенностей может быть
непредсказуем.
Возможно, сказывается старая (5-я) версия VFP и в
последующих версиях этот "баг" исправлен.
Может, я и заблуждаюсь. В этом случае остается надеяться,
что Вам напишут по указанному мною выше адресу.
|
|
Программа работает на VFP6.0 под Win98. Из-за специфики
работы поставили лазерный принтер HP Laser Jet 1000. После
печати 1 документа из программы на принтер комп намертво
зависает , приходится перезагружать кнопкой Reset. Драйвера к
принтеру стоят родные. Получается что фокс конфликтует с
драйверами HP?Veronika |
Подобная проблема была у Прохоренко Светланы Семеновны,
писавшей нам ранее. К сожалению, никто не ответил на ее
вопрос и человек был вынужден разрешать его самостоятельно. А
сделала она это заменой "родного" для принтера драйвера на
более общий HP LaserJet. |
|
Требуется создать документы в Word, в которых
используются данные из таблиц Visual FoxPro. Эти документы
будут использовать приложение, написанное на VFP. Конструктор
отчетов (Report в VFP) для создания таких документов не
подходит. Какими средствами лучше воспользоваться? Svetlana Matuk |
Вы сами почти ответили на вопрос: нужно лишь создать
документ-шаблон в Word с полями, куда будут подставляться
значения из VFP-программы. Примеры для Word и Excel хорошо
описаны в книге "Использование VFP 6" М.Базияна (глава
21) |
|
Меня достало досовое окно при разархивации arj-файла.
Хочется встроить разархивацию (именно arj!) в свою прогу.
Есть-ли какой выход. В качестве подсказки - имеется СИшный код
unarj. |
А меня "достало" также и архивация arj в DOS-сессии ;-)). И
эту проблему решить еще труднее, потому что найти в Inet-е
распаковщик гораздо проще, чем архиватор. Если вернуться к
"нашим баранам", могу посоветовать в данной ситуации или
программно вызывать WinArj (есть такой "зверь", но мне он не
симпатичен), или, при наличии исходных текстов на СИ,
скомпоновать библиотеку для Foxpro и счастливо ею
пользоваться. |
|
На предприятии существует множество отделов (заранее не
известно сколько) необходимо их отображать поредством
раскрывающихся вкладок (папок). Может кто уже делал,
подскажите идею.Sergik |
Фирмой "ЛюксСофт", на сайте которого располагается
VFP-клуб, данный вопрос уже давно решен, как в DOS, так и в
Windows вариантах. Для произвольной таблицы (набора связанных
таблиц) можно построить дерево по заданным выражениям (полям)
группировки (классификации). Причем, подобных деревьев для
набора данных можно построить множество (разные "разрезы").
Если заинтересовало, скачайте
и/или . |
При перепечатке любого материала
с сайта, видимая ссылка на источник www.warayg.narod.ru
и все имена, ссылки авторов обязательны.
© 2005
|
|
|