Главная страница
    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.042 c
15-1208512350
Чёрный
2008-04-18 13:52
2008.06.01
В какой области программирования больше платят денег?


2-1210155494
Первокласник Вася
2008-05-07 14:18
2008.06.01
таймер


2-1210058467
Kolan
2008-05-06 11:21
2008.06.01
Сортировка приводит к изменению количества записей, почему?


4-1190040221
Nikfel
2007-09-17 18:43
2008.06.01
Как вывести окно открыть с помощью.


15-1208483714
Slider007
2008-04-18 05:55
2008.06.01
С днем рождения ! 18 апреля 2008 пятница





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский