Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ADOQuery->Edit(); очищает все записи ???

16K
17 марта 2007 года
desivers
28 / / 15.03.2007
ADOQuery->Edit(); очищает все записи кроме счетчика, как мне изменить в записи только одно поле, а не записывать все куда то а потом вставлять и только ради одного изменения.
263
18 марта 2007 года
koltaviy
816 / / 16.12.2004
Вот это тебя не спасет??!
 
Код:
..
ADOQuery1->Edit();
ADOQuery1->FieldByName("FieldName")->Value = "MyValue";
ADOQuery1->Post();
..

ADOQuery1->Edit() лишь сообшает источнику данных, что он будет изменен(запрашивает разрешение на изменение)!!
А вообще, если уже взялся за Query, тогда используй SQL запросы, либо переходи на Table, если СИКВЭЛ не знаешь и он тебе не нужен!!:D
16K
18 марта 2007 года
desivers
28 / / 15.03.2007
я ошибся этот код и код koltaviy создает новую запись там все поля пустые кроме введенного, а именяемая запись остается неизменной.
263
18 марта 2007 года
koltaviy
816 / / 16.12.2004
Блин, ты чо оглох?
Вот этот код:
 
Код:
ADOQuery1->Edit();

Не создает никаких записей.
Чтобы добавить запись используются методы:
 
Код:
ADOQuery1->Insert();

или
 
Код:
ADOQuery1->Append();

Кидай кусок своего кода!!
16K
18 марта 2007 года
desivers
28 / / 15.03.2007
может он и не создает го последовательность кода

ADOQueryPrimaryPath->DataSet->Edit();
ADOQueryPrimaryPath->Value = Edit1->Text;
ADOQueryPrimaryPath->DataSet->Post();

создает запись и в поле Path текст Edit

проверил раз 10, даже проект другой создал тоже самое
309
18 марта 2007 года
el scorpio
1.1K / / 19.09.2006
"ADOQueryPrimaryPath->DataSet" - это бред.
TADOQuery уже является потомком TDataSet, посему реализует все методы чтения, изменения и навигации по набору данных.
А свойства DataSet не имеет :(
9.5K
18 марта 2007 года
Borgir
97 / / 20.12.2006
Цитата: desivers
может он и не создает го последовательность кода

ADOQueryPrimaryPath->DataSet->Edit();
ADOQueryPrimaryPath->Value = Edit1->Text;
ADOQueryPrimaryPath->DataSet->Post();

создает запись и в поле Path текст Edit

проверил раз 10, даже проект другой создал тоже самое



Это вообще что? Впервые вижу такое :)
пиши примерно так:

 
Код:
ADOQueryPrimaryPath->Edit();
ADOQueryPrimaryPath->FieldByName("aaaa")->AsString = Edit1->Text;
ADOQueryPrimaryPath->Post();

"aaaa" - название того поля, значение которого ты хочешь поменять
263
18 марта 2007 года
koltaviy
816 / / 16.12.2004
Вот это мне особенно понравилось:D:
Цитата: desivers

..
ADOQueryPrimaryPath->Value = Edit1->Text;
..

294
18 марта 2007 года
Plisteron
982 / / 29.08.2003
Цитата: koltaviy
Вот это мне особенно понравилось:D:
[QUOTE=desivers]
..
ADOQueryPrimaryPath->Value = Edit1->Text;
..

[/QUOTE]
Чем?
[QUOTE=desivers]ADOQuery->Edit(); очищает все записи кроме счетчика, как мне изменить в записи только одно поле, а не записывать все куда то а потом вставлять и только ради одного изменения.[/QUOTE]
Текст запроса в студию! Может быть, у тебя не Updatable Query.
Ещё, чисто ради интереса: какая СУБД? Для многих есть компоненты прямого доступа, заточенные специально под конкретную СУБД. В большинстве случаев такие компоненты использовать предпочтительнее, нежели "всеядную" ADO.
Мдя... Насколько с Oracle всё проще...

263
18 марта 2007 года
koltaviy
816 / / 16.12.2004
Цитата: Plisteron

Чем?


Глубоким смыслом..

Цитата: Plisteron

..
Может быть, у тебя не Updatable Query.
..


Если бы было так, то на строке:

 
Код:
ADOQueryPrimaryPath->Edit();

У него бы вылетал Exception, вроде 'Can't edit non-updatable dataset'(точно не помню).
Цитата: Plisteron

..
В большинстве случаев такие компоненты использовать предпочтительнее, нежели "всеядную" ADO.
..


Возможно, конечно и так - спорить не буду, т.к. сам всегда использую ADO, но у всех же нормально работает, а у него нет - чудеса!!:D

294
18 марта 2007 года
Plisteron
982 / / 29.08.2003
Цитата: koltaviy
Если бы было так, то на строке:
 
Код:
ADOQueryPrimaryPath->Edit();

У него бы вылетал Exception, вроде 'Can't edit non-updatable dataset'(точно не помню).

Возможно, конечно и так - спорить не буду, т.к. сам всегда использую ADO, но у всех же нормально работает, а у него нет - чудеса!!:D



Вообще-то да, но ведь разные случаи бывают. Может, у человека где-нибудь написано что-то вроде

 
Код:
try
{
    ADOQueryPrimaryPath->Edit();
// ...
}
catch(...)
{
; // do nothing
}

В Oracle PL/SQL начинающие программеры такие ляпы иногда допускают.
16K
18 марта 2007 года
desivers
28 / / 15.03.2007
все спасибо навели на мысль уже решил, просто в паралельном потоке не синхронизилоровались данные и из за этого косяк.

Кстати ADOQueryPrimaryPath это обьект на поле Path в ADOQueryPrimary тоесть эти два кода одинаковы только первый работает на 10мл сек быстрее

ADOQueryPrimaryPath->DataSet->Edit();
ADOQueryPrimaryPath->Value = Edit1->Text;
ADOQueryPrimaryPath->DataSet->Post();

ADOQueryPrimary->Edit();
ADOQueryPrimary->FieldByName("Path")->AsString = Edit1->Text;
ADOQueryPrimary->Post();
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог