![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как установить курсор в TTable на определенную запись ?
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)не
техническая, а скорее политическая :)