Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


Страницы:   1 2 3 4 5

Kostafey ©   (2008-05-02 17:30:00) 

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

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

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

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

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


Anatoly Podgoretsky   (2008-05-06 23:22:00) [1]

Путь возмущений хороший, если доводить его до конца, до результата.


Kostafey   (2008-05-06 22:21:00) [2]

> Тебе бы не мешало почитать как следует задавать вопросы.

Все не доберусь до этого мануала :)


> > MsGuns ©   (03.05.08 19:48) [76]
> > ...
> > Имеется в виду Integer ? Если так, то почему Table1.Locate('ind1',
>
> >  '4', []);
>
> интересно услышать ответ на этот вопрос


Пожалуйста:
function Locate(const KeyFields: String; const KeyValues: Variant; Options: TLocateOptions): Boolean;

KeyValues: Variant; - т.е. можно подставлять любые типы,
вот я и пробовал разные. Зачем?
Метод научного тыка - тоже метод
познания, притом, возможно, не худший :)
см.
[16] Kostafey ©   (02.05.08 17:57)


ASoft   (2008-05-05 03:22:00) [3]


> Anatoly Podgoretsky ©   (04.05.08 13:37) [87]

В споре рождается истина:)

> MsGuns ©   (03.05.08 19:48) [76]
> ...
> Имеется в виду Integer ? Если так, то почему Table1.Locate('ind1',
>  '4', []);

интересно услышать ответ на этот вопрос


Anatoly Podgoretsky   (2008-05-04 23:40:00) [4]

> Kostafey  (04.05.2008 23:16:28)  [88]

Я не говорю, что ты ламер, но дисскуссию вел как ламер,
Результат может и достигнут, но какой ценой, а ведь тема могла быть закрыта где-то на 4 сообщение.
Тебе бы не мешало почитать как следует задавать вопросы.


Kostafey   (2008-05-04 23:16:00) [5]

> [87] Anatoly Podgoretsky ©   (04.05.08 13:37)

Вам виднее, я лично такой статистики не вел. :)

или... постойте, но ведь вы же так не считаете?

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


Anatoly Podgoretsky   (2008-05-04 13:37:00) [6]

> Kostafey  (04.05.2008 2:34:25)  [85]

Есть хороший признак, если ветка много, много постов, то она изначально ламерская.


Германн   (2008-05-04 02:48:00) [7]


> Kostafey ©   (04.05.08 02:34) [85]

Тогда уж "За сим". Так более соответствует  русскому языку.
Или "на сём".
:)


Kostafey   (2008-05-04 02:34:00) [8]

> [79] MsGuns ©   (03.05.08 21:38)

Гм... наверное после 5-го падения weblogic-а я
дествительно становлюсь чуток нервным :)

Но судите сами вопрос был разрешен уже на

> [58] Kostafey ©   (02.05.08 19:38)

а вот ваше замечание

> [72] MsGuns ©   (03.05.08 19:11)

касалось
> >Kostafey ©   (03.05.08 19:03) [71]
в котором говорислось на столько о технических вещах
сколько политических. :)

Вот я и подумал, что цель дальнейшего диспута -
не решение технической проблемы а что-то другое.

На сим "инциндент исперчен"? :)


sniknik   (2008-05-04 00:33:00) [9]

> "реализовано криво, описано плохо"
а тебе отвечали "реализовано отлично" (если применять к месту) и "описано хорошо" (если написанное читать, и следовать ему буквально, а не наоборот)
но ты упрямо повторяешь "страшилки" на своих исходных словах, не слушая опровержений.

> что мне требуется и не хочу коверкать свою логику в угоду разработчику.
ага. аналогия. подъезжаешь к заправке и льешь в бак солярку вместо бензина... и правильно! а нафига свою логику в угоду разработчику двигателей коверкать? вот она заправка, где заправляются, вот он бак, куда заправляют. берем и льем, по своей логике, и плевать что подъехал к заправке дизтопливом.
т.к. все заранее "доказано", последовательность расписана, думать не надо...
о метле только. ибо случай скорбный.

> Чувствуется, что разработчиков терзает неудовлетворенность
если это о переименовке ADO в dbGo то неудовлетворенность тут от мелкософта, денежная неудовлетворенность.... запатентовали они название ADO и запретили использовать (читал гдето. где не скажу. не помню).


palva   (2008-05-03 23:43:00) [10]


> "и не стоит это изучать ибо все сложно"...
> и как это тебя угораздило стать программистом с таким мировозрением?

Да разве я такое говорил? Кажется я все-таки говорил что-то в роде: "реализовано криво, описано плохо". Может быть несправедливо говорил, это возможно. Другое у меня мировоззрение. Я предпочитаю доказать теорему один раз, а потом применять ее, не вникая в подробности. Так и в программировании. Должна быть программа, которая специфицирована в документации. После этого любые рекомендации разработчиков должны идти лесом, потому что я лучше себе представляю, что мне требуется и не хочу коверкать свою логику в угоду разработчику. Если я пишу не противореча документации, то все должно работать. Я ведь и себе не позволяю писать продукт подобного качества. Всегда надо предполагать, что программу будут применять идиоты, тогда будет меньше проблем.

Здесь, конечно, больше пишу под впечатлением ветки. Сам я особых неприятностей от VCL пока не схлопотал, может быть потому, что не лезу вглубь. Правда, бесконечные переделки тоже раздражают. В книге или статье описан один компонент, а в новой версии глядь - его уже нет, его аналог по-другому называется и находится на другой вкладке. Чувствуется, что разработчиков терзает неудовлетворенность - тоже признак нехороший.


sniknik   (2008-05-03 22:31:00) [11]

> Но после прочтения ветки даже желание вникать во все это пропадает.
т.е. ктото не использует ключевых полей заменяя их самопридуманным суррогатом, игнорирует предупреждение о том что в sql серверах нет понятия о первой/последней записи/порядковом номере, и потому жизненной необходимости ключа для идентификации записи.
делает все с точностью до наоборот и огребает проблем, а ты вместо вывода "делать всетаки по рекомендациям, чтобы на теже грабли не нарваться"  делаешь вывод "и не стоит это изучать ибо все сложно"...
и как это тебя угораздило стать программистом с таким мировозрением?


palva   (2008-05-03 22:13:00) [12]


> имхо, ты понапридумывал себе страшилок на ровном месте,

Так не напридумывал же. Просто ветку немного почитал. Сам я в этом слабо разбираюсь, из VCL использую самый примитив, предпочитаю больше использовать хранимые процедуры, пока задачи такое позволяют. Но после прочтения ветки даже желание вникать во все это пропадает.


sniknik   (2008-05-03 21:44:00) [13]

> Если я написал программу, которая не противоречит хэлпу, то все должно работать.
в данном случае она противоречит.

> поскольку на одном хэлпе без советов мастеров этим инструментом пользоваться проблемно.
я пользовался изначально только им, проблем не возникало... (были только заморочки с RDS, даже книгу разобраться с ним купил, но это побочно. нигде не использовал. чисто ради интереса)
компоненты TADOTable, TADOQuery, TADOStoredProc именно там, в хелпе, были названы "переходными от BDE" и не рекомендованы к использованию в новых проектах. стойкая неприязнь к ним у меня возникла позже, когда насмотрелся на тупость разработчиков упорно использующих только их. несмотря на все рекомендации.

имхо, ты понапридумывал себе страшилок на ровном месте, теперь окружающих ими пугаешь.

> Нет, просто пытался помочь разобраться.
так вроде, УЖЕ разобрались. после чего помощь действительно излишняя.


MsGuns   (2008-05-03 21:38:00) [14]

>Kostafey ©   (03.05.08 19:57) [77]
>Практикуетесь на мне? :)

Нет, просто пытался помочь разобраться. Для чего и уточнял некоторые детали. Если это Вас раздражает, то приношу извинения и в дальнейшем в Ваши ветки не заглядываю. Ибо Вам, очевидно, нужна не помощь, а что-то иное ;)


palva   (2008-05-03 20:55:00) [15]


> Плохиш ©   (03.05.08 18:39) [70]
> После прочтения хелпа, обычно ничьей помощи уже не требуется.

Если я написал программу, которая не противоречит хэлпу, то все должно работать. Наверно, даже если я нарушил рекомендации данные в хэлпе, то тоже все должно работать, если это всего лишь рекомендации. А вот когда мастера начинают философствовать на тему, что вот этот объект использовать не надо, а в этом объекте используется другая логика, то дело плохо. Конечно, мастеров здесь можно только поблагодарить, они методом тыка и изучением исходников это все освоили и делятся своим опытом. Но когда мастера защищают свой плохо написанный и плохо документированный инструмент... Нет, по человечески их конечно можно понять. Если люди будут продолжать пользоваться этим инструментом, то и мастера будут востребованы, поскольку на одном хэлпе без советов мастеров этим инструментом пользоваться проблемно.


Kostafey   (2008-05-03 19:57:00) [16]

> [76] MsGuns ©   (03.05.08 19:48)

http://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%B7%D1%83%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0
Практикуетесь на мне? :)


MsGuns   (2008-05-03 19:48:00) [17]

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

Имеется в виду Integer ? Если так, то почему Table1.Locate('ind1', '4 ', []);


Kostafey   (2008-05-03 19:43:00) [18]

> И все три "словами".

Да ладно, а это что:

> [54] Kostafey ©   (02.05.08 19:17)
> > [52] sniknik ©   (02.05.08 19:14)
>
> гм странно и так
> if Table1.Locate('ind1', 4, []) then
> и так
> if Table1.Locate('ind1', '4', []) then
> ShowMessage('true')
> else
> ShowMessage('false');



> Что неприемлимо - разобраться КАК работает Locate в TBDEDataSet
> ?

Непремлемо переводить приложение с BDE на ADO


> О том, какой тип данных в таблице, а какой в датасете ?
> Будьте любезны, ткните носом, где именно "шла речь".

С удовольствием:

> [16] Kostafey ©   (02.05.08 17:57)
> > Да работало это.
>
> procedure TForm1.Button1Click(Sender: TObject);
> begin
> Table1.Locate('ind1', '4', []);
> end;
> установит на 1-ю запись
>
> ind1 - числовое поле


MsGuns   (2008-05-03 19:31:00) [19]

>Kostafey ©   (03.05.08 19:19) [73]
>Об этом было сказано трижды.

И все три "словами".

>Это решение в данный момент неприемлемо

Что неприемлимо - разобраться КАК работает Locate в TBDEDataSet ?

>Об этом тоже речь шла.

О том, какой тип данных в таблице, а какой в датасете ? Будьте любезны, ткните носом, где именно "шла речь".


Kostafey   (2008-05-03 19:19:00) [20]

> - во-первых, нигде из кода неясно, был ли успешен поиск
> по Locate

Об этом было сказано трижды.


> - во-вторых, метод Locate у TTable не "датасетовский", а
> "бидешный" (т.е. TBDEDataSet), а посему возможно надо искать
> причину в нем, а именно в его затруднении однозначно идентифицировать
> записи, полученные из "неродного" источника. Либо перестать
> ездить задом наперед и использовать "родные" компоненты
> для доступа к серверу.

Это решение в данный момент неприемлемо


> - в-третьих, ничего гнизвестно ни про типы полей вашего
> НД, ни про возможность наличия "пустых" (NULL) значений.
> Это немаловажный момент, т.к. хорошо известно что данные
> на сервере - одно, они же в дельфи - другое, а в интерпретации
> программиста - третье.

Об этом тоже речь шла.

Да и вообще, причина сказанного в > [71] Kostafey ©   (03.05.08 19:03)не
техническая, а скорее политическая :)


Страницы:   1 2 3 4 5

Наверх

Титульная страница Поиск, карта сайта Написать письмо