Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.06.01;
Скачать: [xml.tar.bz2];

Вниз

Как установить курсор в TTable на определенную запись ?   Найти похожие ветки 

 
Kostafey ©   (2008-05-02 17:30) [0]

Сначала вопрос казался глупым...

function Locate(...
Searches the dataset for a specified record and makes that record the current record.
Попробовал - находит-то запись он находит, а курсор не устанавливает.

FindKey или EditKey & GotoKey требуют чтобы поле было индексированным,
но в моем случае это не так.

P.S.
Использование возможностей СУБД и SQL по ряду причин
нежелательно. Требуется именно установить курсор в TTable.

Как проше всего это сделать?


 
Palladin ©   (2008-05-02 17:31) [1]

и каковы предпосылки задачи?


 
Palladin ©   (2008-05-02 17:32) [2]

а так... первое что пришло в голову, отфильтровать, поставить закладку, убрать фильтр и перейти на закладку...


 
Kostafey ©   (2008-05-02 17:37) [3]

> [1] Palladin ©   (02.05.08 17:31)
> и каковы предпосылки задачи?

Тяжело вздохнул.
Если кратко, это своего рода поддерржка проектика
старого и не моего...


> [2] Palladin ©   (02.05.08 17:32)

Про фильтры тоже думал.
Если нет решения попроще...


 
Kostafey ©   (2008-05-02 17:40) [4]

Может вообще просто в цикле по
Next все записи перебирать до дстижения
нужной и катись все!... работать-то будет...

хотя не, это уж совсем свинство ;)


 
Loginov Dmitry ©   (2008-05-02 17:46) [5]

> Попробовал - находит-то запись он находит, а курсор не устанавливает.


А что же он тогда делает?


 
oxffff ©   (2008-05-02 17:49) [6]


> Попробовал - находит-то запись он находит, а курсор не устанавливает.


А это по какому признаку установлено нахождение, но позиционирование?


 
Kostafey ©   (2008-05-02 17:50) [7]

> А что же он тогда делает?

Устанавливает курсор на первую запись в НД


 
Palladin ©   (2008-05-02 17:52) [8]

я что то не понял... справка гласит, что: Searches the dataset for a specified record and makes that record the current record.

так что кто то один из вас обманщик


 
Kostafey ©   (2008-05-02 17:52) [9]

> А это по какому признаку установлено нахождение, но позиционирование?

Locate returns true if it finds a matching record, and makes that record the current one. Otherwise Locate returns false.

Не позиционирует. Попробовал - курсор на первой записи.


 
Kostafey ©   (2008-05-02 17:53) [10]

> [8] Palladin ©   (02.05.08 17:52)

Ну откройте Delphi, не поленитесь киньте пару компонентиков
и конопку.
Не позиционирует он. Ну что принтскрины присылать?


 
oxffff ©   (2008-05-02 17:53) [11]


> Попробовал - курсор на первой записи.


А возвращает TRUE?
А что за БД?


 
Palladin ©   (2008-05-02 17:53) [12]


> Kostafey ©   (02.05.08 17:53) [10]

ща попробую...


 
oxffff ©   (2008-05-02 17:54) [13]


> Palladin ©   (02.05.08 17:53) [12]
>
> > Kostafey ©   (02.05.08 17:53) [10]
>
> ща попробую...


Да работало это.


 
Kostafey ©   (2008-05-02 17:55) [14]

> А возвращает TRUE?

Да


> А что за БД?

MS SQL Server 2000


 
oxffff ©   (2008-05-02 17:55) [15]

Приведи ключ таблицы и параметры вызова.


 
Kostafey ©   (2008-05-02 17:57) [16]

> Да работало это.

procedure TForm1.Button1Click(Sender: TObject);
begin
 Table1.Locate("ind1", "4", []);
end;
установит на 1-ю запись

ind1 - числовое поле

Table1.Locate("ind1", 4, []);
тот же эффект


 
Palladin ©   (2008-05-02 17:57) [17]

у меня все выставило...


 
Kostafey ©   (2008-05-02 18:00) [18]

> у меня все выставило...

Поле ключевое?


 
Kostafey ©   (2008-05-02 18:02) [19]

> > у меня все выставило...
>
> Поле ключевое?

В моем случае это поле не ключевое и не идентифицирующее,
хотя и используется в этих целях.


 
oxffff ©   (2008-05-02 18:03) [20]

Попробуй перед locate сделать FetchAll


 
{RASkov} ©   (2008-05-02 18:03) [21]

> [18] Kostafey ©   (02.05.08 18:00)

Методу Locate необязательны ключевые поля.... Если они есть то он их использует, если их нет, то "перебор"...


 
Kostafey ©   (2008-05-02 18:04) [22]

> [19] Kostafey ©   (02.05.08 18:02)

Убить надо этих мега-прогеров...:)

В этом-то оказыватся все и дело.
Хм. А базу править нельзя.

Можно ли сделать подобное для
не ключевого и не идентифицирующего поля?


 
Loginov Dmitry ©   (2008-05-02 18:05) [23]

Locate() возвращает True, если он нашел запись по заданному значению поля/полей. Зачем ему возвращаться на первую запись?


> Ну откройте Delphi, не поленитесь киньте пару компонентиков
> и конопку.


Всегда работало. Ни разу не бажило. Проверяй результат функции.


 
Kostafey ©   (2008-05-02 18:06) [24]

> Попробуй перед locate сделать FetchAll

Имеется в виду
Table1.FetchAll;

Не помогло.


> [21] {RASkov} ©   (02.05.08 18:03)

Оказывается обязательно...


 
Palladin ©   (2008-05-02 18:08) [25]


> Kostafey ©   (02.05.08 18:00) [18]

нет


 
Kostafey ©   (2008-05-02 18:08) [26]

> [23] Loginov Dmitry ©   (02.05.08 18:05)
> Locate() возвращает True, если он нашел запись по заданному
> значению поля/полей. Зачем ему возвращаться на первую запись?

Делаем TDBGrid. Щелкаем в ней куда-нибудь.

жмем на упомянутую в
> [16] Kostafey ©   (02.05.08 17:57)

кнопку - оказываемся на 1 записи


> Всегда работало. Ни разу не бажило. Проверяй результат функции.

true


 
Palladin ©   (2008-05-02 18:08) [27]

все прямо как в Kostafey ©   (02.05.08 17:57) [16]

давай параметры соединения


 
Kostafey ©   (2008-05-02 18:10) [28]

> [25] Palladin ©   (02.05.08 18:08)
>
> > Kostafey ©   (02.05.08 18:00) [18]
>
> нет

Гм. Как поле делаю ключевым все работает,
как ключик снимаю - перестает.


 
Kostafey ©   (2008-05-02 18:12) [29]

> [27] Palladin ©   (02.05.08 18:08)
> все прямо как в Kostafey ©   (02.05.08 17:57) [16]
>
> давай параметры соединения

Нет никаих параметров.
Просто TTable и в ней DataBaseName
установлен на один из алиасов ODBC


 
Loginov Dmitry ©   (2008-05-02 18:14) [30]

> Делаем TDBGrid. Щелкаем в ней куда-нибудь.
>
> жмем на упомянутую в
> > [16] Kostafey ©   (02.05.08 17:57)
>
> кнопку - оказываемся на 1 записи


Проблема в чем-то другом. Поле любое может быть. Проверь обработчики (AfterScroll прежде всего)


 
{RASkov} ©   (2008-05-02 18:14) [31]

> [24] Kostafey ©   (02.05.08 18:06)
> > [21] {RASkov} ©   (02.05.08 18:03)
>
> Оказывается обязательно...

Locate uses the fastest possible method to locate matching records. If the search fields in KeyFields are indexed and the index is compatible with the specified search options, Locate uses the index. Otherwise Locate creates a filter for the search.

? Я вообще-то не знаю англ, но по моему здесь говориться о том, что я сказал в [21].... только вместо "перебора" - фильтр...


 
Kostafey ©   (2008-05-02 18:19) [32]

> [30] Loginov Dmitry ©   (02.05.08 18:14)
> Проблема в чем-то другом. Поле любое может быть. Проверь
> обработчики (AfterScroll прежде всего)

Что именнно проверять?
procedure TForm1.Table1AfterScroll(DataSet: TDataSet);
begin
 ShowMessage("scrol");
end;

Да, действительно scrol возникает при Locate...


> [31] {RASkov} ©   (02.05.08 18:14)

Да, все так, но почему-то пока у меня это работает только для ключевых полей.


 
Palladin ©   (2008-05-02 18:20) [33]


> Kostafey ©   (02.05.08 18:19) [32]

нет у меня на этом поле ключа... база mdb


 
Palladin ©   (2008-05-02 18:21) [34]

Короче дружно, вместе

Нииикооолай!,Нииикооолай!...

;)


 
Kostafey ©   (2008-05-02 18:22) [35]

> [33] Palladin ©   (02.05.08 18:20)

Это становиться интересным.
Делаю mdb :)


 
Kostafey ©   (2008-05-02 18:23) [36]

> Нииикооолай!,Нииикооолай!...

Это кто, простите? :)


 
Palladin ©   (2008-05-02 18:25) [37]

это.... это sniknik... кровавый убийца, объявивший джихад TADOQuery и TADOTable...


 
oxffff ©   (2008-05-02 18:27) [38]


> Kostafey ©   (02.05.08 18:23) [36]


Это (S)-N-метил-1-фенил-пропан-2-амин, N-Метиламфетамин.
Или просто МЕТ.


 
Kostafey ©   (2008-05-02 18:32) [39]

> [37] Palladin ©   (02.05.08 18:25)
> это.... это sniknik... кровавый убийца, объявивший джихад
> TADOQuery и TADOTable...

Если он уж TADOQuery и TADOTable "не жалует",
то что он сделает со мной за TTable? :)))


> [38] oxffff ©   (02.05.08 18:27)

Я даже пока еще сегодян пива не пил а,
вы тут меня блин метил... как вы сказали?


 
Kostafey ©   (2008-05-02 18:33) [40]

> [33] Palladin ©   (02.05.08 18:20)

Ну сделал в аксесе - нифига не позиционирует
курсор. У вас точно значек ключика рядом с полем
не нарисован? :)



Страницы: 1 2 3 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.06.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.043 c
8-1180953654
Moo
2007-06-04 14:40
2008.06.01
Как программно запустить *.bat


2-1210144844
Grant
2008-05-07 11:20
2008.06.01
Runtime пакеты


2-1210664893
Сергей
2008-05-13 11:48
2008.06.01
Как сравнить две строки по маске с помощью функций Delphi?


15-1208509824
Fynjy84
2008-04-18 13:10
2008.06.01
Страницы aspx и idHttp


4-1189725560
Andrey_rus
2007-09-14 03:19
2008.06.01
Событие перехода питания на аккумулятор





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский