View previous topic :: View next topic |
Author |
Message |
Kott
Joined: 24 Jun 2003 Posts: 1 Location: Петров Константин Владимирович Occupation: менеджер Interests: Новосибирск
|
Posted: 24 Jun 2003 07:48 Post subject: Как читать и писать в FPT-файл средствами VFP |
|
|
|
|
Back to top |
|
|
Дорогой Денис
Joined: 09 Apr 2003 Posts: 37 Location: Дорогой Денис Occupation: Алтай-Интеллект-Сервис Interests: Барнаул
|
Posted: 24 Jun 2003 07:53 Post subject: |
|
|
Клиппер позволяет хранить в момо-полях массивы. Это широко используется в БЭСТ-4. (например книга покупок продаж, счета фактуры - там в мемо полях информация по ставкам и суммам НДС.)
FoxPro хранить массивы в мео полях не умеет.
Поэтому, насколько я понимаю, никак. |
|
Back to top |
|
|
WiRuc
Joined: 27 Aug 2002 Posts: 39
|
Posted: 24 Jun 2003 09:44 Post subject: |
|
|
Еще раз повторюсь
Никто не мешает всю подготовку и обработку данных делать на Фоксе, а затем записывать изменения в базы с помощью небольшой проги на Клиппере. Я так делал с книгой прода |
|
Back to top |
|
|
Алексей З.
Joined: 08 Jan 2003 Posts: 344 Location: Зызин Алексей Occupation: ЗАО "Ренова", программист Interests: Москва
|
Posted: 24 Jun 2003 09:47 Post subject: |
|
|
На самом деле в fpt-файлах находится ВСЁ ТО, что находится в мемо-полях соответствющего dbf-файла. И всё что вы видите в мемо-полях - это содержимое fpt-файла. Т.е. чтобы ввести новую, изменить или удалить информацию из fpt-файла - редактируются соответствующие мемо-поля.
Что касается хранения массивов в мемо-полях, то это возмозможно в любой dbf-базе. И не важно Fox это, или Clipper, или Paradox! Они обычно представляют собой цепочку данных с фиксированными разделителями. Записываются и считываются они в каждом случае при помощи своей собственной обработки (подпрограммы).
PS. И вообще, прежде чем что-то править в базах полезно сначала почитать какие-нибудь учебники по этому предме |
|
Back to top |
|
|
WiRuc
Joined: 27 Aug 2002 Posts: 39
|
Posted: 25 Jun 2003 12:12 Post subject: |
|
|
Спорим что-это не так?
Читайте доку по клипперу, хранение массивов в мемо-полях - привилегия SIXCDX, Фокс такие поля не понимает. |
|
Back to top |
|
|
Алексей З.
Joined: 08 Jan 2003 Posts: 344 Location: Зызин Алексей Occupation: ЗАО "Ренова", программист Interests: Москва
|
Posted: 25 Jun 2003 12:24 Post subject: |
|
|
Клиппер я уже забыл. Немного поработал с ним в начале 90-х и всё.
Но:
Ты же можешь в txt-файле сохранить массив?! Что тебе мешает его же сохранить в мемо-поле? Ведь эти поля - суть большущщее текстовое поле со множеством строк и колонок, как чистый (или заполненный) текстовый файл. |
|
Back to top |
|
|
WiRuc
Joined: 27 Aug 2002 Posts: 39
|
Posted: 25 Jun 2003 13:39 Post subject: |
|
|
Очевидно, разработчики SIXCDX решили сделать по-другому.
Откройте файл book в REAL и убедитесь сами. Длина мемо-поля SUM_DATA равна 0, хотя там как раз хранится массив. |
|
Back to top |
|
|
Алексей З.
Joined: 08 Jan 2003 Posts: 344 Location: Зызин Алексей Occupation: ЗАО "Ренова", программист Interests: Москва
|
Posted: 25 Jun 2003 14:10 Post subject: |
|
|
WiRuc wrote: | ... Длина мемо-поля SUM_DATA равна 0... |
Естественно!
Цитата из учебника по VFP: "Тип данных Memo - обозначается М, длинна 0, десятичных знаков 0, объем 4 байта. Тип данных Memo в записи таблицы - это поле примечаний для ссылки на блок данных". (А. Гореев. "VFP 5.0", FoxTalk).
Вышеуказанный блок данных находится в fpt-файл |
|
Back to top |
|
|
WiRuc
Joined: 27 Aug 2002 Posts: 39
|
Posted: 25 Jun 2003 14:51 Post subject: |
|
|
Так... Значит начнем с азов
Естественно, поле мемо - не более, чем ссылка на позицию в файле fpt. Это значит, что если в мемо-поле нет данных, то хранится 0, иначе - ссылка на реальные данные. Поэтому, в Фоксе принципиально не может быть ситуации, когда ссылка на данные присутствует, а длина самих данных равна нулю (то бишь их нет). За исключением разрушенных файлов, естественно. Теперь, открываем в Фоксе файл book и видим, что у поля sum_data слово Memo написано с большой буквы. Тем самым Фокс показывает, что в мемо-поле есть ссылка на реальные данные. Теперь, делаем len(sum_data) и получаем... 0. Т.е. хотя ссылка на данные есть, самих данных НЕТ. Это как раз связано со спецификой хранения массивов в мемо-полях. Из Фокса вы эти поля никак не получите |
|
Back to top |
|
|
|