Главная страница
    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)

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


 
Palladin ©   (2008-05-02 18:36) [41]

точно, потому что он был нарисован, и я специально его снял, закрыл аццес, закрыл проект, открыл проект нажал на кнопку и треугольник в TDBGrid у меня перешел на вторую запись которую я и делал Locate...


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

Ладно. Сделаем так. Вот сырцы этого хеллоуворда :)
http://stitch.ifolder.ru/6395257

Нужно сначала добавить Exp1 в ODBC.

В чем отличие от вашей реализации?


 
Palladin ©   (2008-05-02 18:42) [43]

в том что я не пользовался ODBC )


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

> в том что я не пользовался ODBC )

А чем?


 
Palladin ©   (2008-05-02 18:47) [45]

как чем? ADO


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

> как чем? ADO

Что прям TADOTable?


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

> [46] Kostafey ©   (02.05.08 18:51)
> > как чем? ADO
>
> Что прям TADOTable?

Хе, дак с TADOTable все работает.

Нужно чтоб с TTable заработало.


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

> [47] Kostafey ©   (02.05.08 18:54)

Да еще используя OLE DB соединение.

Конечно. Легко спичками костер разжечь,
нужно трением! :)


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

Ладно, будем работать в сторону "сделать поле ключевым"


 
sniknik ©   (2008-05-02 19:05) [50]

> Ладно. Сделаем так. Вот сырцы этого хеллоуворда :)
чтото там не видно предлагавшейся проверки возврат TRUE...


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

> [50] sniknik ©   (02.05.08 19:05)
> чтото там не видно предлагавшейся проверки возврат TRUE...

А я ее (проверку) тут действительно не делал, вы правы.
Но я ее делал непосредственно в исправляемом приложении.


 
sniknik ©   (2008-05-02 19:14) [52]

ну так сдесь оно честно не находит, и оставляет курсор там где был.


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

> [50] sniknik ©   (02.05.08 19:05)

Гм. тут действительно возвращает false...


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

> [52] sniknik ©   (02.05.08 19:14)

гм странно и так
if Table1.Locate("ind1", 4, []) then
и так
if Table1.Locate("ind1", "4", []) then
 ShowMessage("true")
else
 ShowMessage("false");

возвращает false


 
sniknik ©   (2008-05-02 19:28) [55]

и правильно возвращает заметь.

без ключевого поля, dblink (или через что там работает BDE с внешними sql движками)  просто не может спозиционироваться на нужную запись, даже если ее найдет. поэтому даже не пытается...
добавь в таблицу ключевой поле (автоинкремент например) и ничего больше не меняя попробуй тот же пример... найдет. также как если поменять движок на найтивный (там где RecNo чтото значит) тоже найдет, тут уже даже без ключа. т.к. позицию может и по номеру строки установить.


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

> [54] Kostafey ©   (02.05.08 19:17)

А!!!
Врубился.

Если подключение осуществляется к Access,
то
if Table1.Locate("ind1", "4", []) then
 ShowMessage("true")
else
 ShowMessage("false");

верет false.
TForm1.Table1AfterScroll(DataSet: TDataSet);
не отработает на Table1.Locate

если впереди добавить Table1.FetchAll;
будет работать. Правда из НД
исчезают все записи идущие ниде найденной.

Далее, подключаемся к MS SQL Server 2000.
на вопрос
if Table1.Locate("ind1", "4", []) then
 ShowMessage("true")
else
 ShowMessage("false");

отвечает true,
но курсоп на найденную запись не позиционирует.
Запись Table1.FetchAll; ничего не меняет.

вот.


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

> Далее, подключаемся к MS SQL Server 2000.

Забыл сказать TForm1.Table1AfterScroll(DataSet: TDataSet);
в этом случае сработает Table1.Locate
установив в 1-ю запись.


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

> [55] sniknik ©   (02.05.08 19:28)

Спасибо за глубокие разъяснения.

Благодарю всех участвоавших в обсуждении.

Пожалуй, вопрос закрыт.


 
sniknik ©   (2008-05-02 19:42) [59]

> Забыл сказать TForm1.Table1AfterScroll(DataSet: TDataSet);
> в этом случае сработает Table1.Locate
> установив в 1-ю запись.
опять пробуешь у себя в проекте... в примере, смена движка на MSSQL-ый ничего в поведении не меняет.
как стояло к примеру на 3-й записи, так и остается. на 1-ю не перескакивает. и true не возвращает.


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

> опять пробуешь у себя в проекте... в примере, смена движка
> на MSSQL-ый ничего в поведении не меняет.
> как стояло к примеру на 3-й записи, так и остается. на 1-
> ю не перескакивает. и true не возвращает.

Не-а, не в проекте. Тут же в "хеллоуворде".
При смене СУБД НА SQL Server (подключение аналогично через ODBC)
поведение Table1.Locate действительно меняется:

1 Отрабатывает TForm1.Table1AfterScroll(DataSet: TDataSet);
2 Курсор устанавливается с 1-ю запись.
3 Table1.Locate("ind1", "4", []) возвращает true


 
Anatoly Podgoretsky ©   (2008-05-02 22:01) [61]


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

Тебе лучше не знать.


 
Германн ©   (2008-05-03 01:06) [62]


> Kostafey ©   (02.05.08 18:32) [39]
>
> > [37] Palladin ©   (02.05.08 18:25)
> > это.... это sniknik... кровавый убийца, объявивший джихад
> > TADOQuery и TADOTable...
>
> Если он уж TADOQuery и TADOTable "не жалует",
> то что он сделает со мной за TTable? :)))
>

Да ничего он особого не сделает за TTable. TTable в отличие от TADOQuery и TADOTable вполне нормальный компонент. Родной для BDE. А вот два других вышеназванных - это "ублюдки" (bastards) на родном языке их авторов.


 
Kostafey ©   (2008-05-03 01:35) [63]

> [62] Германн ©   (03.05.08 01:06)

Пасибо, познавательно.
Но вот интересно это логические выводы их собственно
опыта или просто религиозный джихад? :)

Да, ну всетретил я пару глюков в TADOQuery,
было дело, заменил TADODstaSet - все пошло...


 
Германн ©   (2008-05-03 01:48) [64]


> Kostafey ©   (03.05.08 01:35) [63]
>
> > [62] Германн ©   (03.05.08 01:06)
>
> Пасибо, познавательно.
> Но вот интересно это логические выводы их собственно
> опыта или просто религиозный джихад? :)

Это логические выводы. Причём в основном не мои. И в основном это выводы Николая и других знатоков работы с базами. (Ну и я когда мне понадобилось поработать с ADO тоже кой-чего лично понял). Дело не столько в глюках, сколько в возможности их наличия. Ведь TADOQuery и TADOTable были разработаны для идиотов. Вся необходимая (и естественная для ADO функциональность) реализована в TADODstaSet и в "урезанном" его варианте TADOCommand. А TADOQuery и TADOTable, насколько я понял, были разработаны для того, чтобы перевод уже имеющейся программы с BDE на ADO можно было бы выполнить простой заменой компонент TTable и TQuery соответственно на TADOTable и TADOQuery и ни о чём более не думать. Поэтому в них много лишнего, "не родного".


 
sniknik ©   (2008-05-03 02:39) [65]

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

а лишнего там практически ничего нет, урезано только, в TADOQuery есть минимальная вставка (SQL, ExecSql) и даже с ними, такой мелочью, путаница (в основном начинающим) и поначалу глюки в реализации были (исправили после).

кстати упоминавшиеся уже dblinks (вернее sql links. посмотрел) примерно та же самая попытка притянуть (за уши ;)) "не родную" логику только уже с "другой стороны". хотя тут, имхо, у них лучше получилось, если не пользоваться TTable при работе с "линками" то практически все нормально. то, основанием чего стала данная ветка редкость, и при правильной структуре базы даже и не возникло бы.


 
Германн ©   (2008-05-03 03:08) [66]


> sniknik ©   (03.05.08 02:39) [65]
>
> > Поэтому в них много лишнего, "не родного".
>

Хм. В следущий раз в ответе ограничусь в определениях.


 
palva ©   (2008-05-03 08:57) [67]

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

Я ветку пробежал бегло, почти не понимая. И сложилось впечатление какой-то черной магии. Можно, конечно, разобраться во всем этом самому, почитать исходники, погонять примеры. И любители подобных занятий, конечно найдутся. Существуют же люди, изучающие, теорию шахматных дебютов или кубик Рубика. Но у меня даже желания разобраться во всем этом не возникло. Освоил я несколько тропинок через этот лес и хватит с меня. А если возникнет нужда с этих тропинок сойти, то я уж лучше перейду на АДО НЕТ. Сдается мне, это попроще будет. А для меня, как для математика к тому же и приятнее, работать на логичной и прозрачной системе.


 
sniknik ©   (2008-05-03 11:30) [68]

> Мне вот что странно. Почему VCL позиционируется как логичная и удобная система?
потому, что она такая и есть, логичная и удобная, если делать все по правилам/хелпу. а если нет... машина вон тоже крайне неудобное средство передвижения если ездить на задней скорости и только по встречной полосе.

> то я уж лучше перейду на АДО НЕТ. Сдается мне, это попроще будет.
не работал пока, но уверен там тоже есть свои нюансы... и если с их помощью попробовать работать также как с BDE, с каким нибудь парадоксом... проблем не оберешься.

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

и кстати вспомнил про АДО НЕТ, был тут вопрос про его функции (функции в запросе) которые работают в нем и не работают в простом ADO. и что это значит? -> попытка универсализировать сам sql в net и не зависеть от sql-я движка... не видиш сдесь проблем? например в падении производительности. или в том что затруднится использование возможностей именно самого движка программистом, в изучении (и путанице между ними) двух моделей, прослойки (net) и движка базы (если конечно хочеш пользоваться полными возможностями).


 
MsGuns ©   (2008-05-03 18:20) [69]

>Германн ©   (03.05.08 01:48) [64]
>Вся необходимая (и естественная для ADO функциональность) реализована в TADODstaSet и в "урезанном" его варианте TADOCommand

Во-первых, не вся. В частности, есть еще TADOConnection, у которого достаточно общирная собственная функциональность.

Во вторых, TADOCommand вовсе не "урезанный", и совсем не "вариант" TADODataSet. Это просто другой класс. Хотя во многих случаях может использоваться вместо TADODataSet, как, впрочем, и наоборот.


 
Плохиш ©   (2008-05-03 18:39) [70]


> palva ©   (03.05.08 08:57) [67]
> Мне вот что странно. Почему VCL позиционируется как логичная
> и удобная система? Почему постоянно советуют - читайте хэлп
> - и в то же время для того, чтобы воспользоваться компонентом,
>  описанным в документации, требуется помощь и доброжелательное
> расположение духа какого-то Николая или какого-то Александра?

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


 
Kostafey ©   (2008-05-03 19:03) [71]

> [70] Плохиш ©   (03.05.08 18:39)

palva ©   (03.05.08 08:57) [67]

Вот что господа, не согласен я с вами.
Обратите внимание на начало ветки - фактически цитирование
хелпа.

Есть еще "пара" моментов которые я объяснить не смогу,
ибо от предыдущих объяснений уже устал.


 
MsGuns ©   (2008-05-03 19:11) [72]

>Kostafey ©   (03.05.08 19:03) [71]

Вам уже было выше указано, что

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


 
Kostafey ©   (2008-05-03 19:19) [73]

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

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


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

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


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

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

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


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

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

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

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

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

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

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


 
Kostafey ©   (2008-05-03 19:43) [75]

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

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

> [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:48) [76]

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

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


 
Kostafey ©   (2008-05-03 19:57) [77]

> [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
Практикуетесь на мне? :)


 
palva ©   (2008-05-03 20:55) [78]


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

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


 
MsGuns ©   (2008-05-03 21:38) [79]

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

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


 
sniknik ©   (2008-05-03 21:44) [80]

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

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

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

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


 
palva ©   (2008-05-03 22:13) [81]


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

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


 
sniknik ©   (2008-05-03 22:31) [82]

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


 
palva ©   (2008-05-03 23:43) [83]


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

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

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


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

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

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

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


 
Kostafey ©   (2008-05-04 02:34) [85]

> [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]
в котором говорислось на столько о технических вещах
сколько политических. :)

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

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


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


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

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


 
Anatoly Podgoretsky ©   (2008-05-04 13:37) [87]

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

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


 
Kostafey ©   (2008-05-04 23:16) [88]

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

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

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

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


 
Anatoly Podgoretsky ©   (2008-05-04 23:40) [89]

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

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


 
ASoft   (2008-05-05 03:22) [90]


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

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

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

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


 
Kostafey ©   (2008-05-06 22:21) [91]

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

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


> > 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)


 
Anatoly Podgoretsky ©   (2008-05-06 23:22) [92]

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



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

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

Наверх





Память: 0.73 MB
Время: 0.067 c
2-1208877972
Андрей
2008-04-22 19:26
2008.06.01
Как вывести данные из нескольких таблиц в DBGrid?


2-1210147682
webpauk
2008-05-07 12:08
2008.06.01
Преобразование типов


15-1208798690
NaRuTo
2008-04-21 21:24
2008.06.01
Delphi VS C++


15-1208527940
@!!ex
2008-04-18 18:12
2008.06.01
Глушитель для пневмы - это законно?


2-1210517763
ALoG
2008-05-11 18:56
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский