:: Архив конференции по VFP до 2005 года
Две проблемы
Warlord7

Сообщений: 15
Откуда: Абхазия, Сухум
Дата регистрации: 10.02.2005
Привет всем участникам форума!
Не могу справиться с двумя задачами:
1. Требуется создавать файлы .dbf, используя в качестве имени, к примеру, значение определённого поля или переменной. Как это можно сделать?
Например, в переменной содержится определённая дата (10-02-2005), и надо, чтобы образовался файл с таким же именем именем (10-02-2005.dbf).
Думаю, что такая или похожая задача уже обсуждалась. Если так - то просто киньте ссылку на топик. Или подскаэите ответ.

2. Как сделать поиск таким образом, чтобы при вводе символов курсор сразу становился на нужную строку. То есть, имеется список фамилий. С целью быстро перейти на нужную фамилию, набираем подряд её буквы. По мере набора курсор устанавливается на подходящую.

Заранее благодарен всем, кто сможет помочь.
Надеюсь влиться в общий коллектив




------------------
And Justice For All!
Ratings: 0 negative/0 positive
Re: Две проблемы
Saratoga

Сообщений: 494
Дата регистрации: 02.02.2004
Опишу пример решения 2-й проблемы:
Вариантов масса, ну вот один из них, при наборе фрагмента фамилии в справочнике пациентов с каждым новым вводимым символом строится новый sql-запрос и выводимый список фамилий сужается - можно посмотреть весь дистрибутив, но он достаточно большой под 8Mb, а вот скриншот, как это выглядит на деле:
www.adenta.ru - так таблица выглядит приблизительно до начала поиска, контекстное меню здесь ни при чем.
www.adenta.ru- так выглядит после набора контекста

Эту мулю можно вшить в класс, и тогда такой поиск легко реализовать для любого справочника.



Отредактировано (10.02.05 18:38)


------------------
Ratings: 0 negative/0 positive
Re: Две проблемы
TAS

Сообщений: 851
Откуда: Москва
Дата регистрации: 28.09.2000
1) имя файла из даты:

CHRTRAN(DTOC(DATE()),".","-")+".dbf"

2) Такой поиск называется инкементальным

forum.foxclub.ru
Ratings: 0 negative/0 positive
Re: Две проблемы
Aleksei_Kr

Сообщений: 4
Дата регистрации: 05.02.2005
Сообщи E-mail на ''.phorum_html_encode('ak113@rambler.ru').''
Пришлю программу




------------------
Алексей К.
Ratings: 0 negative/0 positive
Re: Две проблемы
matod

Сообщений: 3062
Откуда: Иркутск
Дата регистрации: 31.10.2001
По первому вопросу - см. синтаксис команды CREATE TABLE. Пример:

d = date()
c = CHRTRAN( DTOC( m.d ),".","-")+".dbf"

create table free &c ( Fld1 C(10), Fld2 I, Fld3 D )
или вообще сформировать цедуюкоманду:

c = [create table free ] +c + [ ( Fld1 C(10), Fld2 I, Fld3 D )]
&c
Ratings: 0 negative/0 positive
Re: Две проблемы
Перминов Игорь

Сообщений: 1591
Откуда: Красная Орловка
Дата регистрации: 16.09.2001
Кстати, имя файла в виде 15-02-2005.dbf или 15_02_2005.dbf т.е. ДДММГГГГ.DBF неудобно для сортировки и просмотра, поэтому я лично делаю так:
private cDt, cF
cDt = dtoc(DATE(),1)
cF = SYS(5)+SYS(2003)+"\"+cDt+".DBF"
* Приведенное выше можно написать и короче: cF = SYS(5)+SYS(2003)+"\"+dtoc(DATE(),1)+".DBF"
create table (cF) (fields def)
matod
c = [create table free ] +c + [ ( Fld1 C(10), Fld2 I, Fld3 D )]
Данная строка может (но это не значит, что оны будет очень длинной) выйти за допустимый размер (>254), тогда будет выдано сообщение об ошибке.
Когда очень много полей, я делаю так, формирую массив, аналогичный AFIELDS(<array>,<alias>), заполняю его значениями, а затем:
create table (cF) from array <array_name>




------------------
Без коментариев..
Ratings: 0 negative/0 positive
Re: Две проблемы
JS
Автор

Сообщений: 12264
Откуда: Эстония
Дата регистрации: 04.09.2000
Если говорить об удобствах, в частности - сортировки, то предпочтительнее использовать функцию DTOS(),
которая всегда возвращает дату в формате YYYYMMDD




------------------
Knowledge is better than ignorance!
Website: juri.foxhelp.eu
Ratings: 0 negative/0 positive
Re: Две проблемы
Alv

Сообщений: 259
Дата регистрации: 27.10.2002
dtoc(DATE(),1) и dtos(DATE()) - это одно и тоже.
Ratings: 0 negative/0 positive
Re: Две проблемы
matod

Сообщений: 3062
Откуда: Иркутск
Дата регистрации: 31.10.2001
2 Перминов Игорь

Цитата:
Данная строка может (но это не значит, что оны будет очень длинной) выйти за допустимый размер (>254),

За допустимый предел 254 символа может выйти строковая константа, что всегда можно скорректировать, разбив ее на несколько строк:
c = [create table free ] + m.c + [( p1 C(10), p2 C(10), .....много еще полей ] + [p80 C(10), .... еще поля...]
т.е. то, что стоит в [] действительно не должно выходить за 254, а вот их сумма может быть значительно больше.

Ограничение на длинну выполняемой макроподстановки составляет 8192 символа (по крайней мере VFP6.0), что, как правило вполне достаточно для формирорвания команды создания таблиц (учитывая, что такое же ограничение имеется на максимальный размер одной команды.)

С остальным вполне согласен
Ratings: 0 negative/0 positive
Re: Две проблемы
JS
Автор

Сообщений: 12264
Откуда: Эстония
Дата регистрации: 04.09.2000
При использовании DTOS меньше стука по клавиатуре...




------------------
Knowledge is better than ignorance!
Website: juri.foxhelp.eu
Ratings: 0 negative/0 positive


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

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

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