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

Вниз

Как узнать содержимое поля ADOTable?   Найти похожие ветки 

 
buka   (2004-07-25 11:31) [0]

Подскажите (кто знает): где или как можно прочесть содержимое поля таблицы?
Содержимое поля ADOTable легко читается в DBEdit, связанным с набором данных.
Мне нужно сравнить содержимое поля таблицы, которое как я уже сказал легко наблюдаемо в DBEdit, с частью этого содержимого, находящейся в Edit1 (собственно по этой части я и провожу поиск по таблице методом Locate).
Например, мне нужно найти "Мастера".
Я ввожу, например "Мас" и ищу методом Locate.
И никак не могу определиться с поиском СЛЕДУЩЕЙ записи, удовлетворяющей нужному условию ("Мас").
Кстати, может кто разъяснит еще на какую запись становится курсор после Locate?
Литература говорит, что на первую, но что-то совсем не похоже, т.к. он у меня становится на вполне определенную (и до этой записи и после нее существуют записи, удовлетворяющие критерию поиска. и не важно откуда считать номер записи, хот с конца, хот с начала, все равно она не первая, удовлетворяющая условиям поиска???)


 
chirchik ©   (2004-07-25 12:12) [1]

че то я вопрос не понял.
Выдергивание поля - FieldByName("") или Fields[...]

А про поиск может лучше использовать фильтрацию? или в запросе LIKE


 
sniknik ©   (2004-07-25 12:12) [2]

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

> Литература говорит, что на первую,
хелп это не определяет, первая в середине, последняя
Searches the dataset for a specified record and makes that record the current record.
находит и делает текущей, и все. никаких обещаний насчет первой.
но если у тебя так получается, и тебе важна первая, ну делай First перед этим.

для следующего поиска есть куча методов, от простого перебора самостоятельно, последовательного, до поиска по индексам (тебе не пойдет ты же индексы пожоже уже используеш ;), зря), можно еще выборка с условием и скакание по ключу в этой выборке, и сортировка по этому условию (тогда все ини будут подряд располагатся (простой Next поможет))
возми книжку прочитай, по бызам. и добрый совет ВЫКИНЬ ADOTable,   пользуйся датасетом (3 компонента к использованию конект, датасет, команд. остальное от лукавого (борманда))


 
buka   (2004-07-25 18:14) [3]

Спасибо, что откликнулись.
Но я решаю и не могу решить все ту же задачу: нашел Locate (ом) запись. Пытаюсь найти следующую, удовлетовряющую условиям поиска, заданного в Edit1. И... не могу сообразить как.
Конечно, простым перебором (Next) работает как огонь, но мне то надо что "сразу и мгновенно" прыгнул на следующую запись, удовлетворяющую услвоиям.
Фильр? "Треклятый" пишет FilterOptions not supported.
Может быть у меня версия (Delphi6) неудачная?
До этого решал задачу, как в DBGrid включить при прогоне кнопку. Не решалось, пока не сообразил, что  использую abcDBSuperNav (ABC for Delphi6), а свойства пытаюсь найти от обычного.
Решил. А вот с этой "мулякой никак не могу разобраться.
По FieldByName? знал, не знал, Бог его сейчас упомнит: что я знал, а чего не знал- перепробовал все.
При попытке загнать (увидеть) значение поля через FieldByName в Edit, тоже что-то не получалось. Я не программист, а любитель и решаю программную задачку, чтобы мне было удобнее работать с данными, которые имею на работе.
Знаний, конечно, не хватает. Вот и прошу Вас о помощи.
DataSet? Так жалко бросать и все по новой. Чего то ж я наворотил... и не так уж и плохо работает. Вот осталось решить эту задачку. И все- пока Delphi (до следующего раза, по необходимости).


 
buka   (2004-07-25 19:21) [4]

Увадаемый Sniknik и Chirchik! Благодарю за реальную помощь!
Так или сяк Вы дали хороший толчок. И ... кажется получилось!
Очевидно я от "усердия" перегрелся.
Еще раз благодарю сердечно.(остальные то сквозь зубы разговаривали, поэтому я и не понимал)


 
chirchik ©   (2004-07-25 21:48) [5]

Да не за что!
Рад, что все получилось.
Только не плохо бы было написать как получилось! :)


 
buka   (2004-07-29 23:32) [6]

Уважаемый chirchik!
Прошу прощения, что задержался с просмотром.
Вот что-то такое (кусочек кода):
procedure Tfm_main.abcPicBtn1Click(Sender: TObject);

begin
  if (Edit3.Text= "")then begin
  MessageDlg ("Не заданы условия поиска!", mtInformation,[mbOK],0);
  exit;
end;
 begin
 abcHDBGrid1.SetFocus;
 ADOTable1.Locate("Контрагент",Edit3.Text, [loCaseInsensitive, loPartialKey]);
 abcPicBtn1.Visible:= false;
 abcPicBtn3.Visible:= true;
 Edit2.Text:= ADOTable1.FieldByName ("Контрагент").AsString;
 l1:= Edit2.Text;
 end;
 end;

procedure Tfm_main.abcPicBtn3Click(Sender: TObject);
label lb1;
begin
 Edit3.ReadOnly:= true;
  with ADOTable1 do
  begin

  next;
  while FieldByName ("Контрагент").AsString <>l1
  do begin
  next;
  if EOF then abcPicBtn4.Visible:=true;
  if EOF then First;
  {if abcPicBtn4.Visible=true then MessageDlg ("Достигнут конец таблицы!Продолжить поиск дальше?",mtConfirmation, [mbYes, mbNo], 0);}    

  end;
 end;
 end;
===========
Еще неплохо было решить, следующее:
Вот эта команда: ADOTable1.Locate("Контрагент",Edit3.Text, [loCaseInsensitive, loPartialKey]);
ищет запись в поле строго так, как записано в Edit3, т.е. например, надо найти: "Алаберды". Если введешь: "Ала", то найдет, а если, например: "берд", (т.е. часть слова из середины его), то на указанную запись не выйдет.
Может подскажете на сей счет что-нибудь?
С уважением.


 
sniknik ©   (2004-07-30 09:01) [7]

пошол по самому "непрогрессивному" пути, посмотри все же по фильтру ADODataSet.FindFirst/Next/...
попутно и дополнительная задача решается, не все провайдеры правда но некоторые поддерживают операцию LIKE в фильтре FieldName LIKE "%берд%"


 
buka   (2004-07-30 10:31) [8]

спасибо! Попробую.



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

Форум: "Базы";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.028 c
3-1091192861
NEWS
2004-07-30 17:07
2004.08.22
TADOQUERY как определить ошибку.


14-1091621952
ArMellon
2004-08-04 16:19
2004.08.22
Вин ХР Интернет через общий доступ...


1-1091646763
Black-Grin
2004-08-04 23:12
2004.08.22
Combobox - редактирование


3-1091101066
Andrey
2004-07-29 15:37
2004.08.22
Создание индекса


11-1079816341
nester
2004-03-20 23:59
2004.08.22
Как в KOLRichEdit сделать кусок текста как ссылку?





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