![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как работать с составными(expression) индексами ??? [D6, dBase, FoxPro]
nikkkk © (2003-08-28 17:22:00)
Уважаемые мастера.
У меня такая вот проблема, есть в таблице FoxPro составной индекс STR(GURN,3)+DTOS(DATOTG)+STR(NOMDOK,7), как органисовать поиск записи с помощью findnierest ???
заранее спасибо!!!
Anatoly Podgoretsky (2003-08-29 13:49:00) [1]
Это везет, а так надо еще поиск ограничить должным количеством колонок, об этом в той же теме. Может у тебя и сделано это через свойства, но отсюда не видно.
nikkkk (2003-08-29 13:43:00) [2]
with Table1 doотрабатывает на ура, мгновенно.
begin
setkey;
FieldByName("gurn").AsInteger := 1;
FieldByName("datotg").AsDateTime := strtodate("05.02.99");
end;
table1.GotoNearest;
end;
!!!спасибо огромноеAnatoly Podgoretsky ©!!!
Anatoly Podgoretsky (2003-08-29 13:38:00) [3]
EditKey я вижу, а SetKey нет, так же не вижу строк с ограничением количества колонок. Эту информацию ты не привел, без нее ответа нет.
А в справке смотреть тему Searching for records based on indexed fields
nikkkk (2003-08-29 13:38:00) [4]
хотя запись с таким условием точно есть...
nikkkk (2003-08-29 13:33:00) [5]
> Anatoly Podgoretsky © (29.08.03 13:26) [23]
> nikkkk (29.08.03 13:16) [21]
> Что возвращает GotoKey, это между прочим функция, непонятно
> вообще сможет ли оно что нибудь найти.
>
> nikkkk (29.08.03 13:18) [22]
> Должен.
>
> Ты бы инсталлировал что ли справочную систему Дельфи?
gotokey при :
procedure TForm1.Button1Click(Sender: TObject);
begin
with Table1 do
begin
EditKey;
FieldByName("gurn").AsInteger := 1;
FieldByName("datotg").AsDateTime := strtodate("05.02.99");
GotoKey;
end;
end;
не возвращает вообще ничего, курсор в гриде остается на месте, и ничего не происходит, сколько не кликай.
Справочная система установлена, оттуда и взял я пример для работы сgotokey. Может все из-на того что у меня таблица FoxPro, иза представления даты и времени. и вообще, если запись не найдена, должно ли выдаваться сообщение. Индекс выглядит так(STR(GURN,3)+DTOS(DATOTG)+STR(NOMDOK,7))
Anatoly Podgoretsky (2003-08-29 13:31:00) [6]
Трудно что либо конкретно говорить, если приведена только часть кода, не самая важная при том.
Sandman25 (2003-08-29 13:28:00) [7]
nikkkk
Рекомендую сначала указывать только
FieldByName("gurn").AsInteger := 1;
а то проблема может быть связана и с представлением даты.
Anatoly Podgoretsky (2003-08-29 13:26:00) [8]
nikkkk (29.08.03 13:16) [21]
Что возвращает GotoKey, это между прочим функция, непонятно вообще сможет ли оно что нибудь найти.
nikkkk (29.08.03 13:18) [22]
Должен.
Ты бы инсталлировал что ли справочную систему Дельфи?
nikkkk (2003-08-29 13:18:00) [9]
должен ли курсор в Триде переходить на найденную запись???
nikkkk (2003-08-29 13:16:00) [10]
> Anatoly Podgoretsky © (29.08.03 13:15) [20]
> nikkkk (29.08.03 13:13) [18]
> Значит не задавать его
если не задаю, не находит вообще ничего, и курсор остается на первой записи...
как быть???
Anatoly Podgoretsky (2003-08-29 13:15:00) [11]
nikkkk (29.08.03 13:13) [18]
Значит не задавать его
Anatoly Podgoretsky (2003-08-29 13:13:00) [12]
Зачем это FieldByName("nomdok").AsInteger := null;
Integer и Variant это не совместиые типы
nikkkk (2003-08-29 13:13:00) [13]
как сделать так чтобы последнее значение :
FieldByName("nomdok").AsInteger := null;
при поиске вообще не учитывалось???
nikkkk (2003-08-29 13:11:00) [14]
пробую делать:
with Table1 do
begin
EditKey;
FieldByName("gurn").AsInteger := 1;
FieldByName("datotg").AsDateTime := strtodate("01.07.03");
FieldByName("nomdok").AsInteger := null;
GotoKey;
end;
выдает ошибку:invalid variant type conversion
???
Anatoly Podgoretsky (2003-08-29 13:00:00) [15]
Никакого
nikkkk (2003-08-29 12:54:00) [16]
> Anatoly Podgoretsky © (29.08.03 12:48) [14]
> GotoKey
и какой тип массива использовать???
Anatoly Podgoretsky (2003-08-29 12:48:00) [17]
GotoKey
nikkkk (2003-08-29 12:44:00) [18]
> Anatoly Podgoretsky © (29.08.03 12:31) [12]
> Ты определенно путаешь составные индексы с индексами по
> выражению, на это наводит STR(GURN,3)+DTOS(DATOTG)+STR(NOMDOK,7)
значит это называется индекс по выражению.Понятно.
Как же найти какую либо запись, используя индекс по выражению???
Anatoly Podgoretsky (2003-08-29 12:31:00) [19]
Ты определенно путаешь составные индексы с индексами по выражению, на это наводит STR(GURN,3)+DTOS(DATOTG)+STR(NOMDOK,7)
Anatoly Podgoretsky (2003-08-29 12:28:00) [20]
А что именно тебе нужно, но с составными никак, не поддержано в xBase