powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа с ADODataSet в C++Builder
25 сообщений из 31, страница 1 из 2
Работа с ADODataSet в C++Builder
    #32678847
Philin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите, пожалуйста, решить слежующую проблему:
пишу запрос к SQLServer'у, например "SELECT id_, rtrim(FullTitle) FullTitle FROM MyTable", затем пытаюсь в билдере изменить поле FullTitle - и ничего не получается...
пытался сделать ADODataSet1->FieldByName("FullTitle")->ReadOnly = false; - не получилось...
Как изменить это поле?
...
Рейтинг: 0 / 0
Работа с ADODataSet в C++Builder
    #32679051
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код покажи , как делаешь.


 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
Работа с ADODataSet в C++Builder
    #32680232
Philin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь, за дубляж...
Вот код, может быть он поможет:
TADODataSet* data = new TADODataSet(NULL);
data->LockType = ltBatchOptimistic;
data->Connection = ADOConnection1;
data->CommandText = "SELECT id_, rtrim(FullTitle) FullTitle FROM ListRoads";
data->Open();
data->Edit();
data->FieldByName("FullTitle")->ReadOnly = false;
data->FieldByName("FullTitle")->AsString = "123";
data->Post();
ShowMessage(data->FieldByName("FullTitle")->AsString);
...
Рейтинг: 0 / 0
Работа с ADODataSet в C++Builder
    #32680350
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если попробовать просто , без rtrim ?
Код: plaintext
1.
2.
 
  select id_, FullTitle FROM ListRoads

так прокатит ?


 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
Работа с ADODataSet в C++Builder
    #32680863
Philin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, мне лишние пробелы не нужны...
К тому же билдер почему-то не хочет работать с полями, полученными формулой в запросе.
Например, мне иногда нужно делать так:
SELECT id_, FullTitle, 0 as vkl FROM MyTable
и менять потом поле vkl
Вот я и српшиваю, как такие поля менять?
...
Рейтинг: 0 / 0
Работа с ADODataSet в C++Builder
    #32680986
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Работа с ADODataSet в C++Builder
    #32682330
Philin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блин...
я не могу присвоить свойство adFldUpdatable для
data->Recordset->Fields->Item[1]->Attributes
Билдер просто не может найти какой-то библиотечки похоже...
или я что-то не то делаю?
помогите, пожалуйста, уже второй день бьюсь...
...
Рейтинг: 0 / 0
Работа с ADODataSet в C++Builder
    #32682529
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
во-первых, прведите полный текст ошибки
во-вторых, это свойство можно менять и в design-time в редакторе свойст
...
Рейтинг: 0 / 0
Работа с ADODataSet в C++Builder
    #32684368
Philin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В дезайн тайме мне нельзя работать, запрос формируется автоматически...
Вот код:
TADODataSet* data = new TADODataSet(NULL);
data->LockType = ltBatchOptimistic;
data->Connection = ADOConnection1;
data->CommandText = "SELECT id_, rtrim(FullTitle) FullTitle FROM ListRoads";
data->Open();
data->Edit();
data->Recordset->Fields->Item[1]->Attributes = 0x4;
data->FieldByName("FullTitle")->AsString = "123";
data->Post();
ShowMessage(data->FieldByName("FullTitle")->AsString);

а вот ошибка:
[Linker Error] Unresolved external 'System::__linkproc__ __fastcall CheckAutoResult()' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\RELEASE\VCLE.LIB|syssupp
...
Рейтинг: 0 / 0
Работа с ADODataSet в C++Builder
    #32684998
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__linkproc__ __fastcall CheckAutoResult()


а это что за функция ваша или как ?


 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
Работа с ADODataSet в C++Builder
    #32685272
Philin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нет, функция не моя,
иначе было бы все слишком просто :)
...
Рейтинг: 0 / 0
Работа с ADODataSet в C++Builder
    #32685333
black zorro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня смутное ощущение что в соседнем топике пробегал сходный вопрос, и там товарищ хвастался что поиском по форуму нашел решение.
а вообще у меня еще одно смутное ощущение что у вас BCB6 и у меня похожая была ерунда давно, правда, да и не нравится мне шестерка, короче, поиском его, поиском.
...
Рейтинг: 0 / 0
Работа с ADODataSet в C++Builder
    #32685362
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если обмануть , сделать типа

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
namespace System
{ 
   void __fastcall CheckSafecallResult(HRESULT hr) 
     { 
         return; 
     } 
}

попробуй вдруг прокатит


 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
Работа с ADODataSet в C++Builder
    #32685393
Philin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Действительно - BCB6,
Действительно код
namespace System
{
void __fastcall CheckSafecallResult(HRESULT hr)
{
return;
}
}
находится поиском в форуме... и помогает избежать ошибки линкера,
только мне все эти ухищрения изменить поле, не помогают ((
...
Рейтинг: 0 / 0
Работа с ADODataSet в C++Builder
    #32685405
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну а СУБД какая ?


 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
Работа с ADODataSet в C++Builder
    #32685418
black zorro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати а у вас в таблице поле имет тип char (XXX) а не varchar(XXX) потому и пробелы лишние лезут
вообще зря вы затеяли это все, не верится мне что сможете изменить
поле которое является вычисляемым сделайте лучше отдельный запрос или sp на модификацию.
...
Рейтинг: 0 / 0
Работа с ADODataSet в C++Builder
    #32685436
Philin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
База данных под MS SQL 2000
Действительно, я читал, что если поставить в таблице тип varchar и NOT NULL,
то вроде пробелы убираются...
НО
1) стараюсь избежать изменения структуры БД
2) мне по прежнему очень нужно производить какие-то операции над полями в запросе, а затем изменять полученный результат
...
Рейтинг: 0 / 0
Работа с ADODataSet в C++Builder
    #32685447
Philin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
SELECT id_, rtrim(FullTitle) FullTitle INTO #LR FROM ListRoads 
SELECT * FROM #LR
так чтоли?
...
Рейтинг: 0 / 0
Работа с ADODataSet в C++Builder
    #32692883
Philin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все же у меня остается надежда найти решение, ведь билдер иногда позволяет менять поля, которые менять никак нельзя.
Пример:
В базе данных ключевое поле счетчик (identity). Если получить запросом это поле - его все же можно менять, после изменения свойства ReadOnly Field'а.

Может кто-нибудь все-таки нашел решение и для вычислимых полей (полученных использованием каких-либо функций в запросе)?
...
Рейтинг: 0 / 0
Работа с ADODataSet в C++Builder
    #32693177
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделать , просто запросом

update table set field = xxx where id = xxx


 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
Работа с ADODataSet в C++Builder
    #32693232
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Philin

делайте так как делали
Код: plaintext
data->Recordset->Fields->Item[ 1 ]->Attributes = 0x4;

CheckSafecallResult как обойти вам уже подсказали


PS> BCB тут не причем - это работа ADO
...
Рейтинг: 0 / 0
Работа с ADODataSet в C++Builder
    #32693261
Philin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to funikovyuri

забыл сказать, что на

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
TADODataSet* data = new TADODataSet(NULL);
data->LockType = ltBatchOptimistic;
data->Connection = ADOConnection1;
data->CommandText = "SELECT id_, rtrim(FullTitle) FullTitle FROM ListRoads";
data->Open();
data->Recordset->Fields->Item[ 1 ]->Attributes = 0x4;
data->Edit();
data->FieldByName("FullTitle")->AsString = "123";
data->Post();

выдает:
Field "FullTitle" can not be modified
...
Рейтинг: 0 / 0
Работа с ADODataSet в C++Builder
    #32727061
Philin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу еще раз обратить внимание на топик. Проблема не решена...
Наверняка у кого-нибудь были в точности такие же проблемы
...
Рейтинг: 0 / 0
Работа с ADODataSet в C++Builder
    #32727552
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ууу за это время можно было сменить всетаки ти
с char (XXX) на varchar(XXX)
как еще Blacл Zorro говорил , и не было бы проблем .



 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
Работа с ADODataSet в C++Builder
    #32729037
Philin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну...
я же говорил, что удаление пробелов, это просто как пример...
тогда так:
SELECT Field1+Field2 as SumFlds FROM ...
как мне изменять поле SumFlds?
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа с ADODataSet в C++Builder
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]