Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > DBGrig фокус на добавленую запись


Автор: osmus 20.2.2009, 19:54
Здравствуйте!

Такой вопрос: я делаю INSERT в таблицу и мне нужно, что бы после успешного ввода,  DBGrig выделил введенную запись

Автор: Anikmar 20.2.2009, 21:46
После Insert запомнить ключик добавленной записи и в DBGrid перейти на него.
Вы какой тип ключика используете?

Автор: osmus 20.2.2009, 22:50
Это понятно... Но не понятно как перейти(фокус) на строку.

Вы какой тип ключика используете?
В MySQL: id - primary and unique

DBGrid  у меня отображает данные запроса, в который входит таблица добавленной записи.

Что мне нужно делать в билдере чтобы сфокусировать строку я не знаю :(

Автор: Anikmar 20.2.2009, 23:07
Цитата(osmus @  20.2.2009,  22:50 Найти цитируемый пост)
DBGrid  у меня отображает данные запроса, в который входит таблица добавленной записи.

После сохранения записи надо ее запомнить (запомнить ее ключ). К сожалению с мускулом не работал, поэтому навскидку не могу сказать точнее.

Запрос перевывести.

А дальше использовать метод Locate и перейти на вновь созданую запись.



Автор: osmus 20.2.2009, 23:45
Все понятно, но чето не получается:

http://ipicture.ru/
Это получилось при наведении на locate...
 

Автор: Alca 20.2.2009, 23:48
http://www.codenet.ru/progr/bcb/ado/

Добавлено @ 23:49
Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 ADOTable1->Locate(ComboBox1->Text,Edit1->Text,[loCaseInsensitive]);
//здесь по указанному в Combo полю ищем значении из Edit. Все просто
//loCaseInsensitive - это поиск без ориентации на строчные и прописные буквы
}


Цитата

Это получилось при наведении на locate... 

Код

TLocateOptions loOpts    = TLocateOptions() << loPartialKey << loCaseInsensitive;

Автор: osmus 21.2.2009, 00:54
Не че не могу понять smile 
По одному столбцу работает, а по другому не хочет.
К примеру по id не хочет, а по number работает .....
В проге разиницы в этих полях нет....
А вот в MySQL   есть  id - intger, а number - char(4).....

Автор: Alca 21.2.2009, 00:58
код покаж, телепатов нет  smile 

Автор: Anikmar 21.2.2009, 00:59
Locate по первичному ключу работает.
Наврал.
По текущему установленному.

Автор: osmus 21.2.2009, 02:09
Цитата(Anikmar @ 21.2.2009,  00:59)
Locate по первичному ключу работает.
Наврал.
По текущему установленному.

попутный вопрос:как установить в ADOQuery ключ?

Добавлено @ 02:12
Цитата(Alca @ 21.2.2009,  00:58)
код покаж, телепатов нет  smile

Уже показывал
Код

TLocateOptions SOpt;
SOpt.Clear();
SOpt <<loCaseInsensitive;
MDIISTOK->Query->Locate("id", 89, SOpt);

не работает
Код

TLocateOptions SOpt;
SOpt.Clear();
SOpt <<loCaseInsensitive;
MDIISTOK->Query->Locate("number", 45, SOpt);

работает

и то что выше:
К примеру по id не хочет, а по number работает .....
В проге разиницы в этих полях нет....[/B]
А вот в MySQL   есть  id - intger, а number - char(4).....

Автор: Anikmar 21.2.2009, 03:04
Когда-то давно, в эпоху BDE...
Нашел свою старую функцию, которая вроде как ищет запись по любому полю. Выглядела она так:
Код

bool FindForField(TTable *Table, char *Field, Variant Val)
{
    bool Ret;
    char Field1[100];
    sprintf(Field1,"%s;%s",Field,Field);
    TLocateOptions Opts;
    Variant locvalues[2];
    Opts.Clear();
    locvalues[0] = Val;
    locvalues[1] = Val;
    Ret =  Table -> Locate(Field1,VarArrayOf(locvalues,1), Opts);
    return Ret;
}


Правда датирована примерно 2002 годом, но может чем поможет?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)