Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.038 c
1-1091623736
П7
2004-08-04 16:48
2004.08.22
Как заставить приложение читать себя как обычный файл?


1-1091891903
Maxim
2004-08-07 19:18
2004.08.22
GetDir


1-1091910730
NeVIP.
2004-08-08 00:32
2004.08.22
Номер элемента множества


1-1092028242
Shadow[AN]
2004-08-09 09:10
2004.08.22
Динамическое создание компонентов


1-1092066260
new developer
2004-08-09 19:44
2004.08.22
Кодировка в Memo





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский