Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.22;
Скачать: CL | DM;

Вниз

TClientDataSet.Locate ничего не находит   Найти похожие ветки 

 
Manfred   (2004-07-28 12:57) [0]

Извините за дурацкий вопрос,может кто-нибудь знает об особенностях работы метода Locate у  ClientDataSet
У AdoDataSet следущий код

self.ClientDataSet1.Locate("TypeOfAirPlan",self.edit1.Text,[])

работал,у ClientDataSet не желает :((


 
Sandman25 ©   (2004-07-28 12:59) [1]

Locate у ClientDataSet работает.


 
Reindeer Moss Eater ©   (2004-07-28 12:59) [2]

У AdoDataSet следущий код

self.ClientDataSet1.Locate("TypeOfAirPlan",self.edit1.Text,[])

работал,у ClientDataSet не желает :((


В адо наборе данных была запись для такого поиска, а в ClientDataSet1 её нету


 
Manfred   (2004-07-28 13:03) [3]

Сейчас AdoDataSet на сервере ClientDataSet на клинте к нему подвязан грид в котором все отображается.Locate возвращает false


 
Manfred   (2004-07-28 13:05) [4]

Почему она отображается если ее нет?


 
Nikolay M. ©   (2004-07-28 13:19) [5]

Чему равно

> self.edit1.Text

?


 
Reindeer Moss Eater ©   (2004-07-28 13:19) [6]

Locate никак не связан с отображением.

Я иду в толпе и ищу тебя.
Не нахожу.
Но всех остальных я вижу, хотя и не ищу и они не удовлетворяют условию поиска


 
Manfred   (2004-07-28 13:24) [7]

>Чему равно
> self.edit1.Text

Для теста беру  значение поля TypeOfAirPlan из грида методом Crl+C Ctr+V
то есть то которое там должно быть

Конечно не связан,но удовлетворяющие условию отображаются там,значит они есть в искомом датасете


 
Соловьев ©   (2004-07-28 13:27) [8]


> Для теста беру  значение поля TypeOfAirPlan из грида
> методом Crl+C Ctr+V

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


 
Manfred   (2004-07-28 13:28) [9]

Проверяю так:

if  not self.ClientDataSet1.Locate("TypeOfAirPlan",self.edit1.Text,[]) then
  self.ClientDataSet1.first;


 
Reindeer Moss Eater ©   (2004-07-28 13:29) [10]

Конечно не связан,но удовлетворяющие условию отображаются там,значит они есть в искомом датасете

Это они твоему зрению удовлетворяют, а не условию поиска.


 
Manfred   (2004-07-28 13:30) [11]

>Это они твоему зрению удовлетворяют, а не условию поиска.
А почему работает если все локально и AdiDataSet?


 
Reindeer Moss Eater ©   (2004-07-28 13:31) [12]

Потому что набор данных другой


 
Reindeer Moss Eater ©   (2004-07-28 13:32) [13]

И в нем есть запись удовлетворяющая условию поиска


 
Соловьев ©   (2004-07-28 13:33) [14]


> if  not
> self.ClientDataSet1.Locate("TypeOfAirPlan",self.edit1.T
>ext,[]) then
>   self.ClientDataSet1.first;

что такое self? MDI приложение? Может ты не на тот грид смотришь? попробуй месагу выдавать


 
Manfred   (2004-07-28 13:38) [15]

self по привычке чтобы дельфя имена подсвечивала и не писать их целиком а выбрать из подсвеченного списка.
Приложение MDI но я сделал простенький пример,таже база только клинт одна формочка на ней грид,сокетконектион,датасорс и клиентДатаСет.
Если хотитее могу скинуть на мыло сервак клиента и базу


 
Reindeer Moss Eater ©   (2004-07-28 13:40) [16]

Нафик нам твой клиент и твоя база.
Если и так ясно в чем причина.


 
Manfred   (2004-07-28 13:41) [17]

В чем? Мне ни фига не ясно


 
Reindeer Moss Eater ©   (2004-07-28 13:42) [18]

А ты ветку перечитай, и станет ясно.


 
Vlad ©   (2004-07-28 13:55) [19]


> Manfred   (28.07.04 13:41) [17]
> В чем? Мне ни фига не ясно

Ясно, что ты в параметр подставляешь значение, которого нет в НД.
Почему его нет ? Тебе виднее. Регистр не тот или буквы кое-где вместо русских латинские попадаются, или вобще символы какие-то левые в строке итд. Попробуй использовать регистронезависимый поиск, или поиск по части строки


 
Sandman25 ©   (2004-07-28 14:04) [20]

или наконец выведи
ShowMessage(Self.Edit1.Text)


 
Manfred   (2004-07-28 14:09) [21]

Выводит то что ввели


 
Vlad ©   (2004-07-28 14:11) [22]


> Manfred   (28.07.04 14:09) [21]
> Выводит то что ввели

Значит то что ввели нету в НД


 
Vlad ©   (2004-07-28 14:18) [23]


> Manfred   (28.07.04 14:09) [21]

Еслих хочешь убедиться, сделай проще.
Возьми значения того поля, которое ты думаешь соответствует вводимому в Edit, запомни в какой нибудь переменной, скажем так:
S:=CDS.FieldByName("MyField").AsString
Затем запусти цикл по всем символам этой переменной, и выведи на экран последовательно код каждого символа.
То же самое проделай, для значения, вводимого в Edit.
Посмотри разницу.


 
MORA   (2004-07-28 14:25) [24]


> self по привычке чтобы дельфя имена подсвечивала и не писать
> их целиком а выбрать из подсвеченного списка

а контрол-пробел уже отменили?


 
MORA   (2004-07-28 14:28) [25]


> Vlad ©   (28.07.04 14:18) [23]


не, тут по-моему трабл в другом.
а ну-ка кидай на мыло пока обед у меня - посмотрим...


 
Manfred   (2004-07-28 14:29) [26]

To MORA  Биг спасибо не знал


 
Manfred   (2004-07-28 14:33) [27]

Вот такой вот кусочек лобового кода подтверждает что данные в датасете есть:
 self.ClientDataSet1.First  ;
 while not self.ClientDataSet1.Eof do begin
   if self.ClientDataSet1.fieldbyname("TypeOfAirPlan").  
      value=Self.Edit1.Text then exit;
   self.ClientDataSet1.next;
 end;
Находит


 
MORA   (2004-07-28 14:37) [28]


> To MORA  Биг спасибо не знал

а еще есть такие штуки, как автозавершение классов (ctrl+shift+c) - типа вводишь property MyProperty: Boolean; ctrl+shift+c - а он тебе read и write сам сделал.
или Ctrl+J, ctrl+shift+вверх/вниз, Alt+влево/вправо (если пользоваться ctrl+MouseClick)


 
Manfred   (2004-07-28 14:40) [29]

>а еще есть такие штуки, как автозавершение классов >(ctrl+shift+c) - типа вводишь property MyProperty: Boolean; >ctrl+shift+c - а он тебе read и write сам сделал.
>или Ctrl+J, ctrl+shift+вверх/вниз, Alt+влево/вправо (если >пользоваться ctrl+MouseClick)

Очень полезные вещи,экономят время


 
sniknik ©   (2004-07-28 15:20) [30]

> Вот такой вот кусочек лобового кода подтверждает что данные в датасете есть: ...

а вот такой?

 self.ClientDataSet1.Open;
 self.ClientDataSet1.Last;
 self.ClientDataSet1.First;
 if self.ClientDataSet1.Locate("TypeOfAirPlan",self.edit1.Text,[]) then exit;


(просто проверить)


 
Manfred   (2004-07-28 15:33) [31]

Позиционируется на 1


 
MU ©   (2004-07-28 15:51) [32]

поле ТypeOfAirPlan какого типа?


 
Manfred   (2004-07-28 15:56) [33]

Текстовыый не нулл обязательный не ключевой индексированный без возможности повторения.



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

Текущий архив: 2004.08.22;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.064 c
3-1090826570
Valeri
2004-07-26 11:22
2004.08.22
ADOQuery


3-1091029450
MORA
2004-07-28 19:44
2004.08.22
временная таблица?


3-1091274506
Wolfram
2004-07-31 15:48
2004.08.22
Вопрос про ORDER BY


14-1091345889
Protoss
2004-08-01 11:38
2004.08.22
Просто интересно


8-1086552818
xman
2004-06-07 00:13
2004.08.22
CANVAS