Страница 1 из 1
					
				
				Добавлено: 26 Октябрь 2004, 13:03
				 Гость
				Добрый день !
Давно не работал на Clarion (с 2.1 DOS), сейчас возникла
потребность написать небольшую программку с БД формата DBF
(среда С61 EE 9029 ABC). 
- прописал во все списки OEM (так нужно);
- в программе соответственно указал: Locale('CLACOLSEQ','WINDOWS')
- "целые" поля индексов описал как REAL (Number=N(9,0))
и все хорошо, но индексы ведут себя странно - то работают, то не работают ... 

 Причем не предсказуемо - строяться,
но запись по ключу, то считывается, то не считывается.
Pack(Список) - не помогает.
Причем, без разницы - что dBase3, что dBase4 (FoxPro не поддрживает OEM). Перевожу списки в TPS - все OK.
Вряд ли может быть такой откровенный косяк драйверов, скорее всего что-то не учел. Не подскажите - что нужно прописать (или как описать), для работы с индексированными DBF из Clarion ?
Заранее огромное спасибо.
Виталий
 
			
					
				
				Добавлено: 29 Октябрь 2004, 16:17
				 Гость
				Скорее всего, косяк драйверов ВСЕХ DBase.
 
У меня возникла такая же проблема при переводе пректа с Clarion 5.5.
Выличилось убиранием описания 'CLACOLSEQ' или CLACOLSEQ= в файле .env
 
------------
С уважением, 
bighard
bighard@mail.ru
Написал: ClaList(2)
 
			
					
				
				Добавлено: 29 Октябрь 2004, 16:18
				 Гость
				- в программе соответственно указал: Locale('CLACOLSEQ','WINDOWS')
Ну дык, если файлы OEM, такая же и CLACOLSEQ. К сожалению, нельзя прописать разные локали для разных файлов. 
- "целые" поля индексов описал как REAL (Number=N(9,0))
 Причем, без разницы - что dBase3, что dBase4 (FoxPro не поддрживает OEM). 
А FoxProFile{Prop:OEM}=True не сработает? 
Перевожу списки в TPS - все OK. 
А зачем их держать в Dbase? Разгрузи по требованию... 
---------------------------------------
C уважением, 
Юрий Философов,  
Главный программист
Корпорация "Диполь", Саратов
E-mail 
yufil@tacis-dipol.ru  (служ)
       
yufil@mail.ru    (дом)
ICQ#
75924439
Написал: ClaList(2)
 
			
					
				
				Добавлено: 30 Октябрь 2004, 12:40
				 Гость
				Да я извиняюсь, не правильно написал.
В программе конечно же указано Locale('CLACOLSEQ','OEM')
Беда в том, что для БД в формате DBF операция чтения
по ключу Access:FileDBF.Fetch(KeyFileDBF) или Get(FileDBF,KeyFileDBF)
эпизодически возвращает "Запись не найдена". 
Причем от состояния ключей это не зависит. 
Запускаешь программу - работает.
Еще раз запускаешь - не работает.
Причем ключ по цифровому полю - локализация вроде бы не причем здесь.
Какая - то мистика. Меняю формат файлов на TPS - все OK.
Все-таки потихоньку прихожу к мнению, что писать на Clarion с использованием индексированного DBF видимо не получиться.
Придется действительно, при необходимости, выгружать списки. 
Потому, что проблемы начинаются только при попытке работать с индексами (ключами). Если работать без них - драйвер DBF работает без проблем.
С уважением, Виталий
			 
			
					
				
				Добавлено: 01 Ноябрь 2004, 12:50
				 Гость
				Спасибо - всем, кто хотел помочь - разобрался !
По крайне мере для dBase IV - индексы работают без проблем.
Может быть кому пригодится мой печальный опыт, что бы не тратить время -
при работе с индекированными DBF файлами придерживайтесь
следующих правил:
1. В каждом списке должен быть Primary Key 
    (иначе записи в списка будут двоиться - но это старая проблема);
2. Все списки ОБЯЗАТЕЛЬНО должны быть с атрибутом THERAD
    и открываться для многопользовательского доступа (SHARE);
    - иначе в MDI интерфейсе невозможно будет открыть два окна
      с доступом к одному файлу.
3. В процедурах типа Browse, Form и Report файл должен быть описан
    ТОЛЬКО ОДИН РАЗ - это мой главный косяк. Т.е. если файл описан
    как Browsing List Box - его нельзя повторно включать в секцию 
    Other Files. Если сделать таким образом, то начинаются чудеса -
    файл открыт, при последовательном доступе читается, а по ключу
    записи не доступны в принципе. 
    Причем, если списки сделать TPS формата - то эта проблема не
    проявляется ... 
Еще раз спасибо ! Виталий.