Форум: "Начинающим";
Текущий архив: 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